我的应用程序与realm
一起正常运行。在另一个项目中,我有一个有效的GCM(推送通知)应用程序。但我需要的是在我的一个应用程序中工作的东西,所以将代码合并为一个我开始得到以下异常。
我找到了一些针对同一问题的帖子,例如this,更新了gradle到gradle-2.8
,但到目前为止还没有运气。
非常感谢任何帮助解决此问题。
E / AndroidRuntime:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [DexPathList [[zip文件 #&34; /data/app/euxxxx-1/base.apk"],nativeLibraryDirectories = [/供应商/ lib中, / system / lib]]]无法找到" librealm-jni.so"
答案 0 :(得分:2)
答案 1 :(得分:1)
TDLR;
在Realm文档中,您可以找到以下内容:
无法加载“ librealm-jni.so” 如果您的应用使用了其他不支持64位体系结构的本机库,则Android将无法在ARM64设备上加载Realm的librealm-jni.so文件。这是因为Android无法同时加载32位和64位本机库。最好的解决方案是让所有库都提供相同的一组受支持的ABI,但是有时,如果您使用的是第三方库,则可能不可行。请参阅VLC和领域库冲突。
此问题的解决方法是,通过将以下代码添加到应用的build.gradle中,将Realm的ARM64库从APK文件中排除。有关更多信息,请参阅在Android中混合使用32位和64位依赖项。
android {
//...
packagingOptions {
exclude "lib/arm64-v8a/librealm-jni.so"
}
//...
}
此外,Android Gradle Plugin 1.4.0 beta中存在一个错误,导致该错误地打包了jar文件中包含的.so文件(请参阅Realm Java问题1421)。要解决此问题,您可以还原到Android Gradle插件1.3.0或使用Android Gradle插件1.5.0 +。
我们知道许多尚不支持64位的第三方库,框架和管理应用程序:
Parallel Space-但您可以建议用户安装64位版本。 RenderScript-NDK r14可能支持64位。 Unity3d。
注意:您好,如果我在发布的buildTypes上使用proguard,则会再次出现