Apk在将Realm添加到React Native后崩溃。
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)
有没有解决此问题的方法?
问题原因: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的链接来正确升级项目。