我一直在用 React-Native 构建一个应用程序。它最初是一个 0.60 的项目,在开发过程中我已经对其进行了多次升级,而不是在 0.63.4 上。
我注意到,在 Android 上运行发布版本时,应用程序感觉非常缓慢。感觉就像它正在吃掉手机的所有内存。当我在 Android Studio 中运行它并附加一个分析器时,一切似乎都很正常(+- 15% CPU 使用率,128mb 内存使用率)。
我尝试将 Hermes 添加到我的应用程序中,看看它是否会产生任何影响,但是一旦我将enableHermes
参数设置为 true、clean & build,我的应用程序会在启动后立即崩溃且没有任何错误消息(在成功构建后)。
然后我去了 React-Native 的文档,那里有一个警告说每个 Hermes 版本都针对一个特定的 RN 版本。好吧,我想。React 0.63.x 有 Hermes 版本 0.5.3。每当我去我的 yarn.lock 和 sethermes-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)
这表明加载我在我的应用程序中使用的领域依赖项有问题?当我再次将 enableHermes 设置回 false 时,我没有收到此消息,并且一切似乎都运行良好(但性能很差)。
有没有人在使用 Hermes 时无法加载库的经验?
任何指导将不胜感激。