第一步:新建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的生成命名的更多相关文章

  1. apk签名文件生成

    一.生成签名文件 命令: keytool -genkey -v -keystore 签名文件名称.keystore -alias 签名文件别名 -keyalg RSA -keysize 2048 -v ...

  2. Android开发--apk的生成

    0.前言 此方法为eclipse中生成apk的方法!!!! 1.生成ketstore 在命令提示符中找到java的jdk路径,例如: D:\study software\Java\jdk1.8.0_2 ...

  3. 从" ThinkPHP 开发规范 "看 PHP 的命名规范和开发建议

    稍稍水一篇博客,摘抄自Think PHP 的开发规范,很有引导性,我们可以将这些规范实践到原生 PHP 中. 命名规范 使用ThinkPHP开发的过程中应该尽量遵循下列命名规范: 类文件都是以.cla ...

  4. CSS书写规范、顺序和命名规则

    写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考   这些是参考了国外一些文章以及我的个 ...

  5. css命名规范: BEM 的命名法

    整理自:前端早读课[第1183期]这些 CSS 命名规范,将省下你大把调试时间 试图解决 3 类问题: 仅从名字就能知道一个 CSS 选择器具体做什么 从名字能大致清楚一个选择器可以在哪里使用 从 C ...

  6. 网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容如下:

    页头:header  如:#header{属性:属性值;}或.header{属性:属性值;},也许你需要了解class与id区别及用法登录条:loginBar         标志:logo      ...

  7. 打包成apk,生成apk文件,上传到网站服务器提供链接下载

    Android开发把项目打包成apk: 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android ...

  8. Java编码规范之数据对象命名

    数据对象分多种,为方便阅读并区分各数据对象的用途,习惯将数据对象分为以下几类,供参考: 持久对象 PO(persistant object)对象关系映射(ORM)概念的产物,基本上对象的成员变量对应了 ...

  9. 项目工程化之git提交规范以及 CHANGELOG生成

    事先声明,本文是参考了其他大神的博客之后自己尝试的记录,具体可以参考如下 链接 先说说git 提交规范把,这里基本都是这个工具 cz-customizable 1,安装 npm install cz- ...

随机推荐

  1. ASP.NET问题处理---“数据请求超时错误“”

    数据请求超时,一般有2中解决方式: 1.页面AJAX处理数据时延长时间: 2.后台数据库连接取数据时延长时间. 由于我的后台数据库连接取数据为循环读取数据,所以不存在超时问题,这里具体说说如何修改AJ ...

  2. SQL SERVER格式化字符串位数,不足补零

    本文举例在SQLSERVER中将1格式化为001的方法: 1.方法一SQL语句执行如下: ,) as col 2.方法二SQL语句执行如下: ,) ,) as col 下面是C#代码实现方法: ; & ...

  3. ZeroMemory

    ZeroMemory: 用0填充一个内存块 void ZeroMemory( [in] PVOID Destination, //内存块开始地址 [in] SIZE_T Length //填充块大小 ...

  4. weblogic9.2重置密码

    1.删除DefaultAuthenticatorInit.ldift 2.执行命令:java -cp /home/weblogic/bea/weblogic92/server/lib/weblogic ...

  5. angularjs ios title不能修改的bug的解决方法

    在app.js加入下面这句代码 就可以解决. function ($rootScope, $state, $stateParams, $log, httpService, apiUrl, cookie ...

  6. Swift 语法须知

    什么是swift? swift是 2014 WWDC 发布的一款脚本语言. 使用Swift的好处: OC ARC    最大的困难  内存管理 而  swift  不用担心内存方面.   简洁 ,功能 ...

  7. ios专题 -block用法

    what is block Blocks are a language-level feature added to C, Objective-C and C++, which allow you t ...

  8. PHP学习笔记(七)

    <wordpress 50个过滤钩子> 11-20 11.gettext: 过滤wordpress的翻译数据. 在wordpress中,使用__(), _e(), _x(), _ex(), ...

  9. TFTPD32, 3CDaemon, FlashFxp

    TFTPD32, 3CDaemon, FlashFxp ——各种网络传输下载工具简介—— 一.将3CDaemon.exe作为TFTP服务端,开发板作为TFTP客户端 1.如上图所示,设置好3CDaem ...

  10. 计数排序之python 实现源码

    old = [2, 5, 3, 0, 2, 3, 0, 3] new = [0, 0, 0, 0, 0, 0] for i in range(len(old)): new[old[i]] = new[ ...