gradle自动编译
CommentAndroid Studio使用gradle进行构建,Android Studio在进行构建时实际上就是使用的gradle各种命令,脱离Android Studio的ide环境,通过这些命令gradle也可以进行各种构建,结合脚本即可完成自动编译的内容
配置签名文件
在project的gradle文件中定义签名文件的相关信息,这样就可以在所有module中引用ext {
minifyEnabled = true //混淆开关
sign = [
keyAlias : "xxx",
keyPassword : "xxxxx",
storePassword : "xxxxxxxxx",
storeFile : "../../xxxx/xxxx",
serverPath : "../../Apk/",
windowsPath : "../../Apk"
]
}在module的gradle文件中的android节点下配置使用签名,可以对release和debug进行区分指定
android {
signingConfigs {
debug {
keyAlias sign.keyAlias
keyPassword sign.keyPassword
storeFile file(sign.storeFile)
storePassword sign.storePassword
}
release {
keyAlias sign.keyAlias
keyPassword sign.keyPassword
storeFile file(sign.storeFile)
storePassword sign.storePassword
}
}
buildTypes {
debug {
minifyEnabled false
signingConfig signingConfigs.debug
}
release {
minifyEnabled rootProject.ext.minifyEnabled
shrinkResources rootProject.ext.minifyEnabled
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}对生成apk的名称进行指定
可以针对linux系统和windows系统分别将apk指定到不同路径
可以将混淆生成的mapping文件进行备份
还是在android节点下进行添加android {
android.applicationVariants.all { variant ->
if ("release" == variant.buildType.name) {
assembleRelease.doLast {
variant.outputs.all { output ->
file(output.outputFile.parent).eachFileRecurse(groovy.io.FileType.FILES) { file ->
if (!file.name.endsWith('.apk')) { //生成apk的同时会生成一些其他信息文件,进行删除
delete file
}
}
if (org.gradle.internal.os.OperatingSystem.current().isLinux()) {
copy {
from output.outputFile.parent
into file(sign.serverPath)
rename { filename ->
filename.replace("-release", "")
}
}
} else {
copy {
from output.outputFile.parent
//into output.outputFile.parentFile.parent //如果在Android Studio中进行生成并且只是将生成的apk最终生成到指定目录
into file(sign.windowsPath)
rename { filename ->
filename.replace("-release", "")
}
}
}
delete output.outputFile.parent
}
copy { //备份混淆对照文件到对应目录
from "build/outputs/mapping/release/"
into "mapping/release${defaultConfig.versionName}/"
}
}
}
}
}使用gradle命令进行编译
命令对应的文件在project的根目录中,为gradlew.bat和gradlew文件,windows下使用gradlew.bat,linux使用gradlew(需要赋予运行权限)
如果编译整个project使用:./gradlew assembleRelease
即可
如果针对单个module进行编译:./gradlew module名称:assembleRelease
清理编译生成的内容:./gradlew clean