在Android项目中使用Realm仅支持armeabi

时间:2017-02-23 09:44:17

标签: android android-ndk realm

我正在尝试使用Realm。我在app start上设置了build.gradle并调用了Realm.init(context)。

问题是,应用程序在启动时崩溃。

这是日志:

java.lang.RuntimeException: Unable to create application com.test.android com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi/librealm-jni.so
                                                                         at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5406)
                                                                         at android.app.ActivityThread.-wrap2(ActivityThread.java)
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                         at android.os.Looper.loop(Looper.java:154)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                      Caused by: com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi/librealm-jni.so
                                                                         at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:85)
                                                                         at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)
                                                                         at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
                                                                         at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
                                                                         at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:57)
                                                                         at io.realm.internal.RealmCore.loadLibrary(RealmCore.java:59)
                                                                         at io.realm.Realm.init(Realm.java:187)

该项目使用另一个仅支持armeabi的库。这就是为什么我添加了一个abiFilter

ndk { abiFilters "armeabi" }

在此处添加其他值将导致该库崩溃。

我有没有办法只使用Realm作为“armeabi”?

3 个答案:

答案 0 :(得分:1)

我认为您的问题是,自从Realm 2.0,armeabi支持被删除,只有armeabi-v7有效(阅读change log: armeabi is not supported anymore)。

存在问题tracking it here

但是,您仍然可以使用Realm 1.2.0,它也可以使用。您可以参考this guide for the breaking changes in 2.x so that you can revert that behavior,否则它的工作方式完全相同。

答案 1 :(得分:0)

已解决。

仅将gradle类路径更新为类路径“ io.realm:realm-gradle-plugin:5.11.0”

 dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath 'com.google.gms:google-services:4.0.1'
    classpath "io.realm:realm-gradle-plugin:5.11.0"

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files`enter code here`


}

答案 2 :(得分:0)

我也遇到了同样的问题。现在,只需将此领域版本添加到项目级别gradle classpath 'io.realm:realm-gradle-plugin:6.0.0'

中即可解决此问题。

link here