1. gradle 使用 svn 当前版本信息.
class="brush:groovy;gutter:true;">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