1. gradle 使用 svn 当前版本信息.

def getSvnRevision() {
new ByteArrayOutputStream().withStream { os ->
def result = exec {
executable = 'svn'
args = ['info']
standardOutput = os
}
def outputAsString = os.toString()
def matchLastChangedRev = outputAsString =~ /Last Changed Rev: (\d+)/ ext.svnRev = "${matchLastChangedRev[0][1]}".toInteger()
} return svnRev
}

使用例子:

versionCode 1
versionName "0.${versionCode}." + getSvnRevision()

使用 git checkout 的 6位短版本信息.

task gitReversion {
def cmd = "git rev-parse --short HEAD"
   // git rev-list --all | wc -l 获取提交次
def proc = cmd.execute()
ext.revision = proc.text.trim()
}

使用例子:

versionCode 1
versionName "0.${versionCode}." + gitReversion.revision

  

gradle 拷贝文件:

task copyTaskWithPatterns(type: Copy) {
from "${buildDir}/outputs/apk/"
into "c:/apks/" // 不拷贝未签名的文件.
exclude { details -> details.file.name.endsWith('-unaligned.apk') || details.file.name
.endsWith('-unsigned.apk') }
include "**/*.apk" println "apk copied. ${buildDir}"
} build.doLast {
tasks.copyTaskWithPatterns.execute()
}

其中注意的是 如果偷懒写法的话, exclude 在include之前.

如下的 build 文件指定输出的文件名.

    buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
} debug {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable true
jniDebugBuild true
} applicationVariants.all { variant -> def file = variant.outputFile
if(variant.buildType.name.equals("release")){ // 判断编译的类型
variant.outputFile = new File(
(String) file.parent,
(String) (project.archivesBaseName + "-" + variant.mergedFlavor.versionName
+ ".apk")
)
}else{
variant.outputFile = new File(
(String) file.parent,
(String) (project.archivesBaseName + "-" + variant.mergedFlavor.versionName
+ ".apk")
)
}
}
}

  

另外

variant.baseName = {moduleName}-debug,
 project.archivesBaseName ={projectName}
 variant.name={moduleName}Debug

关于 android-studio中 gradle 的使用方式. 参见: http://tools.android.com/tech-docs/new-build-system/user-guide

如下 表示 自定义task,  callSignBAT  在运行此task 之前, 必须执行 copyToSign 这个task,

task callSignBAT(type: Exec, dependsOn: "copyToSign") {
println(">>>start call sign script....") def command = 'Sign_MUI.bat'
if (!file("sign/src/${apkName}").exists()) {
command = 'exit'
}
println(">>>exec command:" + command) workingDir 'sign'
commandLine 'cmd', '/c', command standardOutput = new ByteArrayOutputStream() doLast {
checkExecResult(execResult, 'Error', standardOutput);
} println(">>call sign script finished.")
} def checkExecResult(execResult, failText, standardOutput){
println("execResult:" + execResult)
println("standardOutput:"+standardOutput.toString())
if (execResult) {
if (execResult.getExitValue() != 0) {
throw new GradleException('Non-zero exit value: ' + execResult.getExitValue())
}
if (standardOutput.toString().contains(failText)){
throw new GradleException('"' + failText + '" string in output: ' + standardOutput.toString())
}
} else {
throw new GradleException('Returned a null execResult object')
}
}

  

  

androidStudio 中 gradle 常用功能的更多相关文章

  1. AndroidStudio 中 gradle.properties 的中文值获取乱码问题

    0x01 现象 在gradle.properties中定义了全局变量,然后从 build.gradle 中设置 app_name: resValue "string", " ...

  2. AndroidStudio中gradle异常:unexpected end of block data

    原因:可能是Android buildTools版本不够高. 解决方法:打开build.gradle,将android中buildToolsVersion改为'20.0.0' (我使用的是gradle ...

  3. Html中Select的增删改查排序,和jQuery中的常用功能

    这里主要通过select引出常用的jquery 前台页面 <select class="form-control" id="commonSelect"&g ...

  4. ps中的常用功能与技巧

    1.如何将多个png图片合成一个? 首先,打开ps,新建一个透明色画布,然后再将两张图片拖入(注意:回车拖入),然后再选中这三个图层,右键选择合并图层,最后快速导出为png即可. 2.如何快速找到ps ...

  5. Excel中的常用功能

    Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域. Excel删除公式保留数据 1.简单举例一个简单的公 ...

  6. AndroidStudio中各种常见快捷键记录

    AndroidStudio中各种常用操作快捷键记录 简单方法 直接设置AS的快捷键与eclipse相同,方便直接从eclipse切到AS的人. 常用的AS的默认快捷键 ctrl + N 根据类名查找J ...

  7. 【Java基础】Java开发过程中的常用工具类库

    目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...

  8. 项目中常用功能,如:流媒体、健康数据(步数等)等-b

    整理iOS开发中使用的各种流媒体和常用的高级功能.由于时间关系,目前只写了一部分功能,全部都采用的是系统方法,没用第三方,截图如下: screen1.png screen2.png 个人比较懒,不爱多 ...

  9. AndroidStudio中添加依赖的三种方式以及如何引入so文件和arr文件

    AndroidStudio中添加依赖的三个选项,如图:    分别为:库依赖(Library dependency).文件依赖(File dependency)和module依赖(Module dep ...

随机推荐

  1. python 基础大纲

    机器语言: 特点:计算机能够看懂的0和1去写程序 优点:程序运行速度快 缺点:开发效率低 汇编语言: 特点:用一些英文标签代替一串而精致数字去写程序 优点:比机器语言好一点,操作系统内大量使用汇编语言 ...

  2. JSTL标签库的基本教程之核心标签库(一)

    JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...

  3. 在Owin Self-Hosing下实现每个请求中共享上下文(数据)

    问题 这几天在做公司的外部WebApi网关,由于使用了OAuth2.0,所以不得不使用Owin来部署网关. 而涉及到请求上下文的问题,为了使业务层能获取到请求头的信息,又不与网关耦合,决定把请求信息写 ...

  4. R语言进行机器学习方法及实例(一)

    版权声明:本文为博主原创文章,转载请注明出处   机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...

  5. Myeclipse 2014破解教程

    现在很多java编程软件人士大都使用MyEclipse,这软件的强大之处我就不说了,我说下安装步骤与破解步骤,若无JDK则先安装再配置环境变量,这个我就不讲了 工具/原料   MyEclipse安装包 ...

  6. myeclipse+tomcat中出现org.apache.juli.logging.LogFactory这样的错误[转]

      将项目部署好后,启动tomcat后报错,java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory 报这个错说明你用的是t ...

  7. C语言(记录)——内存相关_2:内存的编址与管理

    本文是基于嵌入式的C语言 --------------------------------------------------------------------------------------- ...

  8. 伤不起的微信小程序

    前段时间不是很忙,刚好公司需要开发一个微信小程序,于是我就入坑了(此坑还是有点深滴,请备好干粮). 我是一名iOS开发工程师,个人觉得入门开发小程序的话,需要基本的web前端知识,比如说:代码的书写格 ...

  9. HDU1255覆盖的面积

    覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  10. Very Simple Problem

    Very Simple Problem Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...