写给应用开发的 Android Framework 教程——玩转 AOSP 篇之添加配置文件与删除已有模块

2,512 阅读3分钟

写给应用开发的 Android Framework 教程是一个系列教程,目前已更新以下内容:

添加配置文件与删除已有模块

本文基于 AOSP Android10_r41 源码环境。

如果提前阅读了以下文章,本文阅读起来会更加顺利:

1. 添加配置文件

PRODUCT_COPY_FILES 常用于产品的配置文件中,在本文中就是 Rice14.mk 文件,用于将源码的文件拷贝到 Android 文件系统中。

这里看一个源码中的示例:

aosp/build/target/product/core_64_bit.mk 中有如下内容:

PRODUCT_COPY_FILES += system/core/rootdir/init.zygote64_32.rc:system/etc/init/hw/init.zygote64_32.rc

这一行表示将源码中的 system/core/rootdir/init.zygote64_32.rc 拷贝到 Android 文件系统的 system/etc/init/hw/init.zygote64_32.rc 文件中。

init.zygote64_32.rc 是 init 程序使用的一个配置文件,当我们的程序需要配置文件时,也可以参考以上的方式来完成。

2. 删除已有模块

有的时候,我们需要删除系统中已有的模块,比如我们系统的应用场景是广告牌、电视,那我们就需要删除电话,通信录等应用。下面以删除通信录(Contacts)为例,演示如何操作:

grep -r "Contacts" .
./make/target/product/handheld_product.mk:    Contacts \
./make/target/product/mainline_arm64.mk:  system/priv-app/Contacts/Contacts.apk \
./make/target/product/base_system.mk:    ContactsProvider \
./make/core/build-system.html:Dialer, Contacts, etc.  This will probably change or go away when we switch

./make/target/product/handheld_product.mk 中删除 PRODUCT_PACKAGES 变量的 Contacts

接着重新编译启动模拟器:

source build/envsetup.sh
lunch Rice14-eng
make clean
make -j16
emulator

可以看到,Contacts 应用已经没有了:

参考资料

关于

如果你对 Android Framework 感兴趣,可以持续关注:

  • 我的个人微信(可以加我微信进 Android Framework 交流群)