aosp 编译时加入外部模块 externa
原文 https://balalals.cn/archives/...
文章图片
aosp
项目本身自带了很多外部模块,所谓的外部模块就是一些命令或者库,一般放在external
目录下有的模块编译时会带上有的默认不带,不带上也可以刷机成功后通过mm
编译出来然后adb push
进去,但是这样做会很麻烦。为了除去这种不必要的麻烦,最好在整体编译的时候加进去。在
aosp
中想要编译东西,修改一些属性其实修改多处都能达到目的,我所讲的可能也是其中的一种,因为aosp
的编译体系太大,他会从不同的文件夹中提取编译说明最后合成再编译,修改哪里需要自己斟酌,要多观察多实践才能理解当中的意思。模块中有的模块下面会有
Android.mk
这个是Android
的编译描述文件,类似于CMakelist.txt
给编译程序看的,还有的模块下面没有这个文件但是会有一个Android.bp
文件,这个文件其实就是Android.mk
的升级版,两者能完成的功能相同但是bp
文件的可读性会好很多,也是官方推崇的方式。回归正题,关于编译的东西一般都会在
build
目录下,没错的确在这下面找到build/target/product/core_minimal.mk
文件找到PRODUCT_PACKAGES
PRODUCT_PACKAGES += \
BackupRestoreConfirmation \
CompanionDeviceManager \
CtsShimPrebuilt \
CtsShimPrivPrebuilt \
DownloadProvider \
ExtShared \
ExtServices \
HTMLViewer \
MediaProvider \
PackageInstaller \
SettingsProvider \
Shell \
StatementService \
WallpaperBackup \
android.hidl.base-V1.0-java \
android.hidl.manager-V1.0-java \
意思都懒得解释猜都能猜出来,在末尾加上要想加入的模块名, 比如我想要tinyalsa 模块加入进去
sensorservice \
telephony-common \
uiautomator \
uncrypt \
voip-common \
webview \
webview_zygote \
tinyalsa \
就完成了加入,全量编译刷机,
tinymix tinyplay tinycap
等命令就存在了,仔细看这个文件,文件末尾$(call inherit-product, $(SRC_TARGET_DIR)/product/runtime_libart.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/base.mk)
【aosp 编译时加入外部模块 externa】这两句话的意思应该是包含目录下这两个文件进来合并,再打开这两个文件同样末尾也会有包含其他文件,其实我们的
PRODUCT_PACKAGES
语句写哪里都行只要能包含进来,这就是刚才我说的修改多处地方都会生效的问题。推荐阅读
- 任时光绽放成六月繁花
- 一个人的碎碎念
- 昨夜小楼听风
- 20170612时间和注意力开销记录
- 远去的风筝
- 为什么你的路演总会超时()
- 杜月笙的口才
- 时间老了
- MediaRecorder前后摄像头同时录像
- 眉头开了