Detailed Instructions

The steps below describe how to configure makefiles for new mobile devices and products running Android.

  1. Create a company directory in//vendor/.
      mkdir vendor/<company_name>
  2. Create aproductsdirectory beneath the company directory you created in step 1.
      mkdir vendor/<company_name>/products/
  3. Create a product-specific makefile, calledvendor/<company_name>/products/<first_product_name>.mk, that includes at least the following code, all values should contain no space:
      $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)    #    # Overrides    PRODUCT_NAME := <first_product_name>    PRODUCT_DEVICE := <board_name>
  4. Additional product-specific variables can be added to thisProduct Definitionfile.
  5. In theproductsdirectory, create anAndroidProducts.mkfile that point to (and is responsible for finding) the individual product 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. Create a board-specific directory beneath your company directory that matches thePRODUCT_DEVICEvariable<board_name>referenced in the product-specific make file above. This will include a make file that gets accessed by any product using this board.
      mkdir vendor/<company_name>/<board_name>
  7. Create aBoardConfig.mkfile in the directory created in the previous step (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    TARGET_CPU_ABI := x86
  8. If you wish to modify system properties, create asystem.propfile in 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. Add a pointer to<second_product_name>.mkwithinproducts/AndroidProducts.mk.
      PRODUCT_MAKEFILES := /    $(LOCAL_DIR)/first_product_name.mk /    $(LOCAL_DIR)/second_product_name.mk
  10. AnAndroidBoard.mkfile must be included invendor/<company_name>/<board_name>with at least the following code:
      # 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. To create a second product for the same board, create a second 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>

By now, you should have two new products, called<first_product_name>and<second_product_name>associated with<company_name>. To verify that a product is properly configured (<first_product_name>, for example), execute the following:

  . build/envsetup.shmake PRODUCT-<first_product_name>-user

You should find new build binaries located in/out/target/product/<board_name>.

New Product File Tree

The file tree below illustrates what your own system should look like after completing the steps above.

  • <company_name>
    • <board_name>
      • AndroidBoard.mk
      • BoardConfig.mk
      • system.prop
    • products
      • AndroidProducts.mk
      • <first_product_name>.mk
      • <second_product_name>.mk

Product Definition Files

Product-specific variables are defined in product definition files. A product definition file can inherit from other product definition files, thus reducing the need to copy and simplifying maintenance.

Variables maintained in a product definition files include:

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. 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

The snippet below illustrates a typical product definition file.

$(call inherit-product, build/target/product/generic.mk)#OverridesPRODUCT_NAME := MyDevicePRODUCT_MANUFACTURER := acmePRODUCT_BRAND := acme_usPRODUCT_LOCALES := en_GB es_ES fr_FRPRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android视图绘画与属性动画
  2. Android程序开发通过HttpURLConnection上
  3. [Android]attrs.xml文件中属性类型format
  4. Anroid中两台手机连接同一wifi通过socket
  5. Android(安卓)自定义View - 网络加载 Pro
  6. ros安装android
  7. Cocos2dx android 部分代码的理解
  8. Android:采用Google Suggest API 实现 Aut
  9. 2013.07.22(2)——— android 验证码与cook
  10. 在android中添加欢迎页