Android.mk编译控制

本文探讨了Android系统编译过程中Android.mk文件的作用及其配置项的影响。重点介绍了LOCAL_MODULE_TAGS和LOCAL_OVERRIDES_PACKAGES属性如何控制应用的编译,并解释了特定属性设置导致的应用编译行为变化。

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

我也不写Android.mk的语法的知识了,网上一搜一大把。本人目前手上有一块友善之臂生产的samsung的4412的开发板,根据编译android系统发现,有时候在packages/apps/下添加来自己的软件,但是最终编译镜像的时候发现这个软件没有编译。于是我修改原本Android.mk的LOCAL_MODULE_TAGS := optional 为LOCAL_MODULE_TAGS := eng。然后这个软件就在编译系统的时候编译了。在packages/apps/下的系统的软件LOCAL_MODULE_TAGS 这个值的属性为optional的是会编译的。同时Launcher3这个软件有个LOCAL_OVERRIDES_PACKAGES :=Launcher2这个属性,而在system/priv-app/中只有Launcher2/Launcher2.apk这个软件没有Launcher3.apk。但是经过我测试结果恰恰相反LOCAL_OVERRIDES_PACKAGES这个属性的值的软件没有被编译。

按照我个人理解,android系统编译的时候先是一次将所有Android.mk加载。以LOCAL_PACKAGE_NAME(apk的名字)或者LOCAL_MODULE(动态库.so或者静态库.a等)来对应每一个Android.mk.根据LOCAL_MODULE_TAGS来判断是否使用这个Android.mk。像LOCAL_MODULE的mk需要使用PRODUCT_PACKAGES来让它编译进系统中。

LOCAL_SDK_VERSION :=current 会导致无法使用hide的API

LOCAL_PRIVILEGED_MODULE := true会使得编译出来的apk生成目录为/system/priv-app/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值