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

ANDROID Porting系列二、配置一个新产品的更多相关文章

  1. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...

  2. Android Studio复制项目作为一个新的工程

    Android Studio复制项目作为一个新的工程 等待..... 好了 可能会安装失败 Failed to finalize session : INSTALL_FAILED_INVALID_AP ...

  3. NEXT | 不错过任何一个新产品

    NEXT | 不错过任何一个新产品 NEXT 不错过任何一个新产品

  4. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(下)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  5. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(完)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  6. C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

    系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...

  7. Android画图系列(二)——自己定义View绘制基本图形

    这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...

  8. Android集成一个新产品时,lunch的product name和device name注意事项

    Android系统lunch一个当前的Product大概流程包括下面几个部分: 1. lunch确定TARGET_PRODUCT.一般位于vendor/device/build/target/prod ...

  9. ANDROID Porting系列一、ANDROID编译系统

    译自:http://source.android.com/porting/build_system.html Android使用一个自定义生成系统生成工具,二进制文件和文档.本文档提供了一个建立And ...

随机推荐

  1. oracle redo日志维护

    环境 OS:Red Hat Linux As 5 DB:10.2.0.1 1.添加日志组 alter database add logfile group 4 ('/u01/app/oracle/or ...

  2. Linux使用fdisk进行磁盘管理

            Fdisk分区工具1. Overview*Fdisk是IBM的老牌分区工具,支持绝大多数操作系统,几乎所有的Linux操作系统都默认装有fdisk:包括在Linux Rescue模式下 ...

  3. html-----002

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. C++专题 - 面向对象总结

    1.         什么是类?什么是对象?对象与类的关系是什么? 答:类就是相同的数据和相同的一组对象的集合,即类是对具有相同数据结构和相同操作的一类对象的描述: 对象是描述其属性的数据以及对这些数 ...

  5. 【elasticsearch】(1)centos7 使用yum安装elasticsearch 2.X

    前言 elasticsearch(下面称为ES)是一个基于Lucene的搜索服务器(By 百度百科:查看).所以他需要java的环境即jdk,这里提供懒人一键安装方式 # yum install ja ...

  6. PHP导出excel信息表格

    //导出表格public function get_exel($fileName,$headArr,$list){//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入 ...

  7. js简版定时器

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. CodeIgniter框架介绍

    入口 index.php :一些路径常量定义: => CodeIgniter.php : 1. 初始化一些 system/core内的类,例如Config, Utf8, URI 和Router等 ...

  9. Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

    由浅入深,主要介绍maven的用途.核心概念(Pom.Repositories.Artifact.Build Lifecycle.Goal).用法(Archetype意义及创建各种项目).maven常 ...

  10. Android APK安装过程介绍

    课题路径:从Myfile中点击应用进行安装,到安装完成,过程分析 思想方法:在研究PreloadInstaller的时候我们直接从整个apk的文件结构入手,由整体到部分的分析:但现在整个PMS非常庞大 ...