ANDROID Porting系列二、配置一个新产品 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android。 1. 目录//vendor/创建一个公司目录 mkdir vendor/<company_name> 2. 创建一个目录下的公司与您在步骤1中创建产品目录. mkdir vendor/<company_name>/products/ 3. 创建一个特定于产品的 makefile, 调用 $(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>。
新产品文件树 该文件树下面说明你自己的系统应该完成上述步骤。 · o § § § o § § § 特定产品的变量定义在产品定义文件。一个产品的定义文件可以继承其他产品定义文件,从而减少了需要复制和简化维护。 变量在定义文件保持产品包括:
下面的代码段演示了一个典型的产品定义文件。 $(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 |
|