android - React-Native:java.lang.UnsatisfiedLinkError:找不到要加载的 DSO:libhermes.so
问题描述
我刚刚更新了我的项目以使用 react-native 版本0.60.2。但是,当我尝试在 Android 设备上运行应用程序时,它会在启动屏幕后崩溃。我收到以下错误日志:
E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.tjspeed, PID: 3909
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:738)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:591)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:529)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:27)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:949)
at java.lang.Thread.run(Thread.java:760)
这里提供的建议很少:https ://github.com/facebook/react-native/issues/25601但不幸的是,它们都不适合我。请提出解决方法。
解决方案
从 0.59.8 升级到 0.60.4 后我遇到了同样的问题
确保在app/build.gradle中添加了所有这些行,尤其是依赖项部分,因为这确保你拥有 JSC 二进制文件
project.ext.react = [
...
// your index js if not default, other settings
// Hermes JSC ?
enableHermes: false,
...
]
def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false);
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
if (enableHermes) {
// For RN 0.60.x
def hermesPath = "../../node_modules/hermesvm/android/"
// --- OR ----
// for RN 0.61+
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
编辑
此外,请确保 Hermes Maven 存储库位于您的根build.gradle 中
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
推荐阅读
- r - 如何在 wordpress 网站中显示闪亮代理应用程序
- c - 简单的 OpenMP 循环在缩放时非常慢
- r - 在 R 数据框列中随机分布一个向量
- javascript - electron.js 标题栏问题:Uncaught ReferenceError: require is not defined at titleBarStuff.js:1
- html - 递归创建不同的id,用于jquery转换成html表
- c++ - 使用带有 unique_ptr 的派生类方法作为基类
- c++ - 如何使用类模板参数来更改参数调用和函数签名?
- azure - 了解 MAG 和 MSA 数据转储中的文档类型
- blazor - 保护 Blazor webassembly 源
- api - 没有方法签名:io.restassured.internal.ContentParser.parse()