为android系统添加产品的过程

本文介绍了在Android系统中新增产品的步骤及所需配置文件。主要涉及AndroidProducts.mk、BoardConfig.mk和vendorsetup.sh三个核心文件,详细解释了这些文件的用途及包含的关键变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们要新增一款产品的时候,首先要在Build系统中添加产品定义,产品定义文件通常位于device目录下面(vendor目录是历史遗留目录,google已经不建议在该目录中进行定义)。

通常对于一个产品的定义通常至少包含四个文件:

  1. AndroidProducts.mk
  2. 产品版本定义文件
  3. BoardConfig.mk
  4. vendorsetup.sh
    下面我们来详细介绍这四个文件:

AndroidProducts.mk文件:
该文件内容很简单,其中只需要定义一个变量,名称为PRODUCT_MAKEFILES,变量的值为产品版本定义文件名的列表,例如:

 PRODUCT_MAKEFILES := \ 
 $(LOCAL_DIR)/full_stingray.mk \ 
 $(LOCAL_DIR)/stingray_emu.mk \ 
 $(LOCAL_DIR)/generic_stingray.mk

产品定义文件:
该文件包含了对于特定产品版本的定义,该文件可能有不止一个,因为同一个产品可能有多个版本(例如面向美国一个版本,面向中国一个版本),文件中可以定义的变量如下表:

PRODUCT_NAME    最终用户将看到的完整产品名,会出现在“关于手机”信息中。
PRODUCT_MODEL   产品的型号,这也是最终用户将看到的。
PRODUCT_LOCALES 该产品支持的地区,以空格分格,例如:en_GB de_DE es_ES fr_CA。
PRODUCT_PACKAGES    该产品版本中包含的 APK 应用程序,以空格分格,例如:Calendar Contacts。
PRODUCT_DEVICE  该产品的工业设计的名称。
PRODUCT_MANUFACTURER    制造商的名称。
PRODUCT_BRAND   该产品专门定义的商标(如果有的话)。
PRODUCT_PROPERTY_OVERRIDES  对于商品属性的定义。
PRODUCT_COPY_FILES  编译该产品时需要拷贝的文件,以“源路径 : 目标路径”的形式。
PRODUCT_OTA_PUBLIC_KEYS 对于该产品的 OTA 公开 key 的列表。
PRODUCT_POLICY  产品使用的策略。
PRODUCT_PACKAGE_OVERLAYS    指出是否要使用默认的资源或添加产品特定定义来覆盖。
PRODUCT_CONTRIBUTORS_FILE   HTML 文件,其中包含项目的贡献者。
PRODUCT_TAGS    该产品的标签,以空格分格。

BoardConfig.mk文件:
该文件用来配置硬件主板,它其中定义的都是设备底层的硬件特性,如设备主板相关信息,wifi相关信息等。

vendorsetup.sh:该文件的作用是通过add_lunch_combo函数在lunch中添加一个菜单项。

在配置好以上文件以后,我们就可以编译出我们新添加的设备的系统镜像了。
调用:source build/envsetup.sh,该脚本会扫描device和vendor目录下面所有的vendorsetup.sh。

那其他三个文件是什么时候调用到的呢?其实就是在lunch命令执行以后这三个文件就实现了它们的使命,lunch命令执行过程中会加载/build/core/config.mk,这个文件又会加载/build/core/envsetup.mk和Board_config_mk,前者会加载product_config.mk,后者会加载BoardConfig.mk,而product_config.mk会在device/vendor搜索所有的AndroidProducts.mk,然后根据TAEGET_PRODUCT的值找到其对应的AndroidProducts.mk,由这个文件就会找到产品定义文件。需要注意的一点是产品定义文件有个product_device变量,这个变量最终设置了TARGET_DEVICE变量的值。
使用一张图来描述上述过程:
这里写图片描述

后面还会写文章详细介绍安卓系统的初始化过程,并将重温上述过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值