在三星Galaxy S6 edge上同时添加Realm和SQLCipher导致应用程序崩溃

3

当我在现有SQLCipher项目中添加Realm时,我的应用程序在三星Galaxy S6 edge上崩溃,但在三星Note 3上运行正常。

崩溃日志:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/co.xyz.pqr.Alpha-1/base.apk"],nativeLibraryDirectories=[/data/app/co.xyz.pqr.Alpha-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libstlport_shared.so"
                                                                               at java.lang.Runtime.loadLibrary(Runtime.java:366)
                                                                               at java.lang.System.loadLibrary(System.java:988)
                                                                               at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:173)
                                                                               at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:169)

听起来你正在混合使用32位和64位ARM。Realm支持两种,但如果另一个库不支持64位ARM,你很容易就会遇到这样的崩溃日志。请查看https://realm.io/docs/java/latest/#couldnt-load-librealm-jniso - geisshirt
值得一试的是Relinker,用于加载本地库。 - EpicPandaForce
1个回答

2

我遇到了完全相同的问题,在阅读了@geisshirt的评论后,我在我的应用gradle文件中加入了以下内容,以强制realm仅使用32位依赖项。

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

更多信息可以在https://realm.io/docs/java/latest/#couldnt-load-librealm-jniso获取。


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