JNI_OnLoad 返回错误的 JNI 版本,导致 Android 11 崩溃。

5

我在我的项目中使用了dexprotector 9.0.19,并且它在所有Android版本中都可以完美运行,除了Android 11。我的团队正在与另一个使用dexprotector的应用程序一起工作,他们的设置完全相同,但只在我的项目中崩溃。

尝试运行应用程序时,它立即崩溃,我能够获取到的所有日志如下:

2021年1月25日17:30:33.025 11812-11812/com.interfacom.toolkit E/AndroidRuntime: 致命异常:主线程 进程名:com.interfacom.toolkit,PID:11812 java.lang.RuntimeException: 无法实例化应用程序com.interfacom.toolkit.ProtectedAndroidApplication: com.interfacom.toolkit.MessageGuardException_QmFkIEpOSSB2ZXJzaW9uIHJldHVybmVkIGZyb20gSk5JX09uTG9hZCBpbiAiL2RhdGEvdXNlci8wL2NvbS5pbnRlcmZhY29tLnRvb2xraXQvYXBwX291dGRleC9saWJkZXhwcm90ZWN0b3IudWo2b3V0LjExODEyLnNvIjogLTEzMTk: 在"/data/user/0/com.interfacom.toolkit/app_outdex/libdexprotector.uj6out.11812.so"中的JNI_OnLoad返回错误的JNI版本号:-1319(RmluZ2VycHJpbnQgMjAxODA5MjQgWysuLisuLl0geDg2Ong4NiAyOS8yLjEuMC8tIGdvb2dsZS9zZGtfZ3Bob25lX3g4Ni9nZW5lcmljX3g4Nl9hcm06MTAvUlBQNC4yMDA0MDkuMDE1LzY0NTUzMTE6dXNlci9yZWxlYXNlLWtleXM=) at android.app.LoadedApk.makeApplication(LoadedApk.java:1216) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6533) at android.app.ActivityThread.access$1300(ActivityThread.java:231) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7478) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941) 造成原因:com.interfacom.toolkit.MessageGuardException_QmFkIEpOSSB2ZXJzaW9uIHJldHVybmVkIGZyb20gSk5JX09uTG9hZCBpbiAiL2RhdGEvdXNlci8wL2NvbS5pbnRlcmZhY29tLnRvb2xraXQvYXBwX291dGRleC9saWJkZXhwcm90ZWN0b3IudWo2b3V0LjExODEyLnNvIjogLTEzMTk: 在"/data/user/0/com.interfacom.toolkit/app_outdex/libdexprotector.uj6out.11812.so"中的JNI_OnLoad返回错误的JNI版本号:-1319

非常感谢任何帮助!


1
我在Android 12上遇到了同样的问题。你找到解决方案了吗? - Seyyed
我在使用Android 12时遇到了同样的问题,有人能够解决吗? - Islam Assem
2个回答

1
首先,我们将在构建文件中启用收缩。找到位于 /android/app/ 文件夹内的 build.gradle 文件,并添加粗体行:
`android {`

...

buildTypes {

release {
    
    signingConfig signingConfigs.debug     
    //add everything below
    useProguard true

    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

}

} }

接下来创建 /android/app/proguard-rules.pro 文件并在其中插入以下内容:

-keep class com.arthenica.mobileffmpeg.Config {
native ;
void log(long, int, byte[]);
void statistics(long, int, float, float, long , int, double, double);
}

-keep class com.arthenica.mobileffmpeg.AbiDetect {
native ;
}

1

前往编辑配置 -> 调试器 -> 调试类型 -> 仅 Java -> 应用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接