编译android vendor,Android ----制作自己的Vendor
2011-03-22 15:36 489人阅读 评论(0)
Android源码使用一个可定制的编译系统来生成 特定的,针对自己硬件平台的Android系统,比如不使用缺省的out/target/prodect/generic目录, 本文档简单介绍了这个编译系统,并做一个针对自己硬件平台的Android, 这部分工作主要是由Android源代码中的Vendor文件夹来实现,如果该文件夹不成立, 自己可以在Android源代码的根目录下建立该文件夹,这个文件夹里面存放特定的文件,比如自己板子上的3G驱动,WIFI驱动, 自己的应用程序,都可以放在这里。提取文件系统的时候,可以把这个文件夹里面的东东放到文件系统里面,这样用户可以清晰的 看到你的板子特有的功能。
一、细节描述 下面几步描述了如何配置makefile来为运行Android的设备编译系统。
1、在/vendor/目录下创建company目录 mkdir vendor/
2、在company目录下创建一个 products目录 mkdir vendor//products/
3、创建一个设备相关的makefile:vendor//products/.mk这个make文件中至少要包含下面代码: $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) # # Overrides PRODUCT_NAME := PRODUCT_DEVICE :=
4、在产品定义文件中添加设备相关的变量。
5、在products目录下,创建一个AndroidProducts.mk文件,这个文件指向设备的make文件。 # # This file should set PRODUCT_MAKEFILES to a list of product makefiles # to expose to the build system. LOCAL_DIR will already be set to # the directory containing this file. # # This file may not rely on the value of any variable other than # LOCAL_DIR; do not use any conditionals, and do not look up the # value of any variable that isn't set in this file or in a file that # it includes. # PRODUCT_MAKEFILES := / $(LOCAL_DIR)/first_product_name.mk /
6、在company目录下创建一个包含特定board特征的目录,这个目录需要与PRODUCT_DEVICE这个变量中的相匹配。这个目录下会包含一个make文件,这个make文件可以用下面的方式访问到,比如: mkdir vendor//
7、在上步的目录(vendor//)下,创建一个BoardConfig.mk文件 # These definitions override the defaults in config/config.make for # # TARGET_NO_BOOTLOADER := false # TARGET_USE_GENERIC_AUDIO := true
8、如果你想修改系统属性,在目录vendor//下创建一个system.prop文件。 # system.prop for # This overrides settings in the products/generic/system.prop file # # rild.libpath=/system/lib/libreference-ril.so # rild.libargs=-d /dev/ttyS0
9、在products/AndroidProducts.mk文件中添加一个指向.mk的引用。 PRODUCT_MAKEFILES := / $(LOCAL_DIR)/first_product_name.mk / $(LOCAL_DIR)/second_product_name.mk
10、目录vendor//下必须包含一个Android.mk文件,这个文件中至少包含下面的代码: # make file for new hardware from # LOCAL_PATH := $(call my-dir) # # this is here to use the pre-built kernel ifeq ($(TARGET_PREBUILT_KERNEL),) TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel endif # file := $(INSTALLED_KERNEL_TARGET) ALL_PREBUILT += $(file) $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP) $(transform-prebuilt-to-target) # # no boot loader, so we don't need any of that stuff.. # LOCAL_PATH := vendor//# include $(CLEAR_VARS) # # include more board specific stuff here? Such as Audio parameters. #
11、想为相同的board创建第二个product时,创建一个名字为vendor/company_name/products/.mk的make文件,这个文件中包含: $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) # # Overrides PRODUCT_NAME := PRODUCT_DEVICE := 目前为止,你已经有了两个新product,和,都属于。 验证一下一个product是否配置正确,运行 . build/envsetup.sh make PRODUCT--user 在/out/target/product/目录下,你可以看到生成的二进制文件。
二、产品文件树 没有翻译
三、product定义文件 不同的产品,在它的product定义文件中会对一些变量赋予不同的值,product定义文件可以从其它product定义文件中继承。 Product定义文件中包含的变量如下:
Parameter
Description
Example
PRODUCT_NAME
End-user-visible name for the overall product. Appears in the "About the phone" info.
PRODUCT_MODEL
End-user-visible name for the end product
PRODUCT_LOCALES
A space-separated list of two-letter language code, two-letter country code pairs that describe several settings for the user, such as the UI language and time, date and currency formatting. The first locale listed in PRODUCT_LOCALES is is used if the locale has never been set before.
地区标识
en_GB de_DE es_ES fr_CA
PRODUCT_PACKAGES
Lists the APKs to install.
在这个product中要安装的APK列表。
Calendar Contacts
PRODUCT_DEVICE
Name of the industrial design
生产商的名字
dream
PRODUCT_MANUFACTURER
Name of the manufacturer
制造商的名字
acme
PRODUCT_BRAND
The brand (e.g., carrier) the software is customized for, if any
软件定制后的分支标识。
PRODUCT_PROPERTY_OVERRIDES
List of property assignments in the format "key=value"
属性列表,以"key=value"形式列出。
PRODUCT_COPY_FILES
List of words like source_path:destination_path. The file at the source path should be copied to the destination path when building this product. The rules for the copy steps are defined in config/Makefile
当编译时,源路径上的文件会被复制到目标路径上去,具体的复制规则在config/Makefile中定义。
PRODUCT_OTA_PUBLIC_KEYS
List of OTA public keys for the product
PRODUCT_POLICY
Indicate which policy this product should use
PRODUCT_PACKAGE_OVERLAYS
Indicate whether to use default resources or add any product specific overlays
vendor/acme/overlay
PRODUCT_CONTRIBUTORS_FILE
HTML file containing the contributors to the project.
包含了项目贡献者名字列表的HTML文件。
PRODUCT_TAGS
list of space-separated words for a given product
下面给出了一个经典的product定义文件 $(call inherit-product, build/target/product/generic.mk) #Overrides PRODUCT_NAME := MyDevice PRODUCT_MANUFACTURER := acme PRODUCT_BRAND := acme_us PRODUCT_LOCALES := en_GB es_ES fr_FR PRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay
编译android vendor,Android ----制作自己的Vendor相关推荐
- android 镜像文件制作
一:update.zip包的制作 1:新建一个目标,在此目录下准备好需要的文件,如system目录文件.boot.img.recovery.img等. mkdir testupdate ...
- 20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题
20211129编译RK3399的Android发生编译服务器的CPU看门狗软件死锁的问题 2021/11/29 10:39 出现的问题: Message from syslogd@rootroot- ...
- Android 差分包制作流程分析
整包与差分包生成流程 差分包生成指令 make otapackage 将编译生成的(xxx项目为例) out/target/product/xxxxxxx/full_xxx_hxxxx-target_ ...
- Android编译及编译脚本、Android构建基础学习笔记
Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...
- Android 进阶——Android 系统的基础术语和编译的相关理论小结
文章大纲 引言 一.Android系统的分区 1./boot 引导分区 2./system 系统分区 3./recovery 恢复分区 刷入RE: 4./data 用户数据区 5./cache 数据缓 ...
- Android OTA升级包制作和验证
几个概念 **整包升级:**即整个Rom的数据都升级,所以升级包较大,但对要升级的目标系统的版本没有限制 **增量升级:**即只升级有变化的部分,所以升级包较小,但只能针对做比对的俩个系统版本之间来升 ...
- Android ROM的制作与烧录
Android编译生成的三个镜像文件 Android源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdat ...
- Android SDK 的制作
项目中制作SDK 1.aar包是Android studio下打包Android工程中src.res.lib后生成的aar文件,aar包导入其他Android studio 工程后,其他工程可以方便引 ...
- 【iOS-cocos2d-X 游戏开发之十六】Cocos2dx编译后的Android自动使用(-hd)高清图设置自适应屏幕...
本篇主要介绍Cocos2dx项目开发过程中或者说项目务必遇到的一些知识点(ps.貌似Himi博客写的都是务必的 :tx: Himi认为写别人没写的才更容易吸引人不是-) OK,不多说废话,第一个介绍 ...
- Android 马甲包制作流程
一.马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android {signingConfigs {config ...
最新文章
- RxJava 内置多种用于调度的线程类型
- Firebug高级用法 - Web开发的利器
- Linux CentOS7 rsync通过服务同步、linux系统日志、screen工具
- python程序设计基础考试题库及答案_智慧职教Python程序设计基础题库及答案
- tinyhttpd源码详解
- (转)浅析CSS——元素重叠及position定位的z-index顺序
- ipc$远程连接计算机的指令,通过IPC$***,通过命令开启远程协助,。。
- 动漫品牌“爆笑虫子”宣布与xNFT Protocol战略合作,开发NFT数字卡牌游戏
- Django 第十课 1.【ORM模型】
- CSDN 勤写标兵勋章 颁发规则
- jenkins中eclipse+ant+svn自动打包APK
- 14.凤凰架构:构建可靠的大型分布式系统 --- 资源与调度
- <Android开发> Android开发工具- 之-I2C TOOLS工具使用
- 匹配区县代码_北京各区县代码都是多少?
- 苹果开发者中心添加UDID设备教程(及获取苹果手机的UDUD)
- js获取上周、本周、上月、本月、第一天和最后一天
- 做软件开发,客户难找?接单难?怎么办?
- 超级好看又易上手教你用python画樱花
- html获取数组的前三个元素,web前端:js 获取数组最后一个元素
- 毕业至今,微博写给自己的感悟的话
热门文章
- 基于Matlab的数字水印设计——基于空域的水印处理系统
- 梯度下降优化算法Momentum
- android 车载安富蓝牙电话开发,Android平台BLE低功耗蓝牙开发
- UE4 C++编程入门整理
- IP-SAN和FC-SAN存储的区别
- 申请苹果开发者公司账号和邓白氏编码全流程
- 渐进符号与基本效率类型
- 1308:【例1.5】高精除
- UE4 角色添加武器后 移动出现漂移
- 【Unity 框架】QFramework v1.0 使用指南 架构篇:05. 引入 Utility | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏