ANDROID Porting系列二、配置一个新产品
2010-07-15 18:01
120 查看
ANDROID Porting系列二、配置一个新产品
详细说明
下面的步骤描述了如何配置新的移动设备和产品的makefile运行android。
1.
目录//vendor/创建一个公司目录
2.
创建一个目录下的公司与您在步骤1中创建产品目录.
3.
创建一个特定于产品的 makefile,
调用
4.
附加产品特定的变量可以被添加到这个Product
Definition文件.
5.
在产品目录中,创建一个AndroidProducts.mk文件指向(并找到负责)个别产品make files。
6.
创建board-specific目录下贵公司的目录与相匹配的PRODUCT_DEVICE<board_name>引用变量在特定产品作出上述文件。这包括任何使用本产品访问product-specific make file.
7.
创建一个在上一步中创建文件的目录BoardConfig.mk
(vendor/<company_name>/<board_name>).
8.
如果你想修改系统属性,创建一个system.prop文件your <board_name> directory(vendor/<company_name>/<board_name>).
9.
products/AndroidProducts.mk添加一个指向<second_product_name>.mk,.
10. 一个Android.mk文件必须包含在供应商/
<company_name> / <board_name>至少有下面的代码.
11. 要创建一个相同的板第二个产品,创建第二个product-specific make file called vendor/company_name/products/<second_product_name>.mkthat
includes:
到现在为止,你应该有两个新产品,名为<first_product_name>和<company_name>相关<second_product_name>。为了验证一个产品是正确配置(<first_product_name>,例如),执行以下命令:
你应该找到新的建设二进制文件位于out/target/product/<board_name>。
新产品文件树
该文件树下面说明你自己的系统应该完成上述步骤。
·
o
§
§
§
o
§
§
§
产品定义文件
特定产品的变量定义在产品定义文件。一个产品的定义文件可以继承其他产品定义文件,从而减少了需要复制和简化维护。
变量在定义文件保持产品包括:
下面的代码段演示了一个典型的产品定义文件。
详细说明
下面的步骤描述了如何配置新的移动设备和产品的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
相关文章推荐
- ANDROID Porting系列二、配置一个新产品
- RHCSA 系列(九): 安装、配置及加固一个 Web 和 FTP 服务器
- WAS集群系列(17):WAS下修改某一个配置的操作流程(单节点+集群)
- Mybatis系列之-连接数据库的配置单独放在一个properties文件中
- Android 为一个新产品作编译配置(Product Definition Files)
- Android 为一个新产品作编译配置(Product Definition Files)
- 用户系列之六:多用户使用同一个配置文件之实战篇 推荐
- 一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过配置文件方式(六)
- Android 为一个新产品作编译配置(Product Definition Files)
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则 在系列(2)中我们展示了一个简单的get请求,并返回了一个简单的helloworld页面。本篇我们来学习如何来配置一个acti
- 【office365使用系列】用户如何配置office365客户端
- 如何配置idea使一个窗口包含多个工程
- 一个Filter配置多个url-pattern
- EXTJS学习系列基础篇:第四篇(转载)作者殷良胜,Ext中有两个很重要的方法,一个是decode;一个是encode.顾名思义,一个是编码,一个是解码,你难道真的这么想吗?严格的说,一个是将json字符串转换成对象;一个是将对象转换成json字符串
- Sencha Touch 2 快速入门系列(九) -- 配置(Profile)
- 一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用
- solr与.net系列课程(二)solr的配置文件及其含义
- Maven系列一pom.xml 配置详解
- [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上)
- WinForm:一个登陆窗体引发的问题系列(一):最简单的登陆窗口