您的位置:首页 > 移动开发 > Android开发

ANDROID Porting系列二、配置一个新产品

2015-01-15 14:26 281 查看
ANDROIDPorting系列二、配置一个新产品

详细说明

下面的步骤描述了如何配置新的移动设备和产品的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

Listofwordslike
source_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: