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. |
|
|
PRODUCT_PACKAGES |
Lists the APKs to install. |
|
|
PRODUCT_DEVICE |
Name of the industrial design |
|
|
PRODUCT_MANUFACTURER |
Name of the manufacturer |
|
|
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 |
|
|
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 |
|
|
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系列二、配置一个新产品的更多相关文章
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...
- Android Studio复制项目作为一个新的工程
Android Studio复制项目作为一个新的工程 等待..... 好了 可能会安装失败 Failed to finalize session : INSTALL_FAILED_INVALID_AP ...
- NEXT | 不错过任何一个新产品
NEXT | 不错过任何一个新产品 NEXT 不错过任何一个新产品
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(下)
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(完)
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...
- C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)
系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...
- Android画图系列(二)——自己定义View绘制基本图形
这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...
- Android集成一个新产品时,lunch的product name和device name注意事项
Android系统lunch一个当前的Product大概流程包括下面几个部分: 1. lunch确定TARGET_PRODUCT.一般位于vendor/device/build/target/prod ...
- ANDROID Porting系列一、ANDROID编译系统
译自:http://source.android.com/porting/build_system.html Android使用一个自定义生成系统生成工具,二进制文件和文档.本文档提供了一个建立And ...
随机推荐
- Windows环境下使用cygwin ndk_r9c编译FFmpeg
一.废话 最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,一步步来.先来讲一下FFmpeg,网上说的很多都是几百年前的,我亲测完美可用 联系我可以直接评论,也可以加我Q ...
- 如何获得Windows 8中已记住的WIFI的明文密码
网上很流行的一种查看WIFI密码明文的方法,如下: 今天遇到了一种状况,就是如果不连WIFI的情况我能抓到这个密码吗?(实在不想开口问同事密码多少,只能苦逼的自己想办法了o(︶︿︶)o ) 答案当然是 ...
- NoSql之Redis使用(一)
一.安装 1.下载安装包: 官方网站:redis.io 官方推荐windows版本:https://github.com/MSOpenTech/redis 2:下载压缩包,解压后如下 redis-se ...
- Net常用资源小集
Visual Studio——IDEs工具之王,.NET开发者的必备IDE.Visual Studio提供非常强大的启动工具箱,并且还有一些让人惊喜的插件支持.在去年,微软发布了Visual Stud ...
- js上传图片并预览
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- C#如何释放已经加载的图片 (转)
使用Image.FromFile取磁盘上的图片时,这个方法会锁定图片文件,而且会导致内存占用增大, 有几种方法解决: 一:将Image类转换成Bitmap类 System.Drawing.Image ...
- myeclipse 项目运行时报错:运行项目时报错:Could not publish server configuration for Tomcat v6.0 Server at localhost. Multiple Contexts have a"/"
1.先去E:\PLZT\workspace\.metadata\.plugins\org.eclipse.wst.server.core.sever.xml看里面是否存在两个配置是的话删除一个重启服务 ...
- jQuery的延迟对象
之前看别人的demo,发现在延迟对象被resolve时要执行的代码,有时会写在deferred.then方法里执行,有时会写在deferred.done方法里执行. 这让对延迟对象一知半解的我非常困惑 ...
- transcode_step()在转码过程中对pts、dts、duration的处理
对pts.dts.duration的处理主要集中在两大函数里面 1.process_input()读入数据并处理,放到滤镜里面 2.reap_filters()从滤镜读出数据,处理后写入文件 proc ...
- Z-BLOG模板结构图
(转自ZB官方论坛,作者:未寒)