第一步:新建SVNVersion.gradle  放置于build.gradle统计目录下面

/*task svnversion {
description 'Get SVN revision number.'
new ByteArrayOutputStream().withStream { os ->
exec {
executable = 'svnversion'
standardOutput = os
}
ext.revid = os.toString()
}
}*/ def svnversion() {
description 'Get SVN revision number.'
new ByteArrayOutputStream().withStream { os ->
/* exec {
executable = 'svnversion'
standardOutput = os
}
ext.revid = os.toString()*/
def result = exec {
executable = 'svn'
args = ['info']
standardOutput = os
}
def outputAsString = os.toString()
def matchLastChangedRev = outputAsString =~ /Last Changed Rev: (\d+)/
// 因为要兼容之前的版本,所以codeVersion不能比之前的小
ext.svnRev = 10000 + "${matchLastChangedRev[0][1]}".toInteger()
}
return svnRev
}
/*
task printsvn(description: 'Demonstrate calling svnversion task.') << {
println 'Current SVN Version: ' + svnversion()+""
}
*/ import java.util.regex.Pattern task('increaseVersionCode') << {
description 'Get SVN revision number1.'
// def manifestFile = file("src/main/AndroidManifest.xml")
def manifestFile = file("build.gradle")
// def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
def pattern = Pattern.compile("versionCode (\\d+)")
def manifestText = manifestFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
// def versionCode = Integer.parseInt(matcher.group(1))
// logger.debug("versionCode: ", versionCode);
def manifestContent = matcher.replaceAll("versionCode " + svnversion())
description 'Get SVN revision number2.'
manifestFile.write(manifestContent)
} task('incrementVersionName') << {
// description 'Get SVN revision number3.'
// def manifestFile = file("src/main/AndroidManifest.xml")
// def patternVersionNumber = Pattern.compile("versionName=\"(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)\"")
// def manifestText = manifestFile.getText()
// def matcherVersionNumber = patternVersionNumber.matcher(manifestText)
// matcherVersionNumber.find()
// def majorVersion = Integer.parseInt(matcherVersionNumber.group(1))
// def minorVersion = Integer.parseInt(matcherVersionNumber.group(2))
// def pointVersion = Integer.parseInt(matcherVersionNumber.group(3))
//// def buildVersion = Integer.parseInt(matcherVersionNumber.group(4))
// def mNextVersionName = majorVersion + "." + minorVersion + "." + pointVersion + "." + svnversion()
// def manifestContent = matcherVersionNumber.replaceAll("versionName=\"" + mNextVersionName + "\"")
// manifestFile.write(manifestContent)
} tasks.whenTaskAdded { task ->
// if (task.name == 'generateReleaseBuildConfig' || task.name == 'generateDebugBuildConfig') {
task.dependsOn 'increaseVersionCode'
task.dependsOn 'incrementVersionName'
// }
}

第二步:在build.gradle中加入以下代码:

  buildTypes {
release {
signingConfig signingConfigs.release
zipAlignEnabled true
minifyEnabled true
//混淆文件直接放在: proguard-rules.pro 里面即可
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为wandoujia_v1.0.0.1320_20150115.apk
def fileName = "${variant.productFlavors[0].name}_v${defaultConfig.versionName}.${defaultConfig.versionCode}_${releaseTime()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationIdSuffix '.bata'
versionNameSuffix '.d'
debuggable true
}
}

最新文章

  1. C#的函数柯里化
  2. php设计模式 观察者模式
  3. linux编程开发命令
  4. Yii2 执行流程
  5. metasploit模块功能介绍
  6. Android之查看网络图片和网页HTML
  7. JSON字符串如何转化成对象?
  8. iOS iOS7越狱
  9. 第二章 jQuery选择器
  10. BDB (Berkeley DB)数据库简单介绍(转载)
  11. [置顶] Android Journal
  12. html图像入门
  13. SQL DCL数据控制语言,用来定义訪问权限和安全级别;
  14. [POJ 3311]Hie with the Pie——谈论TSP难题DP解决方法
  15. idea: 纯 http 上的双向通信
  16. hover与click样式冲突
  17. iOS使用自签名证书实现HTTPS请求
  18. OpenFlow Flow-Mod消息学习
  19. PHP与Nginx之间的运行机制以及原理
  20. 基于官方mysql镜像构建自己的mysql镜像

热门文章

  1. ADO.NET连接数据库的两种方式
  2. android开发者博客二月-Marshmallow and User Data
  3. Openfire:安装指南
  4. Apache+Tomcat +mod_proxy集群负载均衡及session
  5. oracle linux下oracle 10g启动EM、isqlplus及相关命令语法
  6. c# 串口发送接收数据
  7. sublime_2014-11-19
  8. ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39;
  9. 通过telnet使用smtp协议发送邮件
  10. css3动画使用技巧之—JQ配合css3实现轮播之animation-delay应用