在apk里打包进.so文件的方法
发布日期:2021-09-27 14:12:40 浏览次数:8 分类:技术文章

本文共 1183 字,大约阅读时间需要 3 分钟。

在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.mkLOCAL_JNI_SHARED_LIBRARIES字段的编译过程

感谢: http://blog.csdn.net/androidboy365/article/details/6772890

 

另外参考:http://www.cnblogs.com/bastard/archive/2012/05/19/2508913.html

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/4105307.html

转载地址:https://blog.csdn.net/FLY_THINK2012/article/details/101840946 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:APP添加jar包在源码下编译
下一篇:Linux下的USB总线驱动(04)——USB键盘驱动 usbkbd.c

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月06日 01时25分52秒