Android 预编译模块

本文介绍了如何在编译系统中定义预编译模块,包括APK、Jar包、动态库、可执行文件及XML文件等。通过设置特定变量,如LOCAL_SRC_FILES和LOCAL_MODULE_CLASS,确保这些模块能正确集成到最终的image文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际的开发过程,并不会像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.apk
LOCAL_SRC_FILES :=app/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS :=optional
LOCAL_MODULE_CLASS:=APPS   #这里是APPS
LOCAL_CERTIFICATE :=platform
include $(BUILD_PREBUILT)

2.定义静态jar包目标

include $(CLEAR_VARS)
LOCAL_MODULE :=ThemeManager.jar
LOCAL_SRC_FILES :=app/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS :=optional
LOCAL_MODULE_CLASS:=JAVA_LIBRARIES   #这里是JAVA_LIBRARIES
LOCAL_CERTIFICATE :=platform
include $(BUILD_PREBUILT)

3.定义动态库文件目标

include $(CLEAR_VARS)
LOCAL_MODULE :=ThemeManager_jni.so
LOCAL_MODULE_OWER :=
LOCAL_SRC_FILES :=lib/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS :=optional
LOCAL_MODULE_CLASS:=SHARED_LIBRARIES   #这里是SHARED_LIBRARIES
include $(BUILD_PREBUILT)

4.定义可执行文件目标

include $(CLEAR_VARS)
LOCAL_MODULE :=bootanimation
LOCAL_MODULE_OWER :=
LOCAL_SRC_FILES :=bin/bootanimation
LOCAL_MODULE_TAGS :=optional
LOCAL_MODULE_CLASS :=EXECUTABLES   #这里是EXECUTABLES
LOCAL_MODULE_PATH :=$(TARGET_OUT)/bin  #这里可以指定复制到的目标目录
include $(BUILD_PREBUILT)

5.定义xml文件目标

include $(CLEAR_VARS)
LOCAL_MODULE :=ThemeManager.xml
LOCAL_MODULE_OWER :=
LOCAL_SRC_FILES :=etc/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS :=optional
LOCAL_MODULE_CLASS:=ETC   #ETC表示文件将复制到/system/etc下
include $(BUILD_PREBUILT)

6.定义host平台下的jar包
将系统编译时用到的sigapk.jar预编译,然后复制到out目录下,这样Build系统将能够使用这个文件来给其他文件签名:

include $(CLEAR_VARS)
LOCAL_MODULE :=signapk
LOCAL_PREBUILT_JAVA_LIBRARIES :=lib/$(LOCAL_MODULE).jar
include $(BUILD_HOST_PREBUILT)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值