Java.lang.UnsatisfiedLinkError: 找不到要加载的DSO:libfbjni.so 结果为0。

18
我创建了一个新的React Native项目,并将我的Android原生模块添加为依赖项。使用官方文档https://reactnative.dev/docs/native-modules-setup。当我运行时,我遇到了以下堆栈跟踪错误:
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libfbjni.so result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:825)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:673)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:611)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:559)
        at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary(NativeLoaderToSoLoaderDelegate.java:25)
        at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:44)
        at com.facebook.jni.HybridData.<clinit>(HybridData.java:34)
        at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:25) 

以下是我的package.json文件。
{
  "name": "albums",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "axios": "^0.19.2",
    "react": "16.11.0",
    "react-native": "0.62.0-rc.5",
    "react-native-my-fancy-library": "../react-native-my-fancy-library/"
  },
  "devDependencies": {
    "@babel/core": "^7.9.0",
    "@babel/runtime": "^7.9.2",
    "@react-native-community/eslint-config": "^1.0.0",
    "babel-jest": "^25.3.0",
    "eslint": "^6.8.0",
    "jest": "^25.3.0",
    "metro-react-native-babel-preset": "^0.59.0",
    "react-test-renderer": "16.11.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

我已经尝试过以下方法: https://dev59.com/_Lroa4cB1Zd3GeqPprZ0#61695629 https://dev59.com/ZlMI5IYBdhLWcg3wFXWg#57155606 https://github.com/facebook/react-native/issues/25415 但是这些都没有解决我的问题。
我是一个react-native的初学者,所以我不知道还需要上传哪些详细文件。如果您需要其他文件,请告诉我。

如果您删除 react-native-my-fancy-library,这个问题是否会消失? - Tuan Luong
@TuanLuong 不,我尝试了移除库文件但仍然得到错误。 - Mayur Gajra
你能否尝试创建一个全新的项目来查看它是否可行? - Tuan Luong
尝试这个: 重置缓存:react-native start --reset-cache 清理 Android:cd android -> ./gradlew clean - Naveen Tiwari
3个回答

47

对我来说,以下两个方法解决了问题(我认为是后者解决的):

  1. 重置缓存:react-native start --reset-cache
  2. 清理Android:cd android -> ./gradlew clean

1
对于任何升级到RN 0.64.2的人来说,这个解决方案运行顺畅。 - C-lio Garcia

3

经过以下三个步骤,我已解决此问题:

  1. 将最低SDK版本提高至23。
  2. 在gradle.properties中添加以下行:android.bundle.enableUncompressedNativeLibs=false;
  3. 在清单文件中添加以下行:android:extractNativeLibs=true;

在build.gradle文件中设置jniLibs { useLegacyPackaging true }可能足以打包压缩的本地库 - 请参见https://developer.android.com/studio/releases/gradle-plugin?buildsystem=ndk-build#compress-native-libs-dsl - Klemens Zleptnig

2
我有同样的问题,通过在Android Studio中将build.gradle从版本3.5.2更新到版本3.5.3解决了它。

enter image description here

这张图片展示了在Android文件夹中的build.gradle文件中依赖项的classpath更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接