Android 项目多版本管理

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到其它分支就行了。


原文地址:https://www.cnblogs.com/javawebsoa/p/3057371.html