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> 中间用 ":" 隔开。

 

参考

(1)Android mk使用小结
posted on 2023-10-31 15:09  yyyd~  阅读(874)  评论(0)    收藏  举报