Chinaunix首页 | 论坛 | 博客
  • 博客访问: 602971
  • 博文数量: 204
  • 博客积分: 5172
  • 博客等级: 上校
  • 技术积分: 2092
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-08 21:48
个人简介

一个毫无毅力之人的自勉

文章分类

全部博文(204)

文章存档

2014年(1)

2013年(54)

2012年(50)

2011年(94)

2010年(3)

2009年(3)

分类: LINUX

2011-09-08 21:54:44

配置新的product

细节介绍
以下步骤描述了怎么样去为新的手机设备和其他运行android的设备配置makefile

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

mkdir    vendor/

2. 创建一个products目录

mkdir     vendor//products/

3. 创建一个专门配置product的makefile,叫vendor/ /products/.mk。这个文件至少包括:

  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) 
  # # Overrides 
  PRODUCT_NAME :=  
  PRODUCT_DEVICE :=

4. 增加专门配置product的变量到上面的makefile中去(具体变量 见文章末)

5. 在product目录下创建AndroidProducts.mk,这个mk文件指明自己的product 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. 在公司目录下创建一个专门配置Board的目录 他将包括一个makefile文件,任何使用这个板的product都可访问这个makefile

mkdir    vendor//


7. 在上面创建的目录下,创建BoardConfig.mk文件

  # These definitions override the defaults in config/config.make for
  # # TARGET_NO_BOOTLOADER := false # TARGET_HARDWARE_3D := false 
  # TARGET_USE_GENERIC_AUDIO := true

8. 如果你希望修改系统的属性,就在目录下创建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. 在AndroidProducts.mk中增加.mk的指针

  PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/first_product_name.mk\                                                                $(LOCAL_DIR)/second_product_name.mk


10. 在vendor//目录下,必须包含一个Android.mk文件,这个mk文件至少包含以下内容:

  # make file for new hardware from # 
  LOCAL_PATH := $(call my-dir)

  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)
  LOCAL_PATH := vendor//
  include $(CLEAR_VARS)

11. 为同一个board创建第二个product,创建第二个product-specific makefile 文件,叫做.mk。这个文件包含:


$(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文件树

      • Android.mk
      • product_config.mk
      • system.prop
    • products
      • AndroidProducts.mk
      • .mk
      • .mk


product定义文件
ParameterDescriptionExample
PRODUCT_NAMEEnd-user-visible name for the overall product. Appears in the "About the phone" info.
PRODUCT_MODELEnd-user-visible name for the end product
PRODUCT_LOCALESA 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_PACKAGESLists the APKs to install.Calendar Contacts
PRODUCT_DEVICEName of the industrial designdream
PRODUCT_MANUFACTURERName of the manufactureracme
PRODUCT_BRANDThe brand (e.g., carrier) the software is customized for, if any
PRODUCT_PROPERTY_OVERRIDESList of property assignments in the format "key=value"
PRODUCT_COPY_FILESList 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_KEYSList of OTA public keys for the product
PRODUCT_POLICYIndicate which policy this product should use
PRODUCT_PACKAGE_OVERLAYSIndicate whether to use default resources or add any product specific overlaysvendor/acme/overlay
PRODUCT_CONTRIBUTORS_FILEHTML file containing the contributors to the project.
PRODUCT_TAGSlist of space-separated words for a given product


下面的代码片段介绍了一个典型的product定义文件
$(call inherit-product, build/target/product/generic.mk) 
PRODUCT_NAME := MyDevice 
PRODUCT_MANUFACTURER := acme 
PRODUCT_BRAND := acme_us 
PRODUCT_LOCALES := en_GB es_ES fr_FR 
PRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay


译自:http://www.kandroid.org/online-pdk/guide/build_new_device.html#androidBuildSystemProductDefFiles

阅读(1871) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~