androidStudio 中 gradle 常用功能
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 常用功能的更多相关文章
- AndroidStudio 中 gradle.properties 的中文值获取乱码问题
0x01 现象 在gradle.properties中定义了全局变量,然后从 build.gradle 中设置 app_name: resValue "string", " ...
- AndroidStudio中gradle异常:unexpected end of block data
原因:可能是Android buildTools版本不够高. 解决方法:打开build.gradle,将android中buildToolsVersion改为'20.0.0' (我使用的是gradle ...
- Html中Select的增删改查排序,和jQuery中的常用功能
这里主要通过select引出常用的jquery 前台页面 <select class="form-control" id="commonSelect"&g ...
- ps中的常用功能与技巧
1.如何将多个png图片合成一个? 首先,打开ps,新建一个透明色画布,然后再将两张图片拖入(注意:回车拖入),然后再选中这三个图层,右键选择合并图层,最后快速导出为png即可. 2.如何快速找到ps ...
- Excel中的常用功能
Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域. Excel删除公式保留数据 1.简单举例一个简单的公 ...
- AndroidStudio中各种常见快捷键记录
AndroidStudio中各种常用操作快捷键记录 简单方法 直接设置AS的快捷键与eclipse相同,方便直接从eclipse切到AS的人. 常用的AS的默认快捷键 ctrl + N 根据类名查找J ...
- 【Java基础】Java开发过程中的常用工具类库
目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...
- 项目中常用功能,如:流媒体、健康数据(步数等)等-b
整理iOS开发中使用的各种流媒体和常用的高级功能.由于时间关系,目前只写了一部分功能,全部都采用的是系统方法,没用第三方,截图如下: screen1.png screen2.png 个人比较懒,不爱多 ...
- AndroidStudio中添加依赖的三种方式以及如何引入so文件和arr文件
AndroidStudio中添加依赖的三个选项,如图: 分别为:库依赖(Library dependency).文件依赖(File dependency)和module依赖(Module dep ...
随机推荐
- ftpclient 550 permission denied
遇到一个坑,ftp服务器有主被动模式,如果ftpclient 没有设置模式,默认就是主动模式,如果ftp服务器是被动模式,那么使用ftpclient就执行上传和下载,就会失败, 添加ftpClient ...
- Akka(28): Http:About Akka-Http
众所周知,Akka系统是基于Actor模式的分布式运算系统,非常适合构建大数据平台.所以,无可避免地会出现独立系统之间.与异类系统.与移动系统集成的需求.由于涉及到异类和移动系统,系统对接的方式必须在 ...
- 虚拟机VMware Workstation Pro下安装ubuntu-14.04.4(64位)方法(附ubuntu-14.04-desktop-amd64.iso下载链接)
ubuntu-14.04-desktop-amd64.iso下载: 链接:http://pan.baidu.com/s/1bFi0d4 密码:yx0l 零基础linux使用入门教学视频分享: 链接:h ...
- javascript 之基本包装类型--04
基本包装类型 基本包装类型是特殊的引用类型.每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而可以调用属性.方法来进行后续操作. ECMAScript还提供了三种基本包装类型 ...
- 有两组随机生成的(0~99999)Int32数据A和B,将A按顺序判断在B中是否存在并记录在Boolean型的C中
http://www.cnblogs.com/asxinyu/p/4504487.html
- 个性化推荐系统(七)--- ABTest ab测试平台
个性化推荐系统.搜索引擎.广告系统,这些系统都需要在线上不断上线,不断优化,优化之后怎么确定是好是坏.这时就需要ABTest来确定,最近想的办法.优化的算法.优化的逻辑数据是正向的,是有意义的,是提升 ...
- ES6新特性 Class的实现
ES5之前类的继承是靠原型实现的,而这一过程的实现又涉及到一大堆的原型定义,特别是ES5推出了Object.definePorperty()方法后,代码更加晦涩.但是这种方式正是javascript这 ...
- CUDA C Best Practices Guide 在线教程学习笔记 Part 2
10. 执行配置优化 ● 一个 SM中,占用率 = 活动线程束的数量 / 最大可能活动线程束的数量.后者保存在设备属性的 maxThreadsPerMultiProcessor 分量中(GTX10 ...
- 1.Introduction 介绍
Welcome to Log4j 2! Introduction Almost every large application includes its own logging or tracing ...
- JS是按值传递还是按引用传递?【转载】
最近遇到个有趣的问题:“JS中的值是按值传递,还是按引用传递呢?” 在分析这个问题之前,我们需了解什么是按值传递(call by value),什么是按引用传递(call by reference). ...