zoukankan      html  css  js  c++  java
  • ANDROID Porting系列二、配置一个新产品

    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 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
  • 相关阅读:
    Python代码优化概要
    OllyDbg 使用笔记 (一)
    Java报表FineReport在医院院长查询分析系统中有什么用
    MongoDB下载安装測试及使用
    你不可能讲清楚的4个开源协议!!!
    MR之SequenceFile具体解释
    深入浅出AOP(四)--AOP的实现步骤
    SRM 587 Div II L3:ThreeColorabilityEasyy
    转义及编码(u, x)
    转义及编码(u, x)
  • 原文地址:https://www.cnblogs.com/biglucky/p/4226243.html
Copyright © 2011-2022 走看看