Android 打包so动态库文件到APK
发布日期:2021-06-29 15:21:16
浏览次数:3
分类:技术文章
本文共 1767 字,大约阅读时间需要 5 分钟。
有时由于项目需要使用JNI来调用.so文件,需要将so文件一起打包到APK文件中,这有两种方法:
1. 使用mm命令和Android SDK源代码一起编译。
- 在project根目录创建一个Android.mk,文件内容如:
[c-sharp]
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := user
- LOCAL_SRC_FILES := $(call all-subdir-java-files)
- LOCAL_PACKAGE_NAME := jnisample
- LOCAL_JNI_SHARED_LIBRARIES := libtest
- include $(BUILD_PACKAGE)
- include $(LOCAL_PATH)/jni/Android.mk
- # Use the folloing include to make our test apk.
- include $(call all-makefiles-under,$(LOCAL_PATH))
LOCAL_JNI_SHARED_LIBRARIES := libtest 就是把so文件放到apk文件里的libs/armeabi里,而include $(LOCAL_PATH)/jni/Android.mk为了编译so文件。
- 在Project目录下创建jni文件夹,在jni文件里创建Android.mk,内容如下: [c-sharp]
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- MY_ANDROID_SRC := $(ANDROID_BUILD_TOP)
- LOCAL_CFLAGS += -DHAVE_CONFIG_H -DKHTML_NO_EXCEPTIONS -DGKWQ_NO_JAVA
- LOCAL_CFLAGS += -DNO_SUPPORT_JS_BINDING -DQT_NO_WHEELEVENT -DKHTML_NO_XBL
- LOCAL_SHARED_LIBRARIES += libskia libsurfaceflinger liblog
- LOCAL_PRELINK_MODULE := false
- LOCAL_CFLAGS += -DPACKED=""
- LOCAL_MODULE := libtest
- LOCAL_SRC_FILES := Ltest.cpp / BlurFilter.cpp / clz.cpp
- LOCAL_C_INCLUDES := $(MY_ANDROID_SRC)/external/skia/include/core /
- $(MY_ANDROID_SRC)/external/qemu/android /
- $(MY_ANDROID_SRC)/frameworks/base/include /
- $(MY_ANDROID_SRC)/system/core/include /
- $(MY_ANDROID_SRC)/frameworks/base/libs/surfaceflinger /
- $(MY_ANDROID_SRC)/system/core/include/pixelflinger /
- $(JNI_H_INCLUDE)
- include $(BUILD_SHARED_LIBRARY)
- 把工程文件放到SDK platform/packages/apps目录下,然后进入该目录,命令里输入mm,进行该工程的编译,这样编译出来的apk,在libs/armeabi文件夹里面包含so文件。
2.使用Eclipse build APK文件,只要将so文件放在与src平级的地方创建目录结构libs/armeabi,文件名格式如:libs/armeabi/libxxx.so.
eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的转载地址:https://codegg.blog.csdn.net/article/details/13625673 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月26日 12时33分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Eclipse中使用SVN的使用
2019-04-29
JSON.parse和eval的区别
2019-04-29
JQuery中$.ajax()方法参数详解
2019-04-29
正则表达式的数字实例
2019-04-29
【转】EasyUI 验证
2019-04-29
Django实战---商城购物车的增删改、显示和合并购物车
2019-04-29
Django项目实战----添加支付宝支付
2019-04-29
DRF框架---前言(简单使用)
2019-04-29
字符串外面是b“ “的转换 -亲测有效
2019-04-29
单通道和多通道卷积
2019-04-29
npy文件和pkl文件的保存和读取
2019-04-29
买卖股票的最佳时机
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
JavaScript 的addEventListener() 事件监听详解!
2019-04-29
上传图片到阿里云OSS和获取上传图片的url的详解 !
2019-04-29
Kafka为什么这么快?
2019-04-29
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29