class ReleaseTask extends DefaultTask {
@TaskAction
def releaseTask() {
def android = project.extensions.android
android.applicationVariants.all { variant ->
def mergedFlavor = variant.getMergedFlavor()
mergedFlavor.manifestPlaceholders = [UMENG_APPKEY: '', UMENG_MESSAGE_SECRET: '']
variant.buildConfigField("boolean", "enableChangeEnvDialog", "false")
}
}
}
project.tasks.create("releaseTask", ReleaseTask)
上面的代码是我自定义的gradle任务。
buildTypes {
release {
signingConfig signingConfigs.release
zipAlignEnabled true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
manifestPlaceholders = [UMENG_APPKEY:'',UMENG_MESSAGE_SECRET:'']
}
}
这段代码是我的buildType块配置。
现在我的问题是,当我构建发行版APK时,我使用了
./gradlew clean releaseTask assembleRelease
但是在发行版apk中,我没有在任务中获得placeHolder,而是在buildType / release块中获得了键。但是代码
variant.buildConfigField("boolean", "enableChangeEnvDialog", "false")
生效。
我想知道为什么,以及如何对任务进行编码以使其正确。 一切都会有所帮助。 谢谢