不能 运行 android 应用程序与库项目和 JNI 在一起
Can't run android app with library project and JNI together
我正在尝试 运行 一个 android 应用程序与两个亲戚:
CSipSimple 库项目。
.so
使用 JNI 加载的库。
当 运行仅使用 .so
库来安装应用程序时,它工作得很好,但是当 运行在添加 CSipSimple 项目后安装它时,它找不到 .so
库并给我以下异常:
09-22 17:18:02.650: W/System.err(13662): java.lang.UnsatisfiedLinkError: 无法从加载程序 dalvik.system.PathClassLoader[DexPathList[[zip文件“/data/app/com.automation.isolace-2.apk”],nativeLibraryDirectories=[/data/app-lib/com.automation.isolace-2,/vendor/lib,/system/lib ]]]: findLibrary 返回空
09-22 17:18:02.650: W/System.err(13662): 在 java.lang.Runtime.loadLibrary(Runtime.java:358)
09-22 17:18:02.650: W/System.err(13662): 在 java.lang.System.loadLibrary(System.java:526)
09-22 17:18:02.650: W/System.err(13662): 在 com.company.NetSDK.INetSDK.LoadLibrarys(INetSDK.java:26)
09-22 17:18:02.650: W/System.err(13662): 在 com.company.NetSDK.INetSDK.(INetSDK.java:6)
09-22 17:18:02.650: W/System.err(13662): 在 com.automation.isolace.VideoViewActivity$3.run(VideoViewActivity.java:137)
方法LoadLibraries:
/* */ public static void LoadLibrarys()
/* */ {
/* */ try
/* */ {
/* 17 */ String strOSType = System.getProperty("os.name");
/* 18 */ if (strOSType.contains("Window"))
/* */ {
/* 20 */ System.loadLibrary("dhconfigsdk");
/* 21 */ System.loadLibrary("dhnetsdk");
/* 22 */ System.loadLibrary("netsdk");
/* */ }
/* */ else
/* */ {
/* 26 */ System.loadLibrary("dvr");
/* 27 */ System.loadLibrary("configsdk");
/* 28 */ System.loadLibrary("netsdk");
/* 29 */ System.loadLibrary("sdk");
/* */ }
/* */ } catch (UnsatisfiedLinkError ulink) {
/* 32 */ ulink.printStackTrace();
/* */ }
/* */ }
以及我的应用程序的层次结构:
这可能是因为 libs/armeabi
和 libs/armeabi-v7a
中的库不同,例如 libs/armeabi-v7a
只包含 .so 库的子集。添加库项目依赖项时,还应检查其 libs/armeabi
& libs/armeabi-v7a
文件夹。
我正在尝试 运行 一个 android 应用程序与两个亲戚:
CSipSimple 库项目。
.so
使用 JNI 加载的库。
当 运行仅使用 .so
库来安装应用程序时,它工作得很好,但是当 运行在添加 CSipSimple 项目后安装它时,它找不到 .so
库并给我以下异常:
09-22 17:18:02.650: W/System.err(13662): java.lang.UnsatisfiedLinkError: 无法从加载程序 dalvik.system.PathClassLoader[DexPathList[[zip文件“/data/app/com.automation.isolace-2.apk”],nativeLibraryDirectories=[/data/app-lib/com.automation.isolace-2,/vendor/lib,/system/lib ]]]: findLibrary 返回空 09-22 17:18:02.650: W/System.err(13662): 在 java.lang.Runtime.loadLibrary(Runtime.java:358) 09-22 17:18:02.650: W/System.err(13662): 在 java.lang.System.loadLibrary(System.java:526) 09-22 17:18:02.650: W/System.err(13662): 在 com.company.NetSDK.INetSDK.LoadLibrarys(INetSDK.java:26) 09-22 17:18:02.650: W/System.err(13662): 在 com.company.NetSDK.INetSDK.(INetSDK.java:6) 09-22 17:18:02.650: W/System.err(13662): 在 com.automation.isolace.VideoViewActivity$3.run(VideoViewActivity.java:137)
方法LoadLibraries:
/* */ public static void LoadLibrarys()
/* */ {
/* */ try
/* */ {
/* 17 */ String strOSType = System.getProperty("os.name");
/* 18 */ if (strOSType.contains("Window"))
/* */ {
/* 20 */ System.loadLibrary("dhconfigsdk");
/* 21 */ System.loadLibrary("dhnetsdk");
/* 22 */ System.loadLibrary("netsdk");
/* */ }
/* */ else
/* */ {
/* 26 */ System.loadLibrary("dvr");
/* 27 */ System.loadLibrary("configsdk");
/* 28 */ System.loadLibrary("netsdk");
/* 29 */ System.loadLibrary("sdk");
/* */ }
/* */ } catch (UnsatisfiedLinkError ulink) {
/* 32 */ ulink.printStackTrace();
/* */ }
/* */ }
以及我的应用程序的层次结构:
这可能是因为 libs/armeabi
和 libs/armeabi-v7a
中的库不同,例如 libs/armeabi-v7a
只包含 .so 库的子集。添加库项目依赖项时,还应检查其 libs/armeabi
& libs/armeabi-v7a
文件夹。