Android基线添加新设备之device.mk文件解读笔记
1.前言
在 Android 开发中,device.mk文件是一个重要的配置文件,用于定义你添加新设备的编译选项和环境变量。
2.需要添加并编译某个模块
需要编译 MyApp\ 模块,在 device.mk 或者 <product_name>.mk 里添加如下:
1 PRODUCT_PACKAGES += \ 2 MyApp\
3.添加属性
1 PRODUCT_PROPERTY_OVERRIDES += \ 2 xxx.prop1=prop1 \ 3 xxx.prop2=prop2 \
添加属性,需要注意的是属性的读写一般涉及Selinux权限
4.当前mk连接其他编译
当前mk会编译到,同时又新加了其他的 mk 文件,需要将新加的 mk 文件也编译进来,可以这样添加:
1 $(call inherit-product-if-exists, device/commom/xxx/new_add.mk)
需要注意的是路径要匹配上
5.添加编译log
常用于验证自己的 mk 有没有编译到
1 $(warning "[TEST] call here") 2 $(warning "[TEST] TARGET_DEVICE is $(TARGET_DEVICE)")
6.其中一些变量
(1)inherit-product 的意思:
主要是执行某个路径下的makefile文件,和从其中继承一些变量的定义过来(https://blog.csdn.net/Qidi_Huang/article/details/56479654)
(2)SRC_TARGET_DIR 的含义:
在 Android 源码的根目录下 build/make/core/config.mk 文件中有定义一些环境变量,其中就有对于 SRC_TARGET_DIR 的定义
(3)PRODUCT_COPY_FILES:
对 android 系统层进行开发或者移植时,时常需要添加文件到编译体系中,,在最终的编译中复制到 out 中,最后打包成镜像。PRODUCT_COPY_FILES 这个变量就是用来标记 copy 操作的,比较常见的形式如下:
1 PRODUCT_COPY_FILES += \ 2 hardware/waydroid/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ 3 frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
格式为 <source file>:<dest file> 中间用 ":" 隔开。
浙公网安备 33010602011771号