我一直在用 React-Native 构建一个应用程序。它最初是一个 0.60 项目,在开发过程中我对其进行了多次升级,而不是 0.63.4。
我注意到,在 Android 上运行发布版本时,应用感觉非常慢。感觉就像它正在吃掉手机的所有内存。当我在 Android Studio 中运行它并附加一个分析器时,一切似乎都很正常(+- 15% CPU 使用率,128mb 内存使用率)。
我尝试将 Hermes 添加到我的应用程序中以查看它是否会产生任何影响,但是一旦我将 enableHermes
参数设置为 true、clean & build,我的应用程序就会崩溃而没有任何错误消息(成功后build) 一启动。
然后我去了 React-Native 的文档,那里有一个警告说每个 Hermes 版本都针对特定的 RN 版本。好吧,我想。 React 0.63.x 有 Hermes 版本 0.5.3。每当我转到我的 yarn.lock 并设置 hermes-engine "0.5.3"
时,它都说找不到它并询问我想安装哪个版本。
我很困惑。
问题 什么版本的 Hermes 适合 React-Native 0.63.4,我如何适当添加它以防止我现在遇到的无错误消息崩溃?
更新 通过 Android Studio 运行我的应用程序时,我在运行日志中看到它在打开后和崩溃前给出了这条消息:
E/SoLoader: couldn't find DSO to load: librealmreact.so caused by: dlopen failed: library "libjsc.so" not found result: 0
E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.dartscores, PID: 14692
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: librealmreact.so caused by: dlopen failed: library "libjsc.so" not found result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:896)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:725)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:649)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:629)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
at io.realm.react.RealmReactModule.<clinit>(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:42)
at com.facebook.react.ReactInstanceManager.processPackage(ReactInstanceManager.java:1347)
at com.facebook.react.ReactInstanceManager.processPackages(ReactInstanceManager.java:1318)
at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1225)
at com.facebook.react.ReactInstanceManager.access$1100(ReactInstanceManager.java:131)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1016)
at java.lang.Thread.run(Thread.java:784)
这表示加载我在应用程序中使用的 Realm 依赖项时出现问题?当我再次将 enableHermes 设置回 false 时,我没有收到此消息,并且一切似乎都运行良好(但性能不佳)。
有没有人遇到过使用 Hermes 时无法加载库的情况?
任何指导将不胜感激。