This library was designed for loading native library.
We may meet below errors when we use System.loadLibrary() to load native library(.so file).
- java.lang.UnsatisfiedLinkError: Couldn't load "soFileName": findLibrary returned null
- java.lang.UnsatisfiedLinkError: PathClassLoader[DexPathList[[zip file "data/app/[package].apk"],nativeLibraryDirectories=[/data/data/[package]/lib, /vendor/lib, /system/lib]]] couldn't find "*.so"
- java.lang.UnsatisfiedLinkError: dlopen failed: "data/app/[package]/lib/*.so" has bad ELF magic
- java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH in "data/app/[package]/lib/*.so"
- java.lang.UnsatisfiedLinkError: dlopen failed: can't read file "data/app/[package]/lib/*.so": I/O error
- java.lang.UnsatisfiedLinkError: dlopen failed: "data/app/[package]/lib/*.so" is too small to be an ELF executable
- Add library dependency to dependencies{} block in build.gradle file
dependencies{
...
compile 'com.cantalou:androidSoFix:1.0.2'
}
- Add in java code
SoFix.loadLibrary(context, "nativeLibraryName");
if you want to load so with special classLoader
//This will load native library with classLoader of SoLoader.class,
//default is classLoader of SoFix.class
SoFix.loadLibrary(context, "test", new SoLoader() {
@Override
public void loadLibrary(String libName) {
System.loadLibrary(libName);
}
@Override
public void load(String path) {
System.load(path);
}
});
- Android version : from 4.1 - 9.0