为android系统添加产品的过程

在AOSP源代码树中添加新Product 为了区分二者,可以将“device”看作是与硬件相关的芯片平台级配置的领域,将“product”视为与软件相关的配置的领域。这四个元素分别放置在两个不同的目录中:制造商的产品配置放置在“device”目录中,Google官方内置的AOSP产品放置在“build/target”目录中。在之前关于编译Android内置产品进行验证的基础上,我们现在将注意力转向添加自己的产品的过程。这种简单直接的方法简化了硬件配置方面的工作,并确保与aosp_x86_64产品兼容,使其易于理解和使用。 阅读详情

当我们要新增一款产品的时候,首先要在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变量的值。
使用一张图来描述上述过程:
这里写图片描述

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

ImageNet分类实战:用PyTorch复现AlexNet的5个关键技巧(附代码) 本文详细介绍了使用PyTorch复现经典AlexNet模型进行ImageNet图像分类的五个关键工程技巧。内容涵盖模型架构的现代重构、训练策略优化、核心组件实现与替代方案,以及实用的训练调试方法,并提供了完整的代码示例,帮助开发者深入理解深度卷积神经网络的实现细节与优化思路。 阅读详情

相关推荐

Hermes Dashboard Web 端部署完整说明

通过反向代理(nginx)使用公网域名访问时,会遇到 Host 头校验、CORS 跨域、WebSocket 连接拒绝三个核心问题。本文档记录了完整的源码修改方案和部署步骤。确保 nginx 主配置加载了 WebSocket map(宝塔默认为。路径的公开访问(无需登录),其他路径仍受 Cookie 认证保护。Hermes Dashboard 默认绑定。访问站点时会先弹出浏览器密码框,输入用户。在 nginx 反向代理配置中的。环境变量动态读取允许的域名。nginx 配置中已添加。

大白菜代码的博客 800

Android编译系统介绍

1. 编译系统变化 Android 最初是用 Android.mk 来定义模块的, Android.mk 本质上就是 Makefile。随着 Android 工程越来越大,包含的模块越来越多,以 Makefile 组织的项目编译花费的时间越来越多。google 在 Android 7.0 开始引入了 ninja 编译系统。相对于 make 来说 ninja 在大的项目管理中速度和并行方面有突出的...

Android系统攻城狮 2379

2025反爬终极方案:Python破解Cloudflare v2行为指纹,设备伪装+轨迹模拟拦截率压至1%

Cloudflare v2的反爬逻辑越来越接近“人类行为识别”,单纯的技术破解已失效,核心竞争力变成“模拟真实用户的能力”。本文的终极方案本质是“全方位复刻人类行为”——从设备指纹到操作轨迹,从网络特征到交互模式,让爬虫成为“无法被区分的真实用户”。这套方案的优势是“通用性强”,不仅适用于Cloudflare v2,也能破解大多数高反爬网站(如小红书、知乎、跨境电商)的行为检测;且代码可直接复用,新手只需替换目标URL和数据提取逻辑,就能快速落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2353

[Android][Build]LOCAL_MODULE_TAGS和PRODUCT_PACKAGES--指定编译进Image的模块

LOCAL_MODULE_TAGS位于模块Android.mk文件中,大约可以取值:user: 指该模块只在user版本下才编译 eng: 指该模块只在eng版本下才编译 tests: 指该模块只在tests版本下才编译 optional: 指该模块在所有版本下都编译可参考: http://www.cnblogs.com/eustoma/archive/2012/05/25/2518418.htm

w8u的专栏 8276

echarts的坐标轴处理算法

参考原文:https://www.cnblogs.com/vicky-li/p/11653415.html。2、可用于双轴的情况,指定splitNumber,保证左右两边的线没有交叉显示的情况。1、设置echarts显示的最大最小值,让数据显示比较有起伏。处理echarts的一些问题。

HYeeee的博客 801

Ubuntu20.04 高效安装企业微信的完整指南

本文提供了在Ubuntu20.04系统上高效安装企业微信的完整指南,详细介绍了通过Deepin-wine环境运行Windows版企业微信的步骤和优化技巧。内容包括系统环境检查、依赖安装、企业微信包的获取与安装、首次运行配置及常见问题解决方案,帮助开发者在Ubuntu系统中流畅使用企业微信进行办公通讯。

weixin_42568801的博客 351

PRODUCT_PACKAGES

PRODUCT_PACKAGES指定make时需要编译进system中的包,这部分虽然也生成apk,但用户是删不掉的,build/target/product/generic.mk中指定android系统自带的应用程序包PRODUCT_PACKAGES := \   在device/amlogic/c03ref/c03ref.mk中增加芯片原厂的应用程序包PRODUCT_PACKAGES += ...

micro9981的专栏 1万+

基于Freertos与lwip移植FreeModbusTcp协议

基于FreeRTOS的N32G457VEL7之LWIP网络协议栈移植-优快云博客。

Dd_456456的博客 3238

Android - 模块添加与编译

Android5.1 Ubuntu14.04 Android系统编译依靠.mk文件 添加google服务 我们自己的ROM里没有google服务 完整的google包里包含google框架和各种服务,我们可以选择性安装模块 在google包里products目录下,有一个gms.mk文件(或者自己起名字) gms.mk管理着要安装的各个模块,找到...

weixin_34168700的博客 663

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南——OpenClaw的赚钱底层逻辑与“记忆”革命

AI 的商业价值不在于替代思考,而在于沉淀关系。当 Agent 记住你的偏好、你的历史、你的目标,它就不再是冷冰冰的软件,而是成为数字化的关系资产。这种资产的稀缺性不在于技术复杂度,而在于时间无法被压缩——你无法用更好的算法替代 3 个月的协作记忆。在这场“记忆革命”中,护城河不是模型参数,而是用户与 AI 共同书写的历史。OpenClaw 用一套优雅的文件系统架构,将这种历史转化为可积累、可复用、可变现的数字资产。从“计算即服务”(CaaS)到“记忆即服务”(MaaS)。

冯·诺依曼 1341

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1548

Android OTA升级(1):编译升级全包

田海立@优快云2013-3-23      Android原生系统中就已经支持OTA升级。所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件。一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级。     OTA升级首要是生成OTA升级包,升级包又分为升级全包和升级差分包(或要增量包)。升级全包是编译当前系统得到的软件包,这个包很大,有上百兆,但是不依赖与当前手机

田海立@优快云 2万+

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 3452

Android系统中添加一个产品----图文详解

转载自:http://www.2cto.com/kf/201412/365040.html 本文本着开源的精神介绍如何向一个Android系统中添加一个产品的整个过程,按照以下过程笔者有理由相信每个将要从事本行业的人都可以完成,其实添加一个产品并不难,难的是对其相关硬件的修改,好了废话不多说。 首先我们要创建一个属于自己产品的目录,这里以WY_device为例,以WY作为产品的名字。 首先从

三言两语 872

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

向Android系统中添加模块及产品流程

添加Android模块  一、基础知识: (1)在Android系统中,编译都是以模块(而不是文件)作为单位的,每个模块都有一个唯一的名称; (2)为了将模块编译到Android系统中,每个模块都需要一个专门的Make文件,也即是“Android.mk”文件; 二、实现hello.c 模块的编写  1. 如在 hardware/test目录

Joki 2361

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制

4.3定制Android平台系统通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品,从本节开始,我们从最原始的Android源码系统里一步一步定制出自己的Android系统。本节主要内容包含:根据Android源码,添加新产品编译项,定制系统启动界面和文字,定制系统启动动画和声音,定制系统桌面。4.3.1 添加新产品编译项Android系统的源代码

mr_raptor的专栏 7万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android 编译过程

1. 编译步骤 1.1 谷歌给出的官方编译步骤 1> source build/envsetup.sh: 加载命令和分支 2> lunch: 选择平台(分支)以及平台相关的编译选项 3> make: 执行编译 1.2 产品公司的编译步骤 SOC厂商和产品公司编译 Android 源代码时的步骤与谷歌官方给出的编译步骤是一样的,SOC厂商和产品公司只需要在Android给定的框架下添加自己项目专属的配置文件和配置目录,然后再编译时通过 lunch

四季帆的博客 4152

Android Build System ---- how to add your product and board config *.mk

helpbs 114

Android系统开发小知识-在android产品开发中添加新的编译模块

<br />Android开发中用户内容定义在vendor目录下,而用户产品的内容都定义在vendor/<company_name>/<board_name>目录下<br /> 如果需要添加新的内容,可以在该目录下新建子目录,同时修改AndroidBoard.mk文件即可。比如说要添加一个按键映射文件:<br /> (1)在vendor/<company_name>/<board_name>目录下建立一个keymaps子目录<br /> (2)将我们需要的按键映射文件gpio-keys.kl和powe

5324

Android编译过程详解(一)

Android的优势就在于其开源,手机和平板生产商可以根据自己的硬件进行个性定制自己的手机产品,如小米,LePhone,M9等,因此,在我们在对Android的源码进行定制的时候,很有必要了解下,Android的编译过程。 如果你从来没有做过Android代码的编译,那么最官方的编译过程就是查看Android的官方网站:http://source.android.com/source/bui

henryjee的专栏 532

深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制【转】

本文转载自: 4.3定制Android平台系统 通常产品厂商在拿到Android源码后会在android源码基础上进行定制修改,以匹配适应自己的产品,从本节开始,我们从最原始的Android源码系统里一步一步定制出自己的Android系统。本节主要内容包含:根据Android源码,添加新产品编译项,定制系统启动界面和文字,定制系统启动动画和声音,定制系统桌面。 4.3.1添加新产...

183

Android系统编译原理

[1] 历史     2003年Android公司成立,系统开发     2005年Android被google收购     2007年11月5日,google公司推动成立手机开发联盟(HAL)     2008年9月Android 1.0正式发布,HTC G1使用      [2] 如何研究学习系统?     1. 了解系统        (1) 架构        (2) 内

安静的美男子 3394

android系统编译 局部_android系统编译过程详解

第一部分:概述在研究Android编译系统之前,我们首先需要了解Linux系统的make命令。在Linux系统中,我们可以通过make命令来编译代码。Make命令在执行的时候,默认会在当前目录找到一个Makefile文件,然后根据Makefile文件中的指令来对代码进行编译。也就是说,make命令执行的是Makefile文件中的指令。Makefile文件中的指令可以是编译命令,例如gcc,也可以是...

weixin_39795479的博客 901

Android R(11)将HIDL服务添加到系统镜像(七)

1.添加自定义makefile文件到产品   前面几章介绍的方法一般用于开发阶段,在功能开发完成后,则需要集成到系统镜像中去。我们使用的产品则是aosp_x86_64 TARGET_PRODUCT=aosp_x86_64   所以需要将自定义的makefile文件添加到产品的配置makefile中去, --- a/target/product/aosp_x86_64.mk +++ b/target/product/aosp_x86_64.mk @@ -63,6 +63,7 @@ $(call inheri

flagstaff's blogs 3071

android aosp下写apk,android – 将.apk文件添加到aosp

添加第三方APK到构建是绝对可能的。还有源码的APK和APPs都到同一个地方;包/应用程序文件夹。添加一个新的APK到构建在AOSP根添加文件夹:< aosp root> / package / app /< yourappfolder>然后在这个文件夹里添加:>空的Android.mk>< yourapp.apk>android make文件应该有...

weixin_31262911的博客 692
上一篇: 剖析安卓build系统的设计思想以及案例模拟
下一篇: source /build/envsetup.sh和lunch)
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值