Cri*_*fer 9 java android realm kotlin
我向商店发送了一个新版本,当我打开它时,它崩溃了。在调试模式下没有发生,但在发布构建类型中我可以重现它。
例外的是:
Fatal Exception: java.lang.RuntimeException: Unable to create application asd.esa.persistent.ESApp: com.getkeepsafe.relinker.MissingLibraryException: librealm-jni.so
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6123)
at android.app.ActivityThread.access$1200(ActivityThread.java:213)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6923)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)
Run Code Online (Sandbox Code Playgroud)
注意:如果我在发布的 buildTypes 上使用 proguard,它会再次出现
\n\n无法\xe2\x80\x99t 加载librealm-jni.so\n如果您的应用程序使用不\xe2\x80\x99t 附带的支持 64 位体系结构的其他本机库,Android 将无法加载 Realm\xe2\x80\x99s librealm-jni.so ARM64 设备上的文件。这是因为 Android 无法同时加载 32 位和 64 位本机库。最好的解决方案是让所有库提供相同的受支持 ABI 集,但有时如果您使用的是第三方库,这可能不可行。请参阅 VLC 和领域库冲突。
此问题的解决方法是通过将以下代码添加到 app\xe2\x80\x99s build.gradle 中,从 APK 文件中排除 Realm\xe2\x80\x99s ARM64 库。您可以参阅在 Android 中混合 32 位和 64 位依赖项以获取更多信息。
\nandroid {\n //...\n packagingOptions {\n exclude "lib/arm64-v8a/librealm-jni.so"\n }\n //...\n}\nRun Code Online (Sandbox Code Playgroud)\n此外,Android Gradle Plugin 1.4.0 beta 存在一个错误,导致它无法正确打包 jar 文件中包含的 .so 文件(请参阅 Realm Java 问题 1421)。要解决此问题,您可以恢复到 Android Gradle Plugin 1.3.0 或使用 Android Gradle Plugin 1.5.0+。
\n我们知道许多第三方库、框架和管理应用程序尚不支持 64 位:
\n平行空间 \xe2\x80\x93,但您可以建议用户安装 64 位版本。\nRenderScript\xe2\x80\x94NDK r14 可能会支持 64 位。\nUnity3d。
\n| 归档时间: |
|
| 查看次数: |
5912 次 |
| 最近记录: |