diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7b3c9f0..ab8071b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -25,8 +25,8 @@ android { applicationId = "es.chiteroman.playintegrityfix" minSdk = 26 targetSdk = 35 - versionCode = 18300 - versionName = "v18.3" + versionCode = 18201 + versionName = "v18.2.1-EXPERIMENTAL" multiDexEnabled = false externalNativeBuild { @@ -37,19 +37,8 @@ android { ) arguments( - "-DCMAKE_BUILD_TYPE=Release", - "-DANDROID_STL=none", - "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", - "-DANDROID_ALLOW_UNDEFINED_SYMBOLS=ON", - "-DCMAKE_CXX_STANDARD=23", - "-DCMAKE_C_STANDARD=23", - "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON", - "-DCMAKE_VISIBILITY_INLINES_HIDDEN=ON", - "-DCMAKE_CXX_VISIBILITY_PRESET=hidden", - "-DCMAKE_C_VISIBILITY_PRESET=hidden", - "-DCMAKE_ANDROID_EXCEPTIONS=OFF", - "-DCMAKE_ANDROID_RTTI=OFF", - "-DANDROID_CPP_FEATURES='no-rtti no-exceptions'" + "-DCMAKE_BUILD_TYPE=MinSizeRel", + "-DANDROID_STL=none" ) cFlags( diff --git a/app/src/main/cpp/inject.cpp b/app/src/main/cpp/inject.cpp index 2a6ca87..fd29a63 100644 --- a/app/src/main/cpp/inject.cpp +++ b/app/src/main/cpp/inject.cpp @@ -241,7 +241,7 @@ void injectDex() { extern "C" { [[gnu::visibility("default"), maybe_unused]] -void init(const char *dir, JavaVM *jvm, jint jni_version) { +void init(const char *dir, JavaVM *jvm) { if (dir) { LOGD("[INJECT] GMS dir: %s", dir); @@ -251,18 +251,18 @@ void init(const char *dir, JavaVM *jvm, jint jni_version) { } if (jvm) { - auto result = jvm->GetEnv(reinterpret_cast(&env), jni_version); - if (result != JNI_OK) { - LOGE("[INJECT] GetEnv error: %d", result); - return; + auto result = jvm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6); + LOGD("[INJECT] JVM: %d", result); + if (result == JNI_EDETACHED) { + result = jvm->AttachCurrentThread(&env, nullptr); + LOGD("[INJECT] (JNI_EDETACHED) JVM: %d", result); } } else { LOGE("[INJECT] jvm is null!"); - return; } if (env) { - LOGD("[INJECT] JNIEnv version: %x", env->GetVersion()); + LOGD("[INJECT] JNIEnv: %d", env->GetVersion()); } else { LOGE("[INJECT] env is null!"); return; diff --git a/app/src/main/cpp/main.cpp b/app/src/main/cpp/main.cpp index c73a852..681d03f 100644 --- a/app/src/main/cpp/main.cpp +++ b/app/src/main/cpp/main.cpp @@ -263,7 +263,7 @@ public: dlerror(); - typedef void (*init_t)(const char *, JavaVM *, jint); + typedef void (*init_t)(const char *, JavaVM *); auto init_func = reinterpret_cast(dlsym(handle, "init")); const char *error = dlerror(); @@ -281,7 +281,7 @@ public: return; } - init_func(gmsDir.c_str(), jvm, env->GetVersion()); + init_func(gmsDir.c_str(), jvm); } void preServerSpecialize(ServerSpecializeArgs *args) override { diff --git a/module/module.prop b/module/module.prop index 629d0e6..5bef5c5 100644 --- a/module/module.prop +++ b/module/module.prop @@ -1,7 +1,7 @@ id=playintegrityfix name=Play Integrity Fix -version=v18.3 -versionCode=18300 +version=v18.2.1-EXPERIMENTAL +versionCode=18201 author=chiteroman description=Universal modular fix for Play Integrity (and SafetyNet) on devices running Android 8-15 updateJson=https://raw.githubusercontent.com/chiteroman/PlayIntegrityFix/main/update.json