如何解决React Native版本应用因致命异常而崩溃: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中打开了日志猫,这是打印出来的内容:
--------- 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
中有一个android/app/
。我不知道还有什么可能导致错误!
谢谢您的回答!
解决方法
这是由启用Hermes
引起的。
couldn't find DSO to load: libhermes.so
1-始终在构建应用之前清理gradle构建。
2-如果您使用自定义的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
}
,
如果您有其他构建变体(例如暂存),就像我所做的那样,您需要将 bundleInStaging: true
(或等效的)添加到 project.ext.react
到您的应用级 build.gradle
。>
See this full answer。对我来说,这个简单的事情花了我 6 个多小时才弄明白,不是开玩笑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。