无法使用自定义Gradle任务更改清单标签

时间:2018-09-12 08:21:13

标签: android gradle variant

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")

生效。

我想知道为什么,以及如何对任务进行编码以使其正确。 一切都会有所帮助。 谢谢

0 个答案:

没有答案