<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評(píng)論-598  文章-0  trackbacks-0

    Configuring a New Product

    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 a products directory beneath the company directory you created in step 1.
        mkdir vendor/<company_name>/products/
    3. Create a product-specific makefile, called vendor/<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 this Product Definition file.
    5. In the products directory, create an AndroidProducts.mk file 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 the PRODUCT_DEVICE variable <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 a BoardConfig.mk file 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 a system.prop file 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>.mk within products/AndroidProducts.mk.
        PRODUCT_MAKEFILES := \
          $(LOCAL_DIR)/first_product_name.mk \
          $(LOCAL_DIR)/second_product_name.mk
    10. An AndroidBoard.mk file must be included in vendor/<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>.mk that 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.sh
    make 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:

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

    The snippet below illustrates a typical product definition file.

    $(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
    



    ---------------------------------------------------------
    專注移動(dòng)開發(fā)

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-09-24 11:11 TiGERTiAN 閱讀(771) 評(píng)論(0)  編輯  收藏 所屬分類: AndroidLinux
    主站蜘蛛池模板: 伊人免费在线观看| 亚洲AV无码国产剧情| eeuss影院免费92242部| 日本一道综合久久aⅴ免费| 亚洲一卡2卡3卡4卡5卡6卡 | 日韩在线视频免费看| 一区二区亚洲精品精华液| 成人性生交大片免费看无遮挡 | 国产成人综合亚洲亚洲国产第一页| 男人免费视频一区二区在线观看| 一区二区三区亚洲视频| 日韩精品无码免费视频| 亚洲综合在线另类色区奇米| 国产精品免费看久久久| 亚洲理论在线观看| 日本一道在线日本一道高清不卡免费| 国产精品亚洲精品爽爽| 国产亚洲一区区二区在线 | 日本红怡院亚洲红怡院最新 | 久久国产乱子免费精品| 亚洲成AV人综合在线观看| 毛片a级三毛片免费播放| 国产亚洲高清在线精品不卡| 国产亚洲精品无码专区| 三年片在线观看免费观看大全一| 456亚洲人成在线播放网站| 国产嫩草影院精品免费网址| 中文字幕无线码中文字幕免费| 久久99亚洲网美利坚合众国| 久久WWW色情成人免费观看| 杨幂最新免费特级毛片| 亚洲成人免费在线| 免费高清资源黄网站在线观看| 国产精品午夜免费观看网站| 亚洲精品欧洲精品| 免费人成视频在线观看不卡| 四虎国产精品永久免费网址 | 亚洲乱码无人区卡1卡2卡3| 亚洲色爱图小说专区| 在线永久免费的视频草莓| 日韩大片在线永久免费观看网站|