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 calledvendor/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

oproducts

§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 likesource_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

更多相关文章

  1. 一步一步学习androidNDK编程(java给c传递数据)
  2. Android简单自定义圆形和水平ProgressBar
  3. android背景选择器selector用法
  4. Android(安卓)Studio 之 AndroidManifest.xml文件中的android:la
  5. 在Android中自定义IOS风格的按钮
  6. Androidの自定义对话框AlertDialog(一)
  7. 安装android sdk 遇到几个问题
  8. android:sharedUserId="android.uid.system" 系统级权限并重新系
  9. android studio打包apk时遇见的一些问题

随机推荐

  1. 浅谈android的selector背景选择器
  2. Android(安卓)Intent实现页面跳转的方法
  3. Android(安卓)Handler机制之Message的发
  4. Android(安卓)布局之TableLayout
  5. Android中Activity启动模式详解
  6. android 屏幕方向切换 锁定方向
  7. Android中的几种网络请求方式详解
  8. Android评分控件RatingBar使用实例解析
  9. 安卓开发36:layout对齐属性总结
  10. [Android]调试webview