gpt4 book ai didi

android - 正在获取 "java.lang.UnsatisfiedLinkError: couldn' t 找到 DSO 以加载 : libhermes. 所以“错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:48 29 4
gpt4 key购买 nike

我正在将 React Native 项目从 react-native 版本 0.58.5 迁移到 0.60.4。

对于 Android 部分,我已经完成了提到的所有更改 here

我在我的应用 build.gradle 文件中禁用了 Hermes:

project.ext.react = [
entryFile: "index.js",
enableHermes: false, // clean and rebuild if changing
]
...
def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false);
...
dependencies {
...

if (enableHermes) {
println 'Hermes is enabled'
def hermesPath = "../../node_modules/hermesvm/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
println 'Hermes is disabled'
implementation jscFlavor
}
}
...

我可以在构建时看到 Hermes is disabled 打印。这正是我想要的。

当使用 react-native run-android 启动 Android 应用程序时,我在启动时遇到以下崩溃:

FATAL EXCEPTION: create_react_context
E Process: com.reactnativetestapp, PID: 21038
E java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
E at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:738)
E at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:591)
E at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:529)
E at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
E at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
E at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:27)
E at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:949)
E at java.lang.Thread.run(Thread.java:764)

经过一些研究后,我发现这个崩溃发生在想要启用 Hermes 并且 gradle 配置错误的人身上:[0.60.3] App crash on startup when enabling Hermes (enableHermes: true)

为什么我在禁用 Hermes 时遇到此崩溃?

请注意,当将 enableHermes 设置为 true 时,不会发生崩溃。

最佳答案

在完成本文中的这些步骤后,我通过一个微小的改变解决了这个问题

https://github.com/facebook/react-native/issues/25415

然后确保将这个 jsc-android block 添加到你的 android/build.gradle 中:

allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}

//THIS ONE
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}

google()
jcenter()
}
}

关于android - 正在获取 "java.lang.UnsatisfiedLinkError: couldn' t 找到 DSO 以加载 : libhermes. 所以“错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113794/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com