自动获取svn版本号并替换android版本号

 

使用svn作为软件版本号的好处是一旦软件出现问题可以定位到具体的源代码,android应用的版本是在AndroidManifest.xml中定义的,每次打包发布的前需要手动修改其中的android:versionCode和 android:versionName,然后再打包,非常麻烦。这里将介绍一种自动修改的方法,每次编译的时候自动获取当前的svn版本号并替换AndroidManifest.xml中的版本号。

1、编写脚本
编写获取svn版本并替换android:versionCode的脚本,以下是shell脚本:

svnv=`svnversion | sed 's/^.*://' | sed 's/[A-Z]*$//'`
if [ -n "$svnv" ] ; then
sed -i s/versionCode=[^$]*/versionCode=\"$svnv\"/g AndroidManifest.xml
fi
result=`cat AndroidManifest.xml |grep versionCode`
echo "current svn version = $svnv , change$result"

将以上代码保存起来svn_version_get.sh,放到工程目录下测试执行:

 

2、eclipse设置
确定脚本正确执行后,然后就需要让eclipse每次build工程的时候自动执行这个脚本,从而达到自动修改的目的。
1) eclipse中执行脚本需要创建一个Builder,步骤如下:

右键点击工程→Properties→Builder→new→Program

自动获取svn版本号并替换android版本号_第1张图片

 

2) 在Main设置选项里设置脚本路径,设置脚本工作路径,最好将脚本放到工程目录下,之后可以将脚本和eclipse的设置随工程上传到svn

自动获取svn版本号并替换android版本号_第2张图片

 

3) 在Build Options里设置build选项,选择During manual builds,During a “Clean”,这样以后每次eclipse里点build project都会执行脚本,不要选择During auto builds,因为我们知道eclipse auto build打开之后每次文件改动之后会自动build workspace,然后自动build每个工程,而我们脚本执行了之后就会修改AndroidManifes.xml文件,又会触发auto build,就会形成死循环。

自动获取svn版本号并替换android版本号_第3张图片

 

4) 设置Builder的执行顺序,需要将新建的builder放到Android compiler之前,因为我们的目的是修改了AndroidManifest.xml, 所以我们需要先修改再编译apk。

自动获取svn版本号并替换android版本号_第4张图片

 

5) 测试一下,Project→build Project,看看编出来的apk是否用了svn版本号。

 

6) 测试成功之后,可以将脚本以及工程的设置(新建的bulder)一起上传的svn,这样其他开发人员更新之后无需再设置eclipse。

 

ps:上述的脚本修改的是versionCode,如果修改versionName,将脚本中的versionCode替换成versionName即可,以上内容是在Ubuntu下实现的,如果是在windows下做开发,需要另外实现脚本,可以用ant实现windows下的脚本。

 

 

 

你可能感兴趣的:(版本管理)