React-Native: java.lang.UnsatisfiedLinkError: 找不到要加载的DSO:libhermes.so

10 浏览
0 Comments

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.(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,但不幸的是,他们都没有对我起作用。请提供解决方法。

admin 更改状态以发布 2023年5月25日
0
0 Comments

我刚刚清理了Android的构建文件夹,之后它就正常工作了。希望这能帮上你,伙计。

cd android
./gradlew clean 

0
0 Comments

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

0