gradle方便的命令
在gradle环境下,Android打包可以很方便的使用命名行进行自动打包流程如:
.gradlew assemble
能自动打出所有包。 但是在实际使用中,我们希望不同的打包在程序内写入不同的信息,比如修改全局的网络请求等。
代码注释讲解
android {
signingConfigs {
myconfig {
keyAlias
'xxxxxx'
keyPassword
'xxxxxx'
storeFile
file(
'xxxxxx')
storePassword
'xxxxxx'
v2SigningEnabled falseo
}
}
buildTypes {
debug {
signingConfig signingConfigs.myconfig
}
release {
signingConfig signingConfigs.myconfig
}
}
productFlavors {
flavorDimensions
'channel',
'host'
hqyx {
dimension
'channel'
manifestPlaceholders.
put(
'PACKAGE_CHANNEL_VALUE',
'hqyx')
}
z_tengxun {
dimension
'channel'
manifestPlaceholders.
put(
'PACKAGE_CHANNEL_VALUE',
'tengxun')
}
z_baidu {
dimension
'channel'
manifestPlaceholders.
put(
'PACKAGE_CHANNEL_VALUE',
'baidu')
}
ttest {
dimension
'host'
buildConfigField(
'String',
'HOST', project.properties[
'environment.host.test'])
}
online {
dimension
'host'
buildConfigField(
'String',
'HOST', project.properties[
'environment.host.online'])
}
}
applicationVariants.all { variant ->
variant.outputs.
each { output ->
if (!variant.buildType.debuggable) {
def outputFile = output.outputFile
if (outputFile !=
null && outputFile.name.endsWith(
'.apk')) {
def fileName =
"Stu_${defaultConfig.versionName}_${new Date().format("MMddHHmm
")}_${variant.flavorName}.apk"
fileName = fileName.
replace(
"_z_",
"_")
output.outputFile =
new File(outputFile.parent, fileName)
}
}
}
}
android.variantFilter { variant ->
if (variant.buildType.name.
contains(
'debug')) {
variant.getFlavors().
each() { flavor ->
if (flavor.name.
contains(
'z_')) {
variant.setIgnore(
true)
}
}
}
else {
variant.getFlavors().
each() { flavor ->
if (flavor.name.
contains(
'develop')) {
variant.setIgnore(
true)
}
}
}
}
}
查看gradle的配置效果
点击AndroidStudio左下角的Build Variants即可查看所有的Variant 在AndroidStudio下的Terminal输入./gradlew assembleHqyxSimDebug即可输入对应的安装包