Android 预编译模块
来源:互联网 发布:淘宝旺铺智能版好用吗 编辑:程序博客网 时间:2024/06/13 02:39
在实际的开发过程,并不会像Android一样将所有的源码一起编译,有很多的APK、Jar包等都是预先编译好的,编译系统时需要将这些二进制文件复制到生成的image文件中.
常用的方法是通过PRODUCT_COPY_FILES变量将这些文件直接复制生成的image文件中,但是有些APK文件和jar包,需要使用系统的的签名文件才能正常运行,这样复制的方式就不痛了,另外,一些动态库文件可能源码中的某些模块所依赖,用复制的方法无法建立依赖关系,可以用预编译模块的方法解决。
定义一个预编译模块和一个普通的编译模块格式相似,不同的是LOCAL_SRC_FILES变量指定的不是源文件,而是二进制文件的路径,同时还要通过LOCAL_MODULE_CLASS来指定模块的类型,最后include是BUILD_PREBUILT变量定义的编译文件。
下面是常见模块的写法
1.apk文件目标
include $(CLEAR_VARS)LOCAL_MODULE :=ThemeManager.apkLOCAL_SRC_FILES :=app/$(LOCAL_MODULE)LOCAL_MODULE_TAGS :=optionalLOCAL_MODULE_CLASS:=APPS #这里是APPSLOCAL_CERTIFICATE :=platforminclude $(BUILD_PREBUILT)
2.定义静态jar包目标
include $(CLEAR_VARS)LOCAL_MODULE :=ThemeManager.jarLOCAL_SRC_FILES :=app/$(LOCAL_MODULE)LOCAL_MODULE_TAGS :=optionalLOCAL_MODULE_CLASS:=JAVA_LIBRARIES #这里是JAVA_LIBRARIESLOCAL_CERTIFICATE :=platforminclude $(BUILD_PREBUILT)
3.定义动态库文件目标
include $(CLEAR_VARS)LOCAL_MODULE :=ThemeManager_jni.soLOCAL_MODULE_OWER :=LOCAL_SRC_FILES :=lib/$(LOCAL_MODULE)LOCAL_MODULE_TAGS :=optionalLOCAL_MODULE_CLASS:=SHARED_LIBRARIES #这里是SHARED_LIBRARIESinclude $(BUILD_PREBUILT)
4.定义可执行文件目标
include $(CLEAR_VARS)LOCAL_MODULE :=bootanimationLOCAL_MODULE_OWER :=LOCAL_SRC_FILES :=bin/bootanimationLOCAL_MODULE_TAGS :=optionalLOCAL_MODULE_CLASS :=EXECUTABLES #这里是EXECUTABLESLOCAL_MODULE_PATH :=$(TARGET_OUT)/bin #这里可以指定复制到的目标目录include $(BUILD_PREBUILT)
5.定义xml文件目标
include $(CLEAR_VARS)LOCAL_MODULE :=ThemeManager.xmlLOCAL_MODULE_OWER :=LOCAL_SRC_FILES :=etc/$(LOCAL_MODULE)LOCAL_MODULE_TAGS :=optionalLOCAL_MODULE_CLASS:=ETC #ETC表示文件将复制到/system/etc下include $(BUILD_PREBUILT)
6.定义host平台下的jar包
将系统编译时用到的sigapk.jar预编译,然后复制到out目录下,这样Build系统将能够使用这个文件来给其他文件签名:
include $(CLEAR_VARS)LOCAL_MODULE :=signapkLOCAL_PREBUILT_JAVA_LIBRARIES :=lib/$(LOCAL_MODULE).jarinclude $(BUILD_HOST_PREBUILT)
阅读全文
0 0
- Android 预编译模块
- 预编译模块及其so库文件
- Mangos预编译头文件及模块划分随想
- Android 怎么简单实现预编译
- Android NDK预编译库设置方法
- android预编译apk的深入思考
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- 预编译
- android 开发图片压缩的整理一基础篇
- Studio中SSLException异常
- Deep Speech 2 : End-to-End Speech Recognition in English and Mandarin论文笔记
- SmartRefreshLayout下拉刷新上拉加载框架
- 宝宝攻略(1) 如何学写TF模型
- Android 预编译模块
- python3使用django1.11不支持MYSQL-python的解决办法
- 利用PANDAS按日期做分组运算
- 端口大全总结
- 7. 在jsp页面中编写java遇到的问题
- Dead Job Still In DBA_SCHEDULER_RUNNING_JOBS (文档 ID 2019899.1)
- Android Studio里面的Build.gradle的详细配置说明
- javascript易错题
- ros使用usb硬件,调用固定设备名修改设备权限的设置方法