无法找到" librealm-jni.so"

时间:2015-11-16 11:33:09

标签: java android gradle realm

我的应用程序与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"

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

  1. 转到Realm网站
  2. 点击常见问题解答
  3. 搜索“无法加载librealm-jni.so”
  4. 您将看到更新信息

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,则会再次出现