ANDROID Porting系列二、配置一个新产品
2015-01-15 14:26
281 查看
ANDROIDPorting系列二、配置一个新产品
详细说明
下面的步骤描述了如何配置新的移动设备和产品的makefile运行android。
1.目录//vendor/创建一个公司目录
2.创建一个目录下的公司与您在步骤1中创建产品目录.
3.创建一个特定于产品的makefile,
调用
4.附加产品特定的变量可以被添加到这个ProductDefinition文件.
5.在产品目录中,创建一个AndroidProducts.mk文件指向(并找到负责)个别产品makefiles。
6.创建board-specific目录下贵公司的目录与相匹配的PRODUCT_DEVICE<board_name>引用变量在特定产品作出上述文件。这包括任何使用本产品访问product-specificmakefile.
7.创建一个在上一步中创建文件的目录BoardConfig.mk(vendor/<company_name>/<board_name>).
8.如果你想修改系统属性,创建一个system.prop文件your<board_name>directory(vendor/<company_name>/<board_name>).
9.products/AndroidProducts.mk添加一个指向<second_product_name>.mk,.
10.一个Android.mk文件必须包含在供应商/<company_name>/<board_name>至少有下面的代码.
11.要创建一个相同的板第二个产品,创建第二个product-specificmakefilecalledvendor/company_name/products/<second_product_name>.mkthatincludes:
到现在为止,你应该有两个新产品,名为<first_product_name>和<company_name>相关<second_product_name>。为了验证一个产品是正确配置(<first_product_name>,例如),执行以下命令:
你应该找到新的建设二进制文件位于out/target/product/<board_name>。
新产品文件树
该文件树下面说明你自己的系统应该完成上述步骤。
·
o
§
§
§
o
§
§
§
产品定义文件
特定产品的变量定义在产品定义文件。一个产品的定义文件可以继承其他产品定义文件,从而减少了需要复制和简化维护。
变量在定义文件保持产品包括:
下面的代码段演示了一个典型的产品定义文件。
详细说明
下面的步骤描述了如何配置新的移动设备和产品的makefile运行android。
1.目录//vendor/创建一个公司目录
mkdirvendor/<company_name>
2.创建一个目录下的公司与您在步骤1中创建产品目录.
mkdirvendor/<company_name>/products/
3.创建一个特定于产品的makefile,
调用
vendor/<company_name>/products/<first_product_name>.mk,这至少包括以下代码:
$(callinherit-product,$(SRC_TARGET_DIR)/product/generic.mk)
#
#Overrides
PRODUCT_NAME:=<first_product_name>
PRODUCT_DEVICE:=<board_name>
4.附加产品特定的变量可以被添加到这个ProductDefinition文件.
5.在产品目录中,创建一个AndroidProducts.mk文件指向(并找到负责)个别产品makefiles。
#
#ThisfileshouldsetPRODUCT_MAKEFILEStoalistofproductmakefiles
#toexposetothebuildsystem.LOCAL_DIRwillalreadybesetto
#thedirectorycontainingthisfile.
#
#Thisfilemaynotrelyonthevalueofanyvariableotherthan
#LOCAL_DIR;donotuseanyconditionals,anddonotlookupthe
#valueofanyvariablethatisn'tsetinthisfileorinafilethat
#itincludes.
#
PRODUCT_MAKEFILES:=/
$(LOCAL_DIR)/first_product_name.mk/
6.创建board-specific目录下贵公司的目录与相匹配的PRODUCT_DEVICE<board_name>引用变量在特定产品作出上述文件。这包括任何使用本产品访问product-specificmakefile.
mkdirvendor/<company_name>/<board_name>
7.创建一个在上一步中创建文件的目录BoardConfig.mk(vendor/<company_name>/<board_name>).
#Thesedefinitionsoverridethedefaultsinconfig/config.makefor<board_name>
#
#TARGET_NO_BOOTLOADER:=false
#
TARGET_USE_GENERIC_AUDIO:=true
8.如果你想修改系统属性,创建一个system.prop文件your<board_name>directory(vendor/<company_name>/<board_name>).
#system.propfor
#Thisoverridessettingsintheproducts/generic/system.propfile
#
#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>至少有下面的代码.
#makefilefornewhardwarefrom
#
LOCAL_PATH:=$(callmy-dir)
#
#thisisheretousethepre-builtkernel
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)
#
#nobootloader,sowedon'tneedanyofthatstuff..
#
LOCAL_PATH:=vendor/<company_name>/<board_name>
#
include$(CLEAR_VARS)
#
#includemoreboardspecificstuffhere?SuchasAudioparameters.
#
11.要创建一个相同的板第二个产品,创建第二个product-specificmakefilecalledvendor/company_name/products/<second_product_name>.mkthatincludes:
$(callinherit-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
makePRODUCT-<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 | Aspace-separatedlistoftwo-letterlanguagecode,two-lettercountrycodepairsthatdescribeseveralsettingsfortheuser,suchastheUIlanguageandtime,dateandcurrencyformatting.ThefirstlocalelistedinPRODUCT_LOCALESisisusedifthelocalehasneverbeensetbefore. | en_GBde_DEes_ESfr_CA |
PRODUCT_PACKAGES | ListstheAPKstoinstall. | CalendarContacts |
PRODUCT_DEVICE | Nameoftheindustrialdesign | dream |
PRODUCT_MANUFACTURER | Nameofthemanufacturer | acme |
PRODUCT_BRAND | Thebrand(e.g.,carrier)thesoftwareiscustomizedfor,ifany | |
PRODUCT_PROPERTY_OVERRIDES | Listofpropertyassignmentsintheformat"key=value" | |
PRODUCT_COPY_FILES | Listofwordslikesource_path:destination_path.Thefileatthesourcepathshouldbecopiedtothedestinationpathwhenbuildingthisproduct.Therulesforthecopystepsaredefinedinconfig/Makefile | |
PRODUCT_OTA_PUBLIC_KEYS | ListofOTApublickeysfortheproduct | |
PRODUCT_POLICY | Indicatewhichpolicythisproductshoulduse | |
PRODUCT_PACKAGE_OVERLAYS | Indicatewhethertousedefaultresourcesoraddanyproductspecificoverlays | vendor/acme/overlay |
PRODUCT_CONTRIBUTORS_FILE | HTMLfilecontainingthecontributorstotheproject. | |
PRODUCT_TAGS | listofspace-separatedwordsforagivenproduct |
$(callinherit-product,build/target/product/generic.mk)
#Overrides
PRODUCT_NAME:=MyDevice
PRODUCT_MANUFACTURER:=acme
PRODUCT_BRAND:=acme_us
PRODUCT_LOCALES:=en_GBes_ESfr_FR
PRODUCT_PACKAGE_OVERLAYS:=vendor/acme/overlay
相关文章推荐
- ANDROID Porting系列二、配置一个新产品
- Android 为一个新产品作编译配置(Product Definition Files)
- Android 为一个新产品作编译配置(Product Definition Files)
- Android 为一个新产品作编译配置(Product Definition Files)
- 【Android Native Code开发系列】六 一个Native Service的完整示例
- 【Android Native Code开发系列】三 Android源码的编译环境配置、下载及编译
- Android系列之Service:建立一个Bound Service
- 【Android开发系列】Android开发第一步-----开发环境配置 + 运行sample
- 配置android开发环境『Android系列一』
- 做了一个系列的Android开发教程列表
- 一个AndroidManifest.xml 配置文件
- 【Android Native Code开发系列】六 一个Native Service的完整示例
- ANDROID Porting系列三、Build Cookbook
- ANDROID Porting系列八、Keymaps and Keyboard Input
- ANDROID Porting系列七、Display Drivers
- 做了一个系列的Android开发教程列表
- Android深入浅出系列之实例应用—如何在一个Activity里调用另外一个Activity?
- ANDROID Porting系列一、ANDROID编译系统
- ANDROID Porting系列十、Audio
- Android深入浅出系列之实例应用—如何在一个Activity里调用另外一个Activity?