svn 规范apk的生成命名
第一步:新建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
}
}
svn 规范apk的生成命名的更多相关文章
- apk签名文件生成
一.生成签名文件 命令: keytool -genkey -v -keystore 签名文件名称.keystore -alias 签名文件别名 -keyalg RSA -keysize 2048 -v ...
- Android开发--apk的生成
0.前言 此方法为eclipse中生成apk的方法!!!! 1.生成ketstore 在命令提示符中找到java的jdk路径,例如: D:\study software\Java\jdk1.8.0_2 ...
- 从" ThinkPHP 开发规范 "看 PHP 的命名规范和开发建议
稍稍水一篇博客,摘抄自Think PHP 的开发规范,很有引导性,我们可以将这些规范实践到原生 PHP 中. 命名规范 使用ThinkPHP开发的过程中应该尽量遵循下列命名规范: 类文件都是以.cla ...
- CSS书写规范、顺序和命名规则
写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考 这些是参考了国外一些文章以及我的个 ...
- css命名规范: BEM 的命名法
整理自:前端早读课[第1183期]这些 CSS 命名规范,将省下你大把调试时间 试图解决 3 类问题: 仅从名字就能知道一个 CSS 选择器具体做什么 从名字能大致清楚一个选择器可以在哪里使用 从 C ...
- 网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容如下:
页头:header 如:#header{属性:属性值;}或.header{属性:属性值;},也许你需要了解class与id区别及用法登录条:loginBar 标志:logo ...
- 打包成apk,生成apk文件,上传到网站服务器提供链接下载
Android开发把项目打包成apk: 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android ...
- Java编码规范之数据对象命名
数据对象分多种,为方便阅读并区分各数据对象的用途,习惯将数据对象分为以下几类,供参考: 持久对象 PO(persistant object)对象关系映射(ORM)概念的产物,基本上对象的成员变量对应了 ...
- 项目工程化之git提交规范以及 CHANGELOG生成
事先声明,本文是参考了其他大神的博客之后自己尝试的记录,具体可以参考如下 链接 先说说git 提交规范把,这里基本都是这个工具 cz-customizable 1,安装 npm install cz- ...
随机推荐
- web相关
1. html 和 htm 的区别 如果一个网站有index.html和index.htm 默认情况下优先访问.html htm是为了兼容之前dos系统的命名规范. 2. http1.0短连接 htt ...
- 常用的WebService调用接口
天气预报Web服务,数据来源于中国气象局Endpoint :http://www.webxml.com.cn/WebServices/WeatherWebService.asmxDisco ...
- CSS常见选择器
一.元素选择器 p,html,h1, h2 1.多个元素一起设置同一种风格, 则用逗号“,”隔开(选择器分组) 2.通配符选择, *{Color:red} 表示文档中所有元素都为红色 二.类选择器 ...
- 使用Eclipse提供的Axis1.x生成WSDL文件以及Server和Client代码
使用Eclipse自带的Axis 1.x来创建一个web service应用的服务端和客户端 Axis 是SOAP WebService协议实现,SOAP实质上是一个基于HTTP POST的请求,以X ...
- java_UML:继承/泛化、实现、依赖、关联、聚合、组合的联系与区别 (2016-07-12)
分别介绍这几种关系: UML关系:继承(泛化).实现.依赖.关联.聚合.组合的联系与区别 一.表示符号上的区别 二.具体区别与联系 1. 继承/泛化(Generalization) [泛化关系]:是一 ...
- HDU 4707 Pet(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707 题目大意:在一个无环的,从0开始发散状的地图里,找出各个距离0大于d的点的个数 Sample I ...
- Plugin 'FEDERATED' is disabled 或 1067错误 启动错误与“服务 mysql 意外停止”解决方法
MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin 'FEDERATED' is disabled” 网我在网上找到解决方案:1.在MY.I ...
- mysql 主从一致性检查
我上一次遇到MySQL主从服务器数据一致性问题,想想是几年前的事情了,还依稀记得当时惊慌失措的情景,好在最后借助Maatkit解决了问题.几年后,当我再次面对同样的问题时,Maatkit已经不复存在, ...
- 每天一条linux命令——crontab
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查 ...
- 给定任意一个字符串,使用 for in 语句来统计字符出现的个数
//找出字符串中的数字 var str = 'haj123sdk54hask33dkhalsd879'; /*function findNum(str){ var arr = []; var tmp ...