svn 规范apk的生成命名
2024-10-16 03:20:25
第一步:新建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
}
}
最新文章
- C#的函数柯里化
- php设计模式 观察者模式
- linux编程开发命令
- Yii2 执行流程
- metasploit模块功能介绍
- Android之查看网络图片和网页HTML
- JSON字符串如何转化成对象?
- iOS iOS7越狱
- 第二章 jQuery选择器
- BDB (Berkeley DB)数据库简单介绍(转载)
- [置顶] Android Journal
- html图像入门
- SQL DCL数据控制语言,用来定义訪问权限和安全级别;
- [POJ 3311]Hie with the Pie——谈论TSP难题DP解决方法
- idea: 纯 http 上的双向通信
- hover与click样式冲突
- iOS使用自签名证书实现HTTPS请求
- OpenFlow Flow-Mod消息学习
- PHP与Nginx之间的运行机制以及原理
- 基于官方mysql镜像构建自己的mysql镜像
热门文章
- ADO.NET连接数据库的两种方式
- android开发者博客二月-Marshmallow and User Data
- Openfire:安装指南
- Apache+Tomcat +mod_proxy集群负载均衡及session
- oracle linux下oracle 10g启动EM、isqlplus及相关命令语法
- c# 串口发送接收数据
- sublime_2014-11-19
- ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39;
- 通过telnet使用smtp协议发送邮件
- css3动画使用技巧之—JQ配合css3实现轮播之animation-delay应用