我刚刚创建了一个全新的react-native项目(0.62版本)。运行新的调试构建可以正常工作。
我按照文档设置签名:https://reactnative.dev/docs/signed-apk-android,并确保我正在使用以下ABIs:"armeabi-v7a", "x86", "arm64-v8a", "x86_64"
。
为了测试发布版本的构建,我运行以下命令:npx react-native run-android --variant release
问题
在运行上述命令后,应用程序尝试启动并立即由于以下堆栈跟踪而崩溃:
--------- beginning of crash
2020-05-01 09:34:26.707 19961-19976/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: <BUNDLE_ID>, PID: 19961
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
果然,当我打开APK时,在/lib/x86_64
中没有libhermes.so(我目前正在Pixel 2 API 28上进行测试)。
我不确定为什么一开始没有启用Hermes,但为了确保,我在我的build.gradle中设置了以下内容:
project.ext.react = [
enableHermes: true, // clean and rebuild if changing
]
现在在清理和构建后,我确实看到了 libhermes.so
。不幸的是,我仍然看到完全相同的问题。但我可以看到该文件存在。
此时,我遇到了麻烦。我已经按照一些报告相同问题的线程进行了操作(例如这个)。听起来,soloader 的一个潜在问题已经得到修复,并且正在与最新版本的 react native 一起使用。尽管我正在使用最新版本的 RN,但我仍然会遇到此问题。
问题
由于不太熟悉 Android 开发,我应采取哪些步骤进一步调查此问题?