I have been trying to add ReactNative to my existing android application. I followed the instructions from this link. I could add it but the app gets crashed once I open the react native activity. I have started server using
adb reverse tcp:8081 tcp:8081
and started react-native using
react-native start
I get a dialogue that the js files are loading. But finally end up with a crash. Following is the error that is being printed in 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)
I am completely lost as I am unable to figure out the cause for this issue.
Thanks in advance.
This is caused by the following issue (open for 2 years) https://github.com/facebook/react-native/issues/2814
From the issue:
React Native on Android doesn't provide a 64-bit version of the
libreactnativejni.so
native library, which can cause compatibility issues on 64-bit devices. I ran into this while attempting to integrate React Native with a large existing application I'm developing.
Reaction from Facebook:
"Thanks for reporting! Yes we don't provide 64-bit version of the native code and the system should always fall back to 32-bit."
And:
"Most Android projects use a number of 3rd-party libraries, and any that include native 64-bit code will cause React Native to fail."
The following SO answer Use 32-bit jni libraries on 64-bit android explains fallback to 32-bit libraries and the fact you cannot mix. So if 64-bit is found, all should be 64-bit
I suggest reading along the Github issue #2814. There are multiple fixes proposed, but it depends on your situation what works.
The issuer has also written a blog about it: Mixing 32- and 64-bit Dependencies in Android
Hope this helps!