Почему моя родная библиотека не загружается в мое приложение для Android?

Я поместил библиотеку .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 — имя библиотеки. Но оба с загрузкой библиотеки.


person ImTroyMiller    schedule 04.08.2015    source источник


Ответы (2)


Вы можете просто использовать относительный путь: System.loadLibrary("mylib")

Путь libs/armeabi/ правильный, если вы собрали свою библиотеку для архитектуры armeabi (это путь по умолчанию)

person Anton Malyshev    schedule 04.08.2015

Я смог загрузить их с помощью...

System.load("/data/data/com.imtroymiller.myapp/lib/libmylib.so");

Похоже, что System.load принимает имя пути, а System.loadLibrary — имя библиотеки. Но оба будут загружать библиотеку.

person ImTroyMiller    schedule 05.08.2015