Apk在将Realm添加到React Native后崩溃。

18 浏览
0 Comments

Apk在将Realm添加到React Native后崩溃。

先行谢过。

我尝试在React Native上安装Realm 3.3.0,在生成构建后,当打开应用程序时它会崩溃。我使用的版本是:

"react": "16.8.6",

"react-native": "0.60.5"

我的gradle配置如下:

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 21
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:3.4.1")
        // 注意:不要在此处放置应用程序的依赖;它们属于各个模块的build.gradle文件中
    }
}

我记录了日志,得到了以下内容:

崩溃开始
2019-10-24 18:07:16.929 11412-11498/com.xxxxx.xxxxx E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.xxxx.xxxxx, PID: 11412
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: librealmreact.so caused by: dlopen failed: library "libjsc.so" not found
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:738)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:591)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:529)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
at io.realm.react.RealmReactModule.(RealmReactModule.java:56)
at io.realm.react.RealmReactPackage.createNativeModules(RealmReactPackage.java:31)
at com.facebook.react.ReactPackageHelper.getNativeModuleIterator(ReactPackageHelper.java:42)
at com.facebook.react.NativeModuleRegistryBuilder.processPackage(NativeModuleRegistryBuilder.java:41)
at com.facebook.react.ReactInstanceManager.processPackage(ReactInstanceManager.java:1215)
at com.facebook.react.ReactInstanceManager.processPackages(ReactInstanceManager.java:1185)
at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1123)
at com.facebook.react.ReactInstanceManager.access$900(ReactInstanceManager.java:124)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:948)
at java.lang.Thread.run(Thread.java:764)

有没有解决此问题的方法?

0
0 Comments

问题原因:realm库还不支持hermes引擎,需要将enableHermes设置为false。

解决方法:

1. 在android/app/build.gradle文件中将enableHermes设置为false。

project.ext.react = [
    entryFile: "index.js",
    enableHermes: false,
]

2. 如果你使用的是0.60.0或更高版本,则安装realm的步骤如下:

- 运行命令npm i realm安装realm库。

- 运行命令npx react-native link realm手动链接realm库。

- 运行命令npx jetify进行依赖转换。

3. 如果在将enableHermes设置为false后出现java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so错误,可能是因为你的项目是从0.5x.y版本升级到0.6x.y版本的。可以参考这个stackoverflow的链接来正确升级项目。

0