Android 項目多版本管理
基於GIT強大的分支(git branch)能力,Android項目可以實現由一個基本版本產生多個不同UI的版本,並同步主要邏輯代碼,實現不同的外表,一樣的內心。其基本原理是使用<orinial-package/>來指定基礎包名。下面是實現的步驟:
0. 預備知識:Git remote branch 遠程分支管理
1. 準備基本版本。
多個版本管理的特點是邏輯相同,UI有所區別,為了以後merge主邏輯,我們需要使各個分支之間的主邏輯代碼的包名一致,同時為了發布不同UI的版本,程式的包名以需要區別開來,看起來這兩點是有衝突的,這時重要的屬性出場了:<orinial-package/>!用此屬性來指定主邏輯代碼的包名,用<package/>來指定程式的包名,這裡用一個單詞來佔位,例如.base_version,以便於以後添加新的UI分支後替換成新的包名。用法如下代碼:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pkgname.base_version" android:versionCode="1" android:versionName="0.00.00" > <original-package android:name="com.pkgname" />
另一個準備工作:為了避免資料庫衝突,把所有資料庫的Authority改為”com.pkgname.base_version”
2. 產生一個新的版本分支
2.1 從base_version產生一個新的分支,例如my_ui_branch_0,假設當前base version的分支是develop:
$git checkout develop -b my_ui_branch_0
2.2 全域替換”com.pkgname.base_version” 為”com.pkgname.my_ui_branch_0″。
2.3 把AndroidManifest.xml中所有”.YourComponent” 改為 “com.pkgname.YourComponent”。
2.4 git commit 產生一個commit。
3. 儲存新版本到遠程分支。
$git push origin my_ui_branch_0
4. 如何操作分支的原則。
兩個原則:
原則一:Merge方向為從base_version==>my_ui_branch_N,反方向merge後果很嚴重。
原則二:確保在base_version上修改公用邏輯或UI。
至此,我們就可以快樂的產生帶有新程式包名的分支,出現BUG時再不用擔心多個版本的同步問題,只要在base_version上修改並merge到其它分支就行了。