在apk里打包进.so文件的方法
2017-01-12 15:21
309 查看
来源:http://blog.csdn.net/androidboy365/article/details/6772890
apk里打包进.so文件的方法
有两种方法,
1 是在Android.mk文件里增加
LOCAL_JNI_SHARED_LIBRARIES := libxxx
这样在编译的时候,NDK自动会把这个libxxx打包进apk;
放在youapk/lib/目录下。
2 是在应用的目录下手工建
libs/armeabi
目录,然后把libxxx.so拷贝到这个目录下,
这样NDK就会自动把这个libxxx.so打包进apk,位置还是在
放在youapk/lib/目录下。
在代码里,使用
System.loadLibrary(“xxx”);
就可以加载这个动态库了。
这里要注意,参数只写xxx就可以了,不需要写libxxx,也不需要写libxxx.so。
还有一点要说明,System.loadLibrary这个函数会在如下路径搜索libxxx.so文件:
/system/lib
/data/data/you apk package/lib
但,如果libxxx.so还依赖其它.so文件,比如libyyy.so,则System.loadLibrary只会
在/system/lib目录下去找,如果没找到,它不会自动到/data/data/you apk package/lib
下去找,这个时候就会报动态库没找到的错;
解决方法是在load libxxx.so之前,先load libyyy.so,如下:
System.loadLibrary(“yyy”);
System.loadLibrary(“xxx”);
————————————————————————————————-
前提:so文件在源码中编译,并在编译输出中间文件中存在。如libtest.so文件,此文件必须在out/target/product/generic/obj/lib/libtest.so
如此,书写Android.mk文件
加入如下一句赋值语句:
LOCAL_JNI_SHARED_LIBRARIES := libtest
即可。
至于在编译时让编译系统向apk中自动添加其他的资源文件,读者可参考编译系统文件
build/core/package.mk
LOCAL_JNI_SHARED_LIBRARIES字段的编译过程。
apk里打包进.so文件的方法
有两种方法,
1 是在Android.mk文件里增加
LOCAL_JNI_SHARED_LIBRARIES := libxxx
这样在编译的时候,NDK自动会把这个libxxx打包进apk;
放在youapk/lib/目录下。
2 是在应用的目录下手工建
libs/armeabi
目录,然后把libxxx.so拷贝到这个目录下,
这样NDK就会自动把这个libxxx.so打包进apk,位置还是在
放在youapk/lib/目录下。
在代码里,使用
System.loadLibrary(“xxx”);
就可以加载这个动态库了。
这里要注意,参数只写xxx就可以了,不需要写libxxx,也不需要写libxxx.so。
还有一点要说明,System.loadLibrary这个函数会在如下路径搜索libxxx.so文件:
/system/lib
/data/data/you apk package/lib
但,如果libxxx.so还依赖其它.so文件,比如libyyy.so,则System.loadLibrary只会
在/system/lib目录下去找,如果没找到,它不会自动到/data/data/you apk package/lib
下去找,这个时候就会报动态库没找到的错;
解决方法是在load libxxx.so之前,先load libyyy.so,如下:
System.loadLibrary(“yyy”);
System.loadLibrary(“xxx”);
————————————————————————————————-
前提:so文件在源码中编译,并在编译输出中间文件中存在。如libtest.so文件,此文件必须在out/target/product/generic/obj/lib/libtest.so
如此,书写Android.mk文件
加入如下一句赋值语句:
LOCAL_JNI_SHARED_LIBRARIES := libtest
即可。
至于在编译时让编译系统向apk中自动添加其他的资源文件,读者可参考编译系统文件
build/core/package.mk
LOCAL_JNI_SHARED_LIBRARIES字段的编译过程。
相关文章推荐
- 记录下最近开发中fastjson的坑-fastjson出现json解析异常
- hive增加普通用户,只赋予select权限,无create,drop等权限
- window.location.href='$_SERVER[HTTP_REFERER]'; 跳转处理前一个页面的url
- 在MyEclipse中启动Tomcat显示Error starting MyEclipse Server
- nginx & php-cgi 启动vb脚本
- Tomcat停止脚本
- opencv 3.1 添加contrib 库
- 深度学习框架Caffe的环境搭建
- 第14课 while循环应用网络刷博器爬虫
- ajax(FormData)的poi下载excel模板与excel上传解析(maven项目与非maven项目)(poi-ooxml与poi3.9
- iOS开发基础之设置状态栏和二维码的unspported type found 问题
- JavaScript 中的继承
- linux网络文件挂载
- [Leetcode] 108. Convert Sorted Array to balanced Binary Search Tree
- Capture Text solution for Qt
- How to enable nested KVM in ubuntu 16.04
- 二进制、八进制、十进制、十六进制之间的转换
- iOS开发基础之设置状态栏和二维码的unspported type found 问题
- 缓存那些事儿
- 单元测试 - tox 使用