您的位置:首页 > 移动开发 > Android开发

ANDROID Porting系列二、配置一个新产品

2010-07-15 18:01 120 查看
ANDROID Porting系列二、配置一个新产品

详细说明

下面的步骤描述了如何配置新的移动设备和产品的makefile运行android。

1.        
目录//vendor/创建一个公司目录

 mkdir vendor/<company_name>


2.        
创建一个目录下的公司与您在步骤1中创建产品目录.

 mkdir vendor/<company_name>/products/


3.        
创建一个特定于产品的 makefile,

调用 
vendor/<company_name>/products/<first_product_name>.mk
, 这至少包括以下代码:

 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)

 #

 # Overrides

 PRODUCT_NAME := <first_product_name>

 PRODUCT_DEVICE := <board_name>


4.        
附加产品特定的变量可以被添加到这个Product
Definition文件.

5.        
在产品目录中,创建一个AndroidProducts.mk文件指向(并找到负责)个别产品make files。

 #

 # 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.        
创建board-specific目录下贵公司的目录与相匹配的PRODUCT_DEVICE<board_name>引用变量在特定产品作出上述文件。这包括任何使用本产品访问product-specific make file.

 mkdir vendor/<company_name>/<board_name>


7.        
创建一个在上一步中创建文件的目录BoardConfig.mk
(vendor/<company_name>/<board_name>). 

 # These definitions override the defaults in config/config.make for <board_name>

 #

 # TARGET_NO_BOOTLOADER := false

 #

 TARGET_USE_GENERIC_AUDIO := true


8.        
如果你想修改系统属性,创建一个system.prop文件your <board_name> directory(vendor/<company_name>/<board_name>).

 # 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.    一个Android.mk文件必须包含在供应商/
<company_name> / <board_name>至少有下面的代码.

 # 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/<company_name>/<board_name>

 #

 include $(CLEAR_VARS)

 #

 # include more board specific stuff here? Such as Audio parameters.     

  #


11.    要创建一个相同的板第二个产品,创建第二个product-specific make file called vendor/company_name/products/<second_product_name>.mkthat
includes:

 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)

 #

 # Overrides

 PRODUCT_NAME := <second_product_name>

 PRODUCT_DEVICE := <board_name>


到现在为止,你应该有两个新产品,名为<first_product_name>和<company_name>相关<second_product_name>。为了验证一个产品是正确配置(<first_product_name>,例如),执行以下命令:

 . build/envsetup.sh

 make PRODUCT-<first_product_name>-user


你应该找到新的建设二进制文件位于out/target/product/<board_name>。

 

新产品文件树

该文件树下面说明你自己的系统应该完成上述步骤。

·                                
<company_name>

o                                                       
<board_name>

§                                                                                
Android.mk

§                                                                                
product_config.mk

§                                                                                
system.prop

o                                                       
products

§                                                                                
AndroidProducts.mk

§                                                                                
<first_product_name>.mk

§                                                                                
<second_product_name>.mk

产品定义文件

特定产品的变量定义在产品定义文件。一个产品的定义文件可以继承其他产品定义文件,从而减少了需要复制和简化维护。

变量在定义文件保持产品包括:

Parameter
Description
Example
PRODUCT_NAME
最终用户可见名称的整体产品。出现在“关于手机”信息。
 
PRODUCT_MODEL
最终用户可见的最终产品名称
 
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.
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"
 
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
 
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.
 
PRODUCT_TAGS
list of
space-separated words for a given 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


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐