react-native - React Native 发布应用程序崩溃并出现 FATAL EXCEPTION: create_react_context
问题描述
我为我的发布应用程序创建签名,将它们放入内部android/app/
并android/app/build.gradle
执行以下操作:
signingConfigs {
release {
keyAlias 'my-key-alias'
keyPassword 'mypassword'
storeFile file('mykeystore.keystore')
storePassword 'mypassword'
}
}
在 buildTypes 内部:
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
firebaseCrashlytics {
nativeSymbolUploadEnabled true
}
}
}
当我运行react-native run-android --variant=release
该应用程序时,我的模拟器上已成功安装,但是当我打开它时,它崩溃了!我在 Android Studio 中打开了 logcat,这是打印出来的:
--------- beginning of crash
2020-08-12 18:53:51.069 5909-5957/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.encarti.mobile.worker, PID: 5909
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)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:997)
at java.lang.Thread.run(Thread.java:923)
有些东西告诉我它与图书馆或其他东西有关。我react-native-config
用来处理我的环境变量,我也在使用 Firebase,所以我有一个google-services.json
inside android/app/
。我不知道还有什么可能导致错误!
提前感谢您的回答!
解决方案
这是由启用引起的Hermes
。
couldn't find DSO to load: libhermes.so
1 - 始终在构建应用程序之前清理您的 gradle 构建。
2 - 如果您使用自定义构建变体 ex stagingRelease
,请不要忘记在您的/app/build.gradle
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
stagingReleaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
推荐阅读
- python - 如何将 sqlite db 转储到 SQL Server 中?
- javascript - 无法将样式应用于 javascript 中动态创建的元素
- python - 没有使用烧瓶 send_from_directory 的下载对话框窗口
- html - Html Css删除图像和p之间的距离
- python - 如何随机化密码生成器的字符顺序
- python - 具有扩展属性的深色主题
- laravel - 为 Laravel 模型添加属性
- git - 如何在 Git Bash 中初始化 Composer 项目?
- ruby-on-rails - 如何让引导组件在使用rails的ajax之后打开?
- docker - docker工作目录和singularity的区别