从google网站上下载的android源代码编译时默认是编译google设定的产品,如果要开发自己的产品, 则需要重新定义一个产品项目,过程如下: 首先我们定义产品的规格,举例如下: 公司名称 ardent 产品名称 MTP 主板名称 merlin 然后安装下面的步骤新建产品项目: (1)在源代码目录下创建一个用户目录 mkdir vendor (2)在用户目录下创建一个公司目录 mkdir vendor/merlin (3)在公司目录下创建一个products目录 mkdir vendor/merlin/products (4)在上面创建的products下创建一个产品makefile文件MTP.mk,内容如下: PRODUCT_PACKAGES := \ AlarmClock \ Email \ Fallback \ Launcher2 \ Music \ Camera \ Settings \ LatinIME \ NotePad \ SoundRecorder \ Bluetooth \ CertInstaller \ DeskClock $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk) # # Overrides PRODUCT_MANUFACTURER := ardent PRODUCT_BRAND := ardent PRODUCT_NAME := MTP PRODUCT_MODEL := MultiMedia Touch Phone PRODUCT_DEVICE := merlin PRODUCT_LOCALES := zh_CN 产品makefile文件的编写有一套规则,详细情况见此文后面的补充内容。 (5)在vendor/merlin/products目录下创建一个AndroidProducts.mk文件,定义Android产品配置文件的路径,具体如下: PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/MTP.mk (6)在公司目录下创建一个主板目录 mkdir vendor/ardent/merlin (7)在主板目录下新建一个主板配置文件BoardConfig.mk,内容如下: TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := true TARGET_CPU_ABI := armeabi BOARD_USES_GENERIC_AUDIO := true USE_CAMERA_STUB := true (8)如果你希望修改系统属性,则可以在主板目录下新建一个system.prop文件,该文件中可以修改系统属性,举例如下: # 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)在主板目录下建议一个Android的主板配置文件AndroidBoard.mk,此文件是编译系统接口文件,内容如下: # 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/ardent/merlin include $(CLEAR_VARS) # # include more board specific stuff here? Such as Audio parameters. # (10)编译新的项目 . build/envsetup.sh make PRODUCT-MTP-user 补充内容: (1)上面的新建的几个文件的编写可以参考build/target/board/generic目录下的AndroidBoard.mk,BoardConfig.mk和system.prop (2)产品makefile的编写规则,变量定义解释如下: PRODUCT_NAME 终端用户可见的产品名称,对应到“Settings“中的“About the phone”信息 PRODUCT_MODEL End-user-visible name for the end product PRODUCT_LOCALES 1个以空格分隔开的两个字母的语言码加上2字节的国家码的列表,影响到"Settings"中的语言,时间,日期和货币格式设置, 举例:en_GB de_DE es_ES fr_CA PRODUCT_PACKAGES 需要安装的APK应用程序列表 PRODUCT_DEVICE 工作设计名称,即主板名称 PRODUCT_MANUFACTURER 生产厂家 PRODUCT_BRAND 软件设计针对的客户品牌 PRODUCT_PROPERTY_OVERRIDES 以"key=value"为格式的属性列表 PRODUCT_COPY_FILES 文件复制列表,格式为“原文件路径:目的文件路径”,编译过程中会按照此规则复制文件 PRODUCT_OTA_PUBLIC_KEYS 产品的OTA公共密匙列表 PRODUCT_POLICY 声明此产品使用的政策 PRODUCT_PACKAGE_OVERLAYS 指示是否使用默认资源或添加任何产品特定的资源,例如:vendor/acme/overlay PRODUCT_CONTRIBUTORS_FILE HTML文件中包含项目的贡献者 PRODUCT_TAGS 以空格分隔开的指定产品关键词列表
|
|