com.getkeepsafe.relinker.MissingLibraryException: librealm-jni.so - PullRequest
0 голосов
/ 28 марта 2020

Я отправил новую версию в магазин, и когда я открывал, она вылетала. В режиме отладки не получилось, но в выпусках buildtype я могу воспроизвести его.

Исключением было:

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)

1 Ответ

0 голосов
/ 28 марта 2020

Примечание: это появляется снова, если я использую proguard в моем релизе buildTypes

Просто я пишу, почему Realm сказал:

Couldn ' t загрузить «librealm-jni.so» Если ваше приложение использует другие собственные библиотеки, которые не поставляются с поддержкой 64-разрядных архитектур, Android не сможет загрузить файл Realreal librealm-jni.so на устройства ARM64. Это связано с тем, что Android не может одновременно загружать 32-битные и 64-битные собственные библиотеки. Лучшее решение - все библиотеки предоставляют один и тот же набор поддерживаемых ABI, но иногда это может оказаться невозможным, если вы используете стороннюю библиотеку. См. VL C и конфликты библиотеки Realm.

Обходной путь для решения этой проблемы - исключить библиотеку Realm ARM64 из файла APK, добавив следующий код в build.gradle приложения. Вы можете обратиться к разделу «Смешивание 32- и 64-битных зависимостей» в Android для получения дополнительной информации.

android {
    //...
    packagingOptions {
        exclude "lib/arm64-v8a/librealm-jni.so"
    }
    //...
}

Также есть ошибка с бета-версиями Android Gradle Plugin 1.4.0, которая приводит к неправильному использованию упаковать .so файлы, включенные в jar-файлы (см. Realm Java выпуск 1421). Чтобы решить эту проблему, вы можете вернуться к Android Gradle Plugin 1.3.0 или использовать Android Gradle Plugin 1.5.0 +.

Нам известен ряд сторонних библиотек, сред и приложений управления. которые еще не поддерживают 64-битную версию:

Parallel Space - но вы можете посоветовать своим пользователям установить 64-битную версию. RenderScript - NDK r14, вероятно, будет поддерживать 64 бит. Unity3d.

...