自动获取svn版本号并替换android版本号
2016-10-06 20:50
260 查看
使用svn作为软件版本号的好处是一旦软件出现问题可以定位到具体的源代码,android应用的版本是在AndroidManifest.xml中定义的,每次打包发布的前需要手动修改其中的android:versionCode和 android:versionName,然后再打包,非常麻烦。这里将介绍一种自动修改的方法,每次编译的时候自动获取当前的svn版本号并替换AndroidManifest.xml中的版本号。
1、编写脚本
编写获取svn版本并替换android:versionCode的脚本,以下是shell脚本:
将以上代码保存起来svn_version_get.sh,放到工程目录下测试执行:
![](http://img.blog.csdn.net/20161006204201815?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、eclipse设置
确定脚本正确执行后,然后就需要让eclipse每次build工程的时候自动执行这个脚本,从而达到自动修改的目的。
1) eclipse中执行脚本需要创建一个Builder,步骤如下:
右键点击工程→Properties→Builder→new→Program
![](http://img.blog.csdn.net/20161006204245846?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2) 在Main设置选项里设置脚本路径,设置脚本工作路径,最好将脚本放到工程目录下,之后可以将脚本和eclipse的设置随工程上传到svn
![](http://img.blog.csdn.net/20161006204356425?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
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,就会形成死循环。
![](http://img.blog.csdn.net/20161006204439361?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4) 设置Builder的执行顺序,需要将新建的builder放到Android compiler之前,因为我们的目的是修改了AndroidManifest.xml, 所以我们需要先修改再编译apk。
![](http://img.blog.csdn.net/20161006204519488?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5) 测试一下,Project→build Project,看看编出来的apk是否用了svn版本号。
![](http://img.blog.csdn.net/20161006204546144?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
6) 测试成功之后,可以将脚本以及工程的设置(新建的bulder)一起上传的svn,这样其他开发人员更新之后无需再设置eclipse。
ps:上述的脚本修改的是versionCode,如果修改versionName,将脚本中的versionCode替换成versionName即可,以上内容是在Ubuntu下实现的,如果是在windows下做开发,需要另外实现脚本,可以用ant实现windows下的脚本。
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
2) 在Main设置选项里设置脚本路径,设置脚本工作路径,最好将脚本放到工程目录下,之后可以将脚本和eclipse的设置随工程上传到svn
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,就会形成死循环。
4) 设置Builder的执行顺序,需要将新建的builder放到Android compiler之前,因为我们的目的是修改了AndroidManifest.xml, 所以我们需要先修改再编译apk。
5) 测试一下,Project→build Project,看看编出来的apk是否用了svn版本号。
6) 测试成功之后,可以将脚本以及工程的设置(新建的bulder)一起上传的svn,这样其他开发人员更新之后无需再设置eclipse。
ps:上述的脚本修改的是versionCode,如果修改versionName,将脚本中的versionCode替换成versionName即可,以上内容是在Ubuntu下实现的,如果是在windows下做开发,需要另外实现脚本,可以用ant实现windows下的脚本。
相关文章推荐
- 获取svn版本号并替换AndroidManifest
- Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
- 【Android】使用Gradle打包时,获取svn的版本号,删除unalign.apk文件,获得版本号,并设定在打包的文件名称中
- Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
- php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号
- Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
- 自动获取svn的版本号
- Android ant 自动打包脚本:自动替换友盟渠道、版本号、包名
- ant脚本打jar包 自动获取时间以及项目svn版本号
- Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
- 7.腾讯微博Android客户端开发——自动获取验证码(1)
- Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)
- 腾讯微博Android客户端开发——自动获取验证码(1)
- 7.腾讯微博Android客户端开发——自动获取验证码(1)
- android获取手机型号和系统版本号
- 7.腾讯微博Android客户端开发——自动获取验证码(1) .
- Android获取已安装应用信息(图标,名称,版本号,包)
- Android基础篇-自动获取屏幕的尺寸及密度
- 8.腾讯微博Android客户端开发——自动获取验证码(2)
- Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)