Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UnsatisfiedLinkError on Samsung S6

I have Android project (not ndk). In this project i'm linking my own native library myLib.so. I compiled my library for: armeabi-v7a and x86. So in jniLibs folder I have two folders with my lib: armeabi-v7a, x86.

When user runs my app on Samsung S6, i have next crash log:

> java.lang.UnsatisfiedLinkError:
> dalvik.system.PathClassLoader[DexPathList[[zip file
> "/data/app/com.mycompany.test-2/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.test-2/lib/arm64,
> /vendor/lib64, /system/lib64]]]


> couldn't find "myLib.so" at java.lang.Runtime.loadLibrary(Runtime.java:366) at
> java.lang.System.loadLibrary(System.java:989)

Whats going on ? why 64 bit device not running with my lib ?

like image 923
Jim Avatar asked Jun 22 '15 17:06

Jim


1 Answers

If you have only x86 and armeabi-v7a libraries, your app should automatically be installed in "32-bit mode".

Are you sure you don't have another library that would include .so files inside your APK's lib/arm64-v8a folder? In that case only the libs inside this folder will get installed (without yours).

Edit: to include only x86 and armeabi-v7a libs, you can use abiFilters:

android {
    ....
    defaultConfig {
        ....
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
}
like image 158
ph0b Avatar answered Sep 18 '22 16:09

ph0b