上一篇文章:
一.jenkins+github+gradle 实现android自动化打包全攻略(MAC版)
http://www.jianshu.com/p/9caab25d2cf1
上次已经实现自动打包,那么如何进行APK自定义包名呢?如何进行自签名呢?
主要通过设置项目的build.gradle
一.自定义APK的名称
比如格式为:时间项目名称版本号.apk
Paste_Image.pngapplicationVariants.all { variant ->
if (variant.buildType.name.equals('release')) {
variant.outputs.each { output -> def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "${releaseTime()}_com.andli.myproject_${defaultConfig.versionName}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
def releaseTime() {
return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
还可以自定义APK的输出路径:比如导出到下载目录
output.outputFile = new File("/Users/XXX/Downloads", fileName)
二.自定义签名
Paste_Image.pngsigningConfigs {//签名的配置
release {
storeFile file("签名文件名称.jks")
storePassword '密码'
keyAlias '签名文件别名'
keyPassword '密码'
}
}
signingConfig signingConfigs.release//打包命令行:gradlew assembleRelease
lintOptions {//设置编译的lint开关,程序在buid的时候,会执行lint检查,有任何的错误或者警告提示,都会终止构建
abortOnError false
}
打包后的效果:
Paste_Image.png待解决的问题
APK名称带时分秒,但是时与北京时间相差8小时
Paste_Image.png
解决办法:获取重庆时间
new Date().format("yyyyMMdd HH:mm:ss", TimeZone.getTimeZone("Asia/Chongqing"))
Paste_Image.png
image
网友评论
//Asia/Chongqing GMT+8:00
return new Date().format("yyyyMMdd HH-mm-ss", TimeZone.getTimeZone("Asia/Chongqing")) //年月日时分秒
你这里时区设置不对,所以差了8小时,你可以去看一下,在new 时设置locate到中国这个时区
同时想问一下,这种自定义apk名称后,如何在jenkins中再执行android的安装和monkey测试,这时那里的路径不知道怎么组装出apk名称。