Android Eclipse JNI 调用 .so文件加载问题
2013-12-31 16:55
330 查看
背景:对于Android工程 Eclipse里编译好的.so文件放到 libs\armeabi下以后,这样.so文件就可以打包到apk文件里,在apk装到手机上以后 在libs\armeabi下的.so文件应该就会解压到/data/data/这里是你project的包名(比如com.first.second)/lib下。
问题:写了个测试的android JNI app,.so已经放到了libs\armeabi下而且从编译的apk里也能看到.so已经打包进去(解压apk文件,里边应该有lib文件夹)但是在/data/data/com.test.test/lib下就是没有相应的.so文件
解决方法:原来是因为我的.so没有按照android标准命名,.so的名字必须有'lib'前缀否则apk解压/安装到手机的时候不会把libs\armeabi下的.so拷贝到/data/data/com.test.test/lib下。原来我用的so名字是JNITest.so,改为libJNITest.so后一切正常。
补充:
a) 用loadLibrary调用的时候需要去掉lib前缀 System.loadLibrary("JNITest");
b) 用load调用的时候需要写全路径名 且不能去掉lib前缀 因为这里是当成一个普通文件读取的 System.load("/data/data/com.test.test/libJNITest.so");
问题:写了个测试的android JNI app,.so已经放到了libs\armeabi下而且从编译的apk里也能看到.so已经打包进去(解压apk文件,里边应该有lib文件夹)但是在/data/data/com.test.test/lib下就是没有相应的.so文件
解决方法:原来是因为我的.so没有按照android标准命名,.so的名字必须有'lib'前缀否则apk解压/安装到手机的时候不会把libs\armeabi下的.so拷贝到/data/data/com.test.test/lib下。原来我用的so名字是JNITest.so,改为libJNITest.so后一切正常。
补充:
a) 用loadLibrary调用的时候需要去掉lib前缀 System.loadLibrary("JNITest");
b) 用load调用的时候需要写全路径名 且不能去掉lib前缀 因为这里是当成一个普通文件读取的 System.load("/data/data/com.test.test/libJNITest.so");
相关文章推荐
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载【转】
- 关于android进行jni调用时.so文件的兼容问题
- android JNI调用百度地图API,.so文件总是被自动删除的问题
- android jni调用.so文件注意事项
- Android使用JNI生成.so文件并调用(使用传统生成.h的方法)
- Android jni开发 eclipse 删除额外添加的.so文件
- Android使用JNI生成.so文件并调用(使用CMake的方法)
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- ubuntu14下整合eclipse和javah生成jni头文件遇到无法访问android.app.Activity 找不到android.app.Activity的类文件问题的解决方案
- 在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
- android jni方式调用c++代码并在其它app中使用生成的.so文件
- 在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
- android(NDK+JNI)---在Eclipse中编译NDK的so文件
- windows+eclipse做android开发 jni找不到标准C++的头文件问题