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 但不幸的是,它们都不适合我。请提出解决方法。

原文由 V-Xtreme 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

从 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")
    }

原文由 Vinzzz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题