Android ReactNative java.lang.UnsatisfiedLinkError:可以找到要加载的DSO:libreactnativejni.so
我一直在尝试将ReactNative添加到我现有的Android应用程序中。 我按照这个链接的说明进行操作。 我可以添加它,但是一旦打开react本机活动,应用程序就会崩溃。 我已经开始使用服务器了
adb reverse tcp:8081 tcp:8081
并开始使用反应原生
react-native start
我得到了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.(JSCJavaScriptExecutor.java:19) at com.facebook.react.ReactInstanceManager.onJSBundleLoadedFromServer(ReactInstanceManager.java:413) at com.facebook.react.ReactInstanceManager.createReactContextInBackground(ReactInstanceManager.java:236)
我完全迷失了,因为我无法弄清楚这个问题的原因。
提前致谢。
这是由以下问题引起的(开放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位依赖项
希望这可以帮助!
这是我的问题
ndk { abiFilters 'armeabi-v7a', 'x86' }
这应该放在build.gradle defaultConfig部分