[TOC]
1、gradle.properties
在gradle.properties中配置好的参数,可以再build.gradle中直接使用。但要注意类型。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
//当出现3个或者3个以上环境和多个渠道时,线上不提供debug打包方式。
//直接使用特定渠道包作为测试包,指定不同包名
debug {
signingConfig signingConfigs.config
buildConfigField 'String','BASE_URL',BASE_URL_DEBUG
buildConfigField 'String','H5_BASE_URL',H5_BASE_URL_DEBUG
buildConfigField 'String','NODE_JS',NODE_JS_DEBUG
buildConfigField 'boolean','IS_TEST','true'
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"
,JPUSH_APPKEY_VALUE: JPUSH_KEY_TEST]
}
}
如上所示,BASE_URL_DEBUG就是在gradle.properties中配置的变量
2、多渠道打包配置manifest文件
在AndroidManifest.xml文件中添加占位符
<meta-data
android:name="JPUSH_APPKEY"
android:value="${JPUSH_APPKEY_VALUE}"/>
然后在build.gradle中进行赋值
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"
,JPUSH_APPKEY_VALUE: JPUSH_KEY_TEST]
3、-P命令入参构建
将姓名、时间等作为参数构建apk。
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
if (project.hasProperty('ivan')){
outputFileName = ivan+".apk"
} else {
outputFileName = "123.apk"
}
}
}
}
如果此时报错
Cannot set the value of read-only property 'outputFile' .......
貌似是因为gradle版本的问题,那就换成下面的代码:
debug {
android.applicationVariants.all { variant ->
variant.outputs.all {
if (project.hasProperty('ivan')){
outputFileName = ivan+".apk"
} else {
outputFileName = "123.apk"
}
}
}
}
gradle 命令:
gradle assembleDebug -Pivan=zhang
这样打包出来的apk名称为zhang.apk
网友评论