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 ...
随机推荐
- JS 巧用 && 与 ||
在对于流程控制语句当中,我们最熟悉不过的就是 if (条件){ //代码块 }else{ //代码块 } 对于一个执行不同的代码来说,如果执行的代码很多,可能就有必要使用上面这种方式 但往往我们开发当 ...
- java集合相关问题
1.Map/Set 的 key 为自定义对象时,必须重写 hashCode 和 equals: 2.ArrayList 的 subList 结果不可强转成 ArrayList,否则会抛出 ClassC ...
- git 合并两个仓库
我有两个仓库,一个是gitbook在写一本 一个是放在github的垃圾,这个是我想要开个人网站,但是做的还是不行https://github.com/lindexi/lindexi.github.i ...
- Ceph和Openstack的cinder模块对接方法
1.创建存储池 在ceph节点中执行如下语句. #ceph osd pool create volumes 2.配置 OPENSTACK 的 CEPH 客户端 在ceph节点两次执行如下语句,两次{y ...
- 谈谈我对php通信的理解及人生小感
故事背景: 小王和小甜是亲密无间的好朋友. 小王到自己QQ群里看到一个免单活动, 自己支付宝余额不足, 遂用小甜的手机淘宝先花150元购买了活动产品. 到货后商家告诉小王, 确认收货后提供旺旺账号.支 ...
- 购物篮算法的理解-基于R的应用
是无监督机器学习方法,用于知识发现,而非预测,无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤.缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合理. 一,概念术语 ...
- .NET之父 - Anders Hejlsberg
简介 安德斯·海尔斯伯格(Anders Hejlsberg,1960.12~),丹麦人,Turbo Pascal编译器的主要作者,Delphi和.NET之父! 安德斯·海尔斯伯格曾在丹麦技术大学学习工 ...
- [ACdream]女神教你字符串——导字符串
Problem Description 正如大家知道的,女神喜欢字符串,而在字符串中,女神最喜欢回文字符串,但是不是所有的字符串都是回文字符串,但是有一些字符串可以进行“求导”来变成回文字符串. 字符 ...
- myeclipse10破解失败,正解
此文图借用他人的,很是经典 第一步:输入任意用户名 第二步:点击Systemid... 按钮,自动生成本机器的systemid.ps:确定本机的systemid,如果和破解器生成不一致,需要copy本 ...
- 在vue2.0中使用sass
第一步:使用sass必须安装下面三个东西 cnpm install node-sass --save //安装node-sass cnpm install sass-loader --save //安 ...