Android ReactNative java.lang.UnsatisfiedLinkError:可以找到要加载的DSO:libreactnativejni.so

Anu*_*Anu 17 java android react-native

我一直在尝试将ReactNative添加到我现有的Android应用程序中.我按照链接的说明进行操作.我可以添加它,但是一旦打开react本机活动,应用程序就会崩溃.我已经启动了服务器使用

adb reverse tcp:8081 tcp:8081
Run Code Online (Sandbox Code Playgroud)

并开始使用反应原生

react-native start
Run Code Online (Sandbox Code Playgroud)

我得到了js文件正在加载的对话框.但最终以崩溃告终.以下是在logcat中打印的错误:

java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libreactnativejni.so
    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:213)
    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:178)
    at com.facebook.react.bridge.JSCJavaScriptExecutor.<clinit>(JSCJavaScriptExecutor.java:19)
    at com.facebook.react.ReactInstanceManager.onJSBundleLoadedFromServer(ReactInstanceManager.java:413)
    at com.facebook.react.ReactInstanceManager.createReactContextInBackground(ReactInstanceManager.java:236)
Run Code Online (Sandbox Code Playgroud)

我完全迷失了,因为我无法弄清楚这个问题的原因.

提前致谢.

Ahm*_*ani 30

实际上在我的情况下,这些步骤有效:

  1. 从设备上卸载应用程序
  2. 关闭 Metro Bundler
  3. ./gradlew clean在android目录上运行
  4. react-native run-android

希望能帮到你。


Ari*_*ael 20

这解决了我的问题:

   ndk {
        abiFilters 'armeabi-v7a', 'x86'
    }
Run Code Online (Sandbox Code Playgroud)

这应该放在build.gradledefaultConfig部分.


Arn*_*ver 11

这是由以下问题引起的(开放2年)https://github.com/facebook/react-native/issues/2814

从问题:

Android上的React Native不提供64位版本的本libreactnativejni.so机库,这可能会导致64位设备出现兼容性问题.我试图将React Native与我正在开发的大型现有应用程序集成在一起.

来自Facebook的反应:

" 感谢您的报告!是的,我们不提供64位版本的本机代码,系统应始终回退到32位. "

和:

" 大多数Android项目使用许多第三方库,任何包含本机64位代码的文件都会导致React Native失败. "

以下SO答案在64位android上使用32位jni库解释了回退到32位库以及你无法混合的事实.因此,如果找到64位,则所有都应该是64位

我建议阅读Github问题#2814.提出了多种修复方法,但这取决于您的具体情况.

发行人还撰写了一篇关于它的博客:在Android中混合使用32位和64位依赖项

希望这可以帮助!

  • 这是如何解决的? (2认同)

小智 5

对我来说,有效的是清理项目构建并再次构建它。 在此处输入图片说明