MTK MT65XX平台开发分支下配置多个项目的规范说明

来源:互联网 发布:詹姆斯巅峰数据 编辑:程序博客网 时间:2024/06/05 22:38
MTK MT65XX平台开发分支下配置多个项目的规范说明:

转自:http://blog.csdn.net/chr8880/article/details/7990198

java FeatureOption.java 宏定义: Javaoption.pm  (mediatek\build\tools)


关于MTK6573平台开发分支下配置多个项目的规范说明
1.涉及的目录结构:共计7处,尤其第四处非常容易遗漏,请特别小心。
1.1)build/target/product/$(project_name).mk
1.2)mediatek/config/$(project_name)
1.3)mediatek/custom/$(project_name)
1.4)mediatek/custom/$(project_name)/uboot/inc/configs/$(project_name).h //这里特别注意,容易遗漏的点
1.5)vendor/mediatek/$(project_name)
1.6)vendor/mediatek/$(project_name)/artifacts/out/target/product/$(project_name)
1.7)MI/$(project_name)
其中$(project_name)均为新增的项目。如mi等。
2.LINK或者COPY原则(涉及以上第一点的目录结构增加对于内容的,请遵循2个凡是)
凡是2个项目一致的内容使用link. 凡是2个项目不一致的内容使用copy。
建议操作:
使用MI/tools/工具箱下提供的lns脚步,对新增的每个文件均采用单独link的模式,
如果遇到因为项目不同而需要单独区分的情况,请取消link为copy文件接口。
copy的情况下请特别注意,升级补丁需要照顾到多个项目。
 
3.其他一些需要配置多项目的内容涉及到的修改点
3.1 项目的宏定义文件,包含makefile,cpp,h,java(没有宏,使用静态class的形式)
makefile,cpp,h中的宏定义处
mediatek/config/$(project_name)/ProjectConfig.mk中
AUTO_ADD_GLOBAL_DEFINE_BY_NAME
AUTO_ADD_GLOBAL_DEFINE_BY_VALUE
AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE
在以上三个变量中增加对于的宏定义,分别代表宏是否定义,以及宏定义是否带有字符串值;定义
在##MI Support##
之后增加的譬如MTK_PRO_PROJECT_MI= yes主要使用makefile文件中,这里会有一个脚本来处理,
简单的说,就是临时export到环境变量中去,让所有的makefile文件不需要include就可以使用。
java代码区分静态的增加;
MI/$(project_name)/frameworks/featureoption/java/com/MI/MIfeatureoption/MIFeatureOption.java
这个会编译到frameworks中,当作全局变量供平台使用,用来在java代码中区分。
简单的说:
C代码中:MTK_PRO_PROJECT_MI_3 / MTK_PRO_PROJECT_MI_4.
JAVA代码中:由于JAVA中无法使用宏,大家可使用 MIFeatureOption.java 中定义的:MTK_PRO_PRODUCT_NAME_STR 字符串来区分。
3.2----如果需要区分多项目的APN文件以及AGPS文件还需要修改以下2处
首先需要在vendor/mediatek/etc增加多个项目的目录配置
其次需要build/target/product/$(project_name).mk中修改
原先的
PRODUCT_COPY_FILES += vendor/mediatek/etc/apns-conf.xml:system/etc/apns-conf.xml
PRODUCT_COPY_FILES += vendor/mediatek/etc/spn-conf.xml:system/etc/spn-conf.xml \
ifeq ($(MTK_AGPS_APP),yes)
PRODUCT_COPY_FILES += vendor/mediatek/etc/agps_profiles_conf.xml:system/etc/agps_profiles_conf.xml
endif
修改为
PRODUCT_COPY_FILES += vendor/mediatek/etc/$(MTK_PROJECT)/apns-conf.xml:system/etc/apns-conf.xml
PRODUCT_COPY_FILES += vendor/mediatek/etc/$(MTK_PROJECT)/spn-conf.xml:system/etc/spn-conf.xml \
ifeq ($(MTK_AGPS_APP),yes)
PRODUCT_COPY_FILES += vendor/mediatek/etc/$(MTK_PROJECT)/agps_profiles_conf.xml:system/etc/agps_profiles_conf.xml
endif
3.3 多项目蓝牙名称修改点,通过宏控制的形式来区分不同项目的蓝牙名称
frameworks/base/core/jni/android_bluetooth_common.h
具体修改为#define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"配置为多个项目的。
3.4 多项目的USB名称修改点,通过宏控制的形式来区分不同项目的USB名称
mediatek/custom/mt6573/kernel/usb/src/mtk_usb_custom.h
具体修改为
#define VENDOR_ID      0x2006 /*MI  USB vendor id  */
#define MANUFACTURER_STRING "MI"
#define PRODUCT_STRING      "MI"
#define USB_ETH_VENDORID     0
#define USB_ETH_VENDORDESCR  "MI"
#define USB_MS_VENDOR        "MI"
#define USB_MS_PRODUCT       "MI MS"
3.5多项目的factory mode名称修改点,通过宏控制的形式来区分不同项目的USB名称
mediatek\source\factory\src\factory.c
具体修改为
print_verinfo(info, &len,  "SW Ver.     ", val);
3.6 多项目配置的uboot启动页面修改
---------------------------------------
首先需要增加目录
mediatek/custom/common/uboot/logo/$(project_name)
---------------------------------------
mediatek/source/external/boot_logo_updater/Android.mk中的修改点
原先的
LOCAL_SRC_FILES := custom/$(LOCAL_MODULE)
修改之后的
LOCAL_SRC_FILES := custom/$(MTK_PROJECT)/$(LOCAL_MODULE)
--------------------------------------
mediatek/build/android/permfix.sh中修改点
原先的
mediatek/custom/common/uboot/logo/update
mediatek/custom/common/uboot/logo/tool/*
mediatek/custom/common/uboot/logo/boot_logo
修改之后的
mediatek/custom/common/uboot/logo/${MTK_PROJECT}/update
mediatek/custom/common/uboot/logo/${MTK_PROJECT}/tool/*
mediatek/custom/common/uboot/logo/${MTK_PROJECT}/boot_logo
--------------------------------------
bootable/bootloader/uboot/build.sh中修改点
原先的:
UBOOT_LOGO_PATH="${CUR_DIR}/${MTK_PATH_CUSTOM}/logo"
修改为:
UBOOT_LOGO_PATH="${CUR_DIR}/${MTK_PATH_CUSTOM}/logo/${MTK_PROJECT}"
--------------------------------------
3.7 多项目的型号,版本,以及第三方APK等信息的配置,均集中在MI目录下对应的工程目录
MI/$(project_name)/config/ProjectConfig.mk中的
PRODUCT_PACKAGE_OVERLAYS多项目不同资源的配置
MTK_PRO_DISPLAY_ID 版本号
MTK_PRO_PRODUCT_MODEL 型号
PRODUCT_LOCALES 语言分辨率
$(call inherit-product, vendor/google/products/gms.mk google服务以及市场等
PRODUCT_PACKAGES 自开发源码的apk应用
注意:project_name为项目编译输入名称,如mi等。