【Android】通过伪模块移除编译中的某些APK

前言

我们在编译安卓系统时,经常需要添加或者移除某些APP/模块,这时我们通常需要找到源码中编译此APP的 mk文件,然后将其注释。这种方法有些许不便之处,很多APP所属的mk文件不在同一处,我们需要改变多个mk文件才能同时去除多个APP,那么有没有一种方法可以直接简单的去掉w我们要编译的APP呢?

既然Android是通过将APP编译成模块加入的方式内置的,那我们不如直接将想要去除的模块放在同一个位置一起干掉。

具体操作

1. 基本模块设置

vendor/xxx/apps/remove_unused_module/Android.mk

# remove_unused_modules
include $(CLEAR_VARS)
LOCAL_MODULE := remove_unused_module
LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_CLASS := FAKE
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

# List of packages to remove
LOCAL_OVERRIDES_PACKAGES += Music

include $(BUILD_SYSTEM)/base_rules.mk

$(LOCAL_BUILT_MODULE):
	$(hide) echo "Fake: $@"
	$(hide) mkdir -p $(dir $@)
	$(hide) touch $@

PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES))

include $(CLEAR_VARS): 清除之前定义的所有局部变量,避免污染后续定义的模块。
LOCAL_MODULE := remove_unused_module: 定义模块名为 remove_unused_module。
LOCAL_MODULE_TAGS := optional: 设置模块标签为 optional,表示这个模块是可选的。
LOCAL_MODULE_CLASS := FAKE: 定义模块类型为 FAKE,表示这是一个假模块,不会生成实际的输出。
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX): 定义模块的后缀,使用通用的 Android 包后缀。

2. 指定要移除的包

在LOCAL_OVERRIDES_PACKAGES的地方将我们想要移除的模块名加上,如:

List of packages to remove
LOCAL_OVERRIDES_PACKAGES += Music

LOCAL_OVERRIDES_PACKAGES += Music: 指定要移除的包,这里是 Music 包。LOCAL_OVERRIDES_PACKAGES 变量可以包含多个包的列表。

3. 定义伪目标

$(LOCAL_BUILT_MODULE):
	$(hide) echo "Fake: $@"
	$(hide) mkdir -p $(dir $@)
	$(hide) touch $@

$(LOCAL_BUILT_MODULE): 定义伪模块的构建目标。$(LOCAL_BUILT_MODULE) 是伪模块的输出文件路径。
$(hide) echo "Fake: $@": 输出一条日志信息,表示这是一个伪模块。
$(hide) mkdir -p $(dir $@): 创建输出文件的目录路径。
$(hide) touch $@: 创建一个空文件作为伪模块的输出。

  1. 设置包覆盖规则
PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES))

设置包覆盖规则,将指定的包列表赋值给 PACKAGES.remove_unused_module.OVERRIDES 变量。
这告诉构建系统,当 remove_unused_module 模块被构建时,它会移除 LOCAL_OVERRIDES_PACKAGES 中列出的包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值