当前位置:网站首页>为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变量的值。
使用一张图来描述上述过程: 
后面还会写文章详细介绍安卓系统的初始化过程,并将重温上述过程
边栏推荐
- ConstraintLayout from entry to abandonment
- 一文带你快速掌握Kotlin核心技能
- LLVM系列第二十章:写一个简单的Function Pass
- GPT2计算流程详解
- MySQL知识总结 (八) InnoDB的MVCC实现机制
- AAPT: error: duplicate value for resource ‘attr/xxx‘ with config ‘‘, file failed to compile.
- PyTorch(11)---卷积神经网络_一个小的神经网络搭建model
- 执行npm install有错误error
- “自主可控”的正确姿势
- 详解RecyclerView系列文章目录
猜你喜欢
随机推荐
LLVM系列第八章:算术运算语句Arithmetic Statement
自定义圆形seekBar,超简单
基于51单片机和物联网的智能家居系统(ESP8266物联网模块)
两个surfaceview的重叠效果类似直播效果中的视频和讲义实践
【深度学习中的损失函数整理与总结】
执行npm install有错误error
LLVM系列第七章:函数参数Function Arguments
利用红外-可见光图像数据集OTCBVS打通图像融合、目标检测和目标跟踪
PyTorch(11)---卷积神经网络_一个小的神经网络搭建model
Pytorch(16)---搭建一个完整的模型
可以拖拽的ViewGroup,仿微信拖拽缩放关闭
神经网络可以解决一切问题吗:一场知乎辩论的整理
基于深度学习的配准框架
没学好统计学的下场
checkPermissions Missing write access to /usr/local/lib
蓝牙温度检测系统(基于BT08-B蓝牙模块)
5.使用RecyclerView优雅的实现瀑布流效果
Scala连接Mysql数据库
NDK入门篇:C语言基础
MySQL 8.0 新特性








