我在我的应用程序的/ libs / armeabi /文件夹(我也在/ libs文件夹中试过)中放了一个.so库,然后尝试使用静态方法加载。我收到一个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
我已经在两台设备上尝试过此操作,两者都具有超级用户权限。一个是CyanogenMod 11,另一个是CyanogenMod 12。
编辑:我可以使用...
加载它们System.load("/data/data/com.imtroymiller.myapp/lib/libmylib.so");
看起来System.load接受路径名,System.loadLibrary接受库名。但两者都加载了库。
答案 0 :(得分:0)
您可以使用相对路径:System.loadLibrary("mylib")
如果您为armeabi架构构建了库(它是默认的库),那么路径libs / armeabi /是正确的
答案 1 :(得分:0)
我可以使用...
加载它们System.load("/data/data/com.imtroymiller.myapp/lib/libmylib.so");
看起来System.load接受路径名,System.loadLibrary接受库名。但两者都会加载库。