作者: yongquan.xu
本文针对目前项目同时维护2个远端仓库的情况,介绍了用一个工作项目,同时提交的方法。
1、工程配置
由于S2和X588的系统主题不一样,本节介绍通过工程配置和Android版本继承的方法来动态引用系统主题。使得在Windows下编译时,忽略项目特有的style,而在源码编译时自动引用。避免提交时因为平台的差异,提交错误的style导致编译失败。
在项目默认的values目录下,定义style:
<style name="Tpv.DialogBase" parent="Theme.AppCompat.Light.Dialog"/>
在项目的根目录下(Android studio在module的src目录下)创建x588和s2目录,并创建res/values-23/目录,并在values.xml中继承style:
X588/res/values-23/values.xml:
<style name="Tpv.DialogBase"parent="com.tpv:Theme.Tpv.Light.Dialog.Alert"/>
S2/res/values-23/values:xml:
<stylename="Tpv.DialogBase"parent="android:Theme.Tpv.Light.Dialog.Alert"/>
由于style是在Eclipse项目外定义,因此在Eclipse编译时不会被加入。在源码编译时,需要在Android.mk添加资源目录。这里要注意的是,开关不要使用$MTK_PLATFORM,因为2个分支的值都是MT6755:
ifeq ($(TARGET_DEVICE), tpv6750_66_m)
LOCAL_RESOURCE_DIR+= vendor/tpv/apps/Clock/deskClock/src/x588/res
else
LOCAL_RESOURCE_DIR+= vendor/tpv/apps/Clock/deskClock/src/s2/res
Endif
Android studio配置
配置完成以后,在Android studio的项目视图中,需要选择Project,才能看到平台专属的资源。可以通过gradle配置,把资源引入到module里。Eclipse开发环境请忽略本节。
编辑module的build.gradle,添加以下内容:
productFlavors {
general {}
x588 {}
s2 {}
}
完成后,在Build Variants下会出现以下菜单,选择相应的项,可以把平台的资源引入到项目中(当然,正常是不能通过编译的):
2、git提交
上文介绍了通过编译脚本,在一个工程里配置不同的平台,简化git提交动作。本节介绍在一个git仓库中配置多个远程仓库并实现同时提交。这里我们默认在不同的远端仓库中,代码基线是一致的。
Clone git本地仓库:
git clonessh://yongquan.xu@twtps524.tpvaoc.com:29418/MT6755R3/alps/
vendor/tpv/apps/Photo.git -bFREELY_UI_2.0
添加X588的仓库:
git remote addx588 ssh://yongquan.xu@twtps524.tpvaoc.com:29418/MT6750/
alps/vendor/tpv/apps/Clock.git
fetch X588分支到本地:git fetch x588
在FREELY_UI_2.0分支下,修改代码并提交,记下提交的change id,切换到X588_M0_V1分支:
git checkout X588_M0_V1
把Freely UI 2.0的代码合并过来:git cherry-pick<change-id>
提并X588_M0_V1代码:
git push ……