Android源代码使用一个可定制的编译系统来生成 特定的,针对自己硬件平台的Android系统,比方不使用缺省的out/target/prodect/generic文件夹,
本文档简介了这个编译系统,并做一个针对自己硬件平台的Android,
这部分工作主要是由Android源码中的Vendor目录来实现,假设该目录不成立,
自己能够在Android源码的根目录下建立该目录,这个目录里面存放特定的文件,比方自己板子上的3G驱动,WIFI驱动,
自己的应用程序,都能够放在这里。提取文件系统的时候,能够把这个目录里面的东东放到文件系统里面,这样用户能够清晰的
看到你的板子特有的功能。
一、细节描写叙述
以下几步描写叙述了怎样配置makefile来为执行Android的设备编译系统。
1、在/vendor/文件夹下创建company文件夹
mkdir vendor/<company_name>
2、在company文件夹下创建一个 products文件夹
mkdir vendor/<company_name>/products/
3、创建一个设备相关的makefile:vendor/<company_name>/products/<first_product_name>.mk这个make文件里至少要包括以下代码:
$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)## OverridesPRODUCT_NAME := <first_product_name>PRODUCT_DEVICE := <board_name>
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这个变量中的<board_name>相匹配。这个文件夹下会包括一个make文件,这个make文件能够用以下的方式訪问到,比方:
mkdir vendor/<company_name>/<board_name>
7、在上步的文件夹(vendor/<company_name>/<board_name>)下,创建一个BoardConfig.mk文件
# These definitions override the defaults in config/config.make for <board_name>## TARGET_NO_BOOTLOADER := false#TARGET_USE_GENERIC_AUDIO := true
8、假设你想改动系统属性,在文件夹vendor/<company_name>/<board_name>下创建一个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文件里加入一个指向<second_product_name>.mk的引用。PRODUCT_MAKEFILES := /$(LOCAL_DIR)/first_product_name.mk /$(LOCAL_DIR)/second_product_name.mk
10、文件夹vendor/<company_name>/<board_name>下必须包括一个Android.mk文件,这个文件里至少包括以下的代码:# make file for new hardware  from #LOCAL_PATH := $(call my-dir)## this is here to use the pre-built kernelifeq ($(TARGET_PREBUILT_KERNEL),)TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernelendif#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/<company_name>/<board_name>#include $(CLEAR_VARS)## include more board specific stuff here? Such as Audio parameters.      #
11、想为同样的board创建第二个product时,创建一个名字为vendor/company_name/products/<second_product_name>.mk的make文件,这个文件里包括:
$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)## OverridesPRODUCT_NAME := <second_product_name>PRODUCT_DEVICE := <board_name>
眼下为止,你已经有了两个新product,<first_product_name>和<second_product_name>,都属于<company_name>。
验证一下一个product是否配置正确,执行. build/envsetup.shmake PRODUCT-<first_product_name>-user
在/out/target/product/<board_name>文件夹下,你能够看到生成的二进制文件。二、产品文件树
没有翻译三、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
本博客參考CSDN网友 http://blog.csdn.net/a345017062/archive/2010/12/24/6096807.aspx ,近期自己须要制作Vendor,很须要这种资料,在此感谢网友的博客。

转载于:https://www.cnblogs.com/mfrbuaa/p/4370969.html

Android ----制作自己的Vendor相关推荐

  1. 初识Android 制作一个简单的记账本

    初识Android 制作一个简单的记账本 主要功能 实现一个记账本页面 可以添加数据并更新到页面中 主要步骤 运行截图 主页面 点击红色按钮弹出添加页面 完成后自动更新到目录下 主要功能 实现一个记账 ...

  2. [转]android 制作.9.png图片 解决图形变形问题

    [转]android 制作.9.png图片 2012-8-10阅读1164 评论1 本文转自:http://xiaoming123123.iteye.com/blog/1489253 "点九 ...

  3. Android 制作一款短视频app软件可在线观看(视频实时更新)

    Android 制作一款短视频app软件可在线观看(视频实时更新) 第一步:完成界面的设计 界面布局采用LinearLayout,添加TextView控件显示标题,添加4个Button按钮可切换不同的 ...

  4. Android制作简易的调色器,并实现复制色值的功能

    Android制作简易的调色器,并实现复制色值的功能 我们上课老师让做的作业,参照别人的代码,可能不够完善,请大家见谅- 主要用到SeekBar控件 先展示效果图吧 点击复制的Button,弹出提示信 ...

  5. Android制作天气预报 —— 图片展示

    主要功能为天气查询.日历查看.语录显示,各个界面间的转换可以通过添加的按键或者设备自带返回键实现.系统运行调试结果如下: 动态视频链接:Android制作天气预报(展示)-CSDN直播 1.默认城市( ...

  6. android:制作 Nine-Patch 图片

    它是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而 哪些区域不可以. 那么 Nine-Patch 图片到底有什么实际作用呢?我们还是通过一个例子来看一下吧.比如 说项目中有一张气泡样式 ...

  7. android+制作一个锁屏,手机个性锁屏怎么做?教你如何制作DIY手机锁屏图文教程...

    制作DIY手机个性锁屏的方法很简单,只需下载一款软件即可自定义各种类型的壁纸来当做大家的个性化锁屏,具体教程小编将在本文告诉大家,希望能够帮助到大家.下面就一起来看看本教程吧 教你如何制作DIY手机锁 ...

  8. Android制作.9图

    前言:最近在做项目 需要图片作为背景 ,随着内容的长度宽度,背景跟随着扩大范围 问题:随着内容的增多,背景图片会失真 变形 . 解决:使用安卓的.9图可以解决这一问题 一 .9图的概念 .9图片是安卓 ...

  9. 手持弹幕android制作,手持弹幕LED字幕屏

    手持弹幕LED字幕屏是一款智能的LED滚屏软件,可以帮助用户在手机上制作字幕滚动屏,使用方法简单,用户只需要选择不同的背景.输入字幕内容,随时进行LED和手绘滚动选择,填写各种滚屏设置内容,让你多场景 ...

最新文章

  1. Cocos2d-x 处理双击事件的两种方法
  2. OpenCV边缘检测专题
  3. php两个数组去掉相同的,php如何删除两个数组中相同的数据
  4. linux opendir php,php opendir()列出目录下所有文件的实例代码
  5. oracle 慕课课程_“慕课”在Oracle数据库课程中的应用探讨
  6. 开工啦~Spring 完美导入 IDEA
  7. 蒙特卡罗模拟法 —— matlab
  8. git小技巧之分支、关联远程仓库、回滚、解决.gitignore不生效等
  9. python中赋值,深拷贝,浅拷贝区别
  10. 修改environment导致重启不能登录的问题解决
  11. canal下载 linux_阿里canal数据库同步ES使用
  12. 1110 Complete Binary Tree (25 分)(搜索)
  13. shell 运行shell脚本
  14. C语言获取窗口输入焦点,使按钮获得输入焦点 - rainbowcode的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. SCAU华南农业大学-数电实验-用74LS138实现1位的全加器
  16. 孤独,是优秀的必经之路
  17. WPF实战之DataGrid设置行高
  18. ❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备
  19. c# 桌面录屏,生成视频方案总结
  20. Revit建模如何一键“生成场地和基础垫层”

热门文章

  1. Javascript 或运算的判断小问题
  2. 不是VIP用户也不怕 不需任何补丁屏蔽迅雷广告!
  3. Class Activation Mapping (CNN可视化) Python示例
  4. 【数据平台】基于pymysql库python连接mysql
  5. 机器学习知识点(三十)LDA话题模型Java实现
  6. Gumbel-Softmax Trick和Gumbel分布 附VAE讲解
  7. 深度学习中张量flatten处理(flatten,reshape,reduce)
  8. python脚本中执行另一个脚本_如何用python调用另一个python脚本?
  9. 线程池配置合理线程数?
  10. Salesforce平台入门