【发布时间】:2015-08-04 20:05:17
【问题描述】:
我在我的应用程序的 /libs/armeabi/ 文件夹中放置了一个 .so 库(我也尝试在 /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 使用库名。但两者都加载了库。
【问题讨论】:
标签: android android-ndk null native unsatisfiedlinkerror