android 多个产品分支,Android的源码的多产品分支

我们在日常的项目开发过程中,经常出现同一份源码,编译不同的产品和而且每个产品功能差别不大,只是在android的framework层修改

一些地方。下面简单的介绍一下,多个产品分支的做法。

1.在创建不同的产品目录

例如:在device/xxx/xxx 产品目录。

配置该目录下的Android.mk AndroidProducet.mk。

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等。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值