Gradle打包的文件名添加svn版本信息

为了获取SVN版本号,我们要引入一个第三方的库,这个库可以获取svn的信息。

1、首先在projece 的build.gralde中的dependencies中添加svnkit这个依赖:

    dependencies {        classpath 'com.android.tools.build:gradle:1.2.3'        classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'    }

2、利用这个库来在编译的时候获取svn的信息的。

2.1、首先在module的build.gradle最上方添加

import org.tmatesoft.svn.core.wc.*apply plugin: 'com.android.application'

这样就把svnkit这个库引入过来了。

2.2、再添加一个获取svn版本号的方法,类似一获取时间的方法。

    def getSvnRevision() {      ISVNOptions options = SVNWCUtil.createDefaultOptions(true);      SVNClientManager clientManager = SVNClientManager.newInstance(options);      SVNStatusClient statusClient = clientManager.getStatusClient();      SVNStatus status = statusClient.doStatus(projectDir, false);      SVNRevision revision = status.getCommittedRevision();      return revision.getNumber();    }

2.3、使用svn版本号参与文件命名

    //重命名打包文件    android.applicationVariants.all { variant ->        variant.outputs.each { output ->            def apk = output.outputFile;            def releaseTime = releaseTime();            def channelName = variant.productFlavors[0].name;            def versionName = getVersionNameFromManifest();            def newName = channelName + "_" + versionName + "_" + releaseTime + "_" + getSvnRevision();            output.outputFile = new File(apk.parent, newName + ".apk");        }    }

3、删除打包产生的unalign.apk文件

   //删除 unligned 文件    android.applicationVariants.all { variant ->        variant.assemble.doLast {            variant.outputs.each { output ->                println "aligned " + output.outputFile                println "unaligned " + output.packageApplication.outputFile                File unaligned = output.packageApplication.outputFile;                File aligned = output.outputFile                if (!unaligned.getName().equalsIgnoreCase(aligned.getName())) {                    println "deleting " + unaligned.getName()                    unaligned.delete()                }            }        }    }

4、获得配置文件中的版本号

//从androidManifest.xml中获取版本号def getVersionNameFromManifest() {    def manifestParser = new com.android.builder.core.DefaultManifestParser()    return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)}

5、打包时间

//打包时间def releaseTime() {    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))}

更多相关文章

  1. ym——Android从零开始(1)(Android体系架构及认识)(新)
  2. Android应用程序目录定义及使用方法
  3. android中Manifest文件的语法层次
  4. Android(安卓)性能分析工具之TraceView
  5. Android(安卓)DrawerLayout 高仿QQ5.2双向侧滑菜单
  6. Android(安卓)studio Error:Cause: org/gradle/api/publication/
  7. ANE 在 Android(安卓)上的应用
  8. android之NDK环境小试牛刀
  9. Android(安卓)创建桌面快捷方式

随机推荐

  1. Android(安卓)兼容性测试(CTS)
  2. Android(安卓)4.0音乐问题
  3. android中使用GoogleMap的地理位置服务
  4. 看了你就懂的同步与异步、阻塞与非阻塞
  5. Android(安卓)JNI技术介绍
  6. webview发展现状
  7. udacity android 实践笔记: lesson 4 par
  8. Android(安卓)Apk 代码混淆与资源文件混
  9. Android(安卓)Studio——Android(安卓)Bi
  10. Android(安卓)sqlite存储日期类型