Chinaunix首页 | 论坛 | 博客
  • 博客访问: 917141
  • 博文数量: 75
  • 博客积分: 6236
  • 博客等级: 准将
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-03 14:43
文章分类

全部博文(75)

文章存档

2019年(1)

2018年(6)

2017年(4)

2015年(1)

2014年(9)

2013年(1)

2012年(3)

2011年(9)

2010年(3)

2009年(2)

2008年(4)

2007年(24)

2006年(8)

我的朋友

分类: 嵌入式

2011-09-01 12:31:58

 
Android ----制作自己的Vendor
分类: Android 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
阅读(7209) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~