Я поместил библиотеку .so в папку /libs/armeabi/ (я также пробовал только в папке /libs) своего приложения, а затем попытался загрузить ее статическим методом. Я получаю сообщение об ошибке UnsatisfiedLinkError/null.
Я пробовал полный путь в статическом методе, но все равно получаю ошибку.
static {
System.loadLibrary("/data/data/com.imtroymiller.myapp/lib/armeabi/libmylib.so");
}
Это полное сообщение об ошибке, которое я получаю.
08-04 12:49:22.204: E/AndroidRuntime(3352): java.lang.UnsatisfiedLinkError: Couldn't load /data/data/com.imtroymiller.myapp/lib/armeabi/libmylib.so from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.imtroymiller.myapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.imtroymiller.myapp-1, /vendor/lib, /system/lib]]]: findLibrary returned null
Я прочитал приведенный ниже учебник и понял, как использовать NDK для создания библиотеки из исходного кода, но я пытаюсь загрузить существующую библиотеку в свое приложение, чтобы запустить исполняемый файл, который зависит от библиотеки.
http://code.tutsplus.com/tutorials/ndk-tutorial--mobile-2152
Я пробовал это на двух устройствах, у обоих есть root-доступ. Один - CyanogenMod 11, а другой - CyanogenMod 12.
Изменить: я смог загрузить их, используя...
System.load("/data/data/com.imtroymiller.myapp/lib/libmylib.so");
Похоже, что System.load принимает имя пути, а System.loadLibrary — имя библиотеки. Но оба с загрузкой библиотеки.