You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
By clicking “Sign up for GitHub”, you agree to our
terms of service
and
privacy statement
. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
React native expection java.lang.UnsatisfiedLinkError: dlopen failed: “/data/data/{package}/lib-main/libgnustl_shared.so” is 32-bit instead of 64-bit
#11027
React native expection java.lang.UnsatisfiedLinkError: dlopen failed: “/data/data/{package}/lib-main/libgnustl_shared.so” is 32-bit instead of 64-bit
ishan-dhingra
opened this issue
Nov 19, 2016
· 16 comments
I am trying to integrate React Native with my existing Android App. I am getting the following exception when initializing React Native Screen:
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.snapdeal.main/lib-main/libgnustl_shared.so" is 32-bit instead of 64-bit
The App is only crashing on 64-bit devices.
As per my learning so far, I've found this issue reported on React Native Repo, but the solution suggested in this thread is not helpful as I am not using any external SO library in existing App.
Apart from above, I've realized another difference in library structure on the device where my App is installed. I am comparing structure of my App vs react native demo app.
React demo App
root@generic_x86_64:
/data/data/com.react.demo/lib
# ls
libfb.so
libfolly_json.so
libglog.so
libglog_init.so
libgnustl_shared.so
libicu_common.so
libimagepipeline.so
libjsc.so
libreactnativejni.so
libreactnativejnifb.so
root@generic_x86_64:/data/data/
com.react.demo
/lib-main # ls
dso_deps
dso_lock
dso_manifest
dso_state
My App
root@generic_x86_64:/data/data/
com.my.app
/lib-main # ls
dso_deps
dso_lock
dso_manifest
dso_state
libfb.so
libfolly_json.so
libglog.so
libglog_init.so
libgnustl_shared.so
libicu_common.so
libimagepipeline.so
libjsc.so
libreactnativejni.so
libreactnativejnifb.so
Sharing few more details about my project:
package.json
"name": "projectname",
"version": "1.0.0",
"description": "Native NPM",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "node node_modules/react-native/local-cli/cli.js start"
"repository": {
"type": "git",
"url": ""
"author": "Ishan D",
"license": "ISC",
"dependencies": {
"react": "^15.3.2",
"react-native": "^0.37.0",
"react-native-linear-gradient": "^1.5.15",
"rn-viewpager": "^1.1.3"
"devDependencies": {}
dependencies used in android native project
ext {
compileSdkVersion = 24
buildToolsVersion = '24.0.2'
minSdkVersion = 16
targetSdkVersion = 24
supportLibrariesVersion = '23.0.1'
playServiceVersion = '9.0.2'
dep = [
fabricPlugin : 'io.fabric',
fabricMavenUrl : 'https://maven.fabric.io/public',
fabricClasspath : 'io.fabric.tools:gradle:1.+',
playServiceClasspath : 'com.google.gms:google-services:1.3.0-beta1',
playServicePlugin : 'com.google.gms.google-services',
playServiceAppindexing: "com.google.android.gms:play-services-appindexing:$playServiceVersion",
playServiceLocation : "com.google.android.gms:play-services-location:$playServiceVersion",
playServiceVision : "com.google.android.gms:play-services-vision:$playServiceVersion",
playServiceAuth : "com.google.android.gms:play-services-auth:$playServiceVersion",
playServiceBase : "com.google.android.gms:play-services-base:$playServiceVersion",
playServiceIdentity : "com.google.android.gms:play-services-identity:$playServiceVersion",
playServiceAnalytics : "com.google.android.gms:play-services-analytics:$playServiceVersion",
playServiceGcm : "com.google.android.gms:play-services-gcm:$playServiceVersion",
underCouchClasspath : 'de.undercouch:gradle-download-task:2.0.0',
underCouchPluigin : 'de.undercouch.download',
crashlytics : 'com.crashlytics.sdk.android:crashlytics:2.4.0@aar',
moengage : 'com.moengage:moe-android-sdk:6.0.29',
supportV4 : "com.android.support:support-v4:$supportLibrariesVersion",
supportAppCompatV7 : "com.android.support:appcompat-v7:$supportLibrariesVersion",
supportCardviewV7 : "com.android.support:cardview-v7:$supportLibrariesVersion",
supportDesignV7 : "com.android.support:design:$supportLibrariesVersion",
okhttp : 'com.squareup.okhttp:okhttp:2.5.0',
junit : 'junit:junit:4.12',
mockito : 'org.mockito:mockito-core:1.10.19'
Any clue is appreciated.
React Native version: 0.37.
Platform: Android
Operating System: Android M +
When I run app (using 'react-native run-android' command) at 64-bit smartphone it worked fine, but release version apk crashed instantly, while same apk also working fine at 32-bit smartphone
RcaHandler: Build: Sony/E5603/E5603:6.0/30.2.A.0.100/167960284:user/release-keys
RcaHandler: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.fooapp/lib-main/libgnustl_shared.so" is 32-bit instead of 64-bit
RcaHandler: at java.lang.Runtime.load(Runtime.java:332)
RcaHandler: at java.lang.System.load(System.java:1069)
Running RN 0.43.3. Worked fine on my Nexus 6, doesn't work on my Pixel. Both are on Android 7.1.2.
I can run the app if I add this to my build.gradle file, but then other things seem to break in my React views.
packagingOptions {
exclude '/lib/mips64/**'
exclude '/lib/arm64-v8a/**'
exclude '/lib/x86_64/**'
LuckyLiang272, cdkd321, justColbs, dbof10, mdumrauf, atlas1119, dreina-toast, zhouxianyu, and ZherebtsovAlexandr reacted with thumbs up emoji
williamdes reacted with heart emoji
All reactions
+1, same error on API 23 device when using 0.44.2 with existing app integration.
After adding following seems working:
locating the gradle.properties file in the root project, and add Android.useDeprecatedNdk=true.
in the build.gradle of the app:
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "x86"
packagingOptions {
exclude "lib/arm64-v8a/librealm-jni.so"
In this way, using 32bit so instead of 64 bit, still, hope there's an official solution.
guess, yogieputra8, bdbergeron, BALUSANGEM, ggsrivas, JeffMcKnight, hiddentao, Rowandjj, mistarA, matoso, and smbteam1 reacted with thumbs up emoji
with0out, hiddentao, and chug2k reacted with hooray emoji
All reactions
@BALUSANGEM the reason why should config certain ndk abiFilters is that this is configured in the mk file—— check out your react native project directory\node_modules\react-native\ReactAndroid\src\main\jni\Application.mk:
As for the impact, some 3rd party libraries may only provide armeabi instead of "armeabi-v7a", "x86". So in my opinion, there is a risk of app crash.
I have the same problem,I must add 'armeabi', 'arm64-v8a' to ndk,
ndk {
abiFilters "armeabi-v7a", "x86", 'armeabi', 'arm64-v8a'
How to solve it?
and it doesn't work but If I use those:
exclude 'lib/armeabi-v7a/libgnustl_shared.so'
exclude 'lib/x86/libgnustl_shared.so'
I'm able to build application and run. But I get explicitly error:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[........] couldn't find "libgnustl_shared.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:984)
at java.lang.System.loadLibrary(System.java:1530)
[Edit]
That helps me:
https://stackoverflow.com/questions/40694285/react-native-expection-java-lang-unsatisfiedlinkerror-dlopen-failed-data-dat