当前位置:网站首页>为android系统添加产品的过程
为android系统添加产品的过程
2022-08-02 14:08:00 【nginux】
当我们要新增一款产品的时候,首先要在Build系统中添加产品定义,产品定义文件通常位于device目录下面(vendor目录是历史遗留目录,google已经不建议在该目录中进行定义)。
通常对于一个产品的定义通常至少包含四个文件:
- AndroidProducts.mk
- 产品版本定义文件
- BoardConfig.mk
- 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变量的值。
使用一张图来描述上述过程:
后面还会写文章详细介绍安卓系统的初始化过程,并将重温上述过程
边栏推荐
猜你喜欢
随机推荐
LLVM系列第十章:控制流语句if-else-phi
NDK报错问题分析方案(一)
Flink-独立集群/Yarn
7.如何给RecyclerView添加Click和LongClick事件
1. What is RecyclerView
ConstraintLayout from entry to abandonment
【我的电赛日记(一)】HMI USART串口屏
IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but
PyTorch⑨---卷积神经网络_线性层
AAPT: error: duplicate value for resource ‘attr/xxx‘ with config ‘‘, file failed to compile.
VS2017中安装visual assist X插件
使用flutter小记
加强版Apktool堪称逆向神器
RN开发时遇到的问题
基于深度学习的配准框架
“自主可控”的正确姿势
LLVM系列第二十二章:写一个简单的编译时函数调用统计器(Pass)
Flink前期代码结构
PyTorch②---transforms结构及用法、常见的Transforms
科创知识年度盛会,中国科创者大会8月6日首场开幕!