写给应用开发的 Android Framework 教程是一个系列教程,目前已更新以下内容:
-
系统开发基础
-
AOSP 上手指南
-
学穿 Binder 系列
-
HAL 与硬件服务
添加配置文件与删除已有模块
本文基于 AOSP Android10_r41 源码环境。
如果提前阅读了以下文章,本文阅读起来会更加顺利:
- Ubuntu 使用快速入门
- AOSP 极速上手
- 系统开发工具
- Make 构建工具入门
- 添加 Product
- AOSP 中添加 C/C++、Java 可执行程序
- AOSP 中添加 C/C++、Java 库
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 应用已经没有了:
参考资料
- How to include prebuilt library in Android.bp file?
- Android系统开发入门-5.添加预编译模块
- Android系统开发入门-6.删除Android原生内置APK
- Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)
- 在AOSP中添加jar包和aar包依赖
关于
如果你对 Android Framework 感兴趣,可以持续关注:
- 掘金平台个人技术博客
- 我的个人公众号
- 我的个人微信(可以加我微信进 Android Framework 交流群)