我正在开发一个android项目。我想通过gradle构建这个项目。我需要根据不同的市场渠道生成20个apk文件。文件的区别在于清单文件中,我需要用每个通道名称替换字符串" UMENG_VALUE" 我目前的方式是使用这样的产品风味:
productFlavors {
develop{}
official{}
ika{}
}
android.applicationVariants.all{variant ->
def manifestFile="${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml"
new File(manifestFile).write(new File(manifestFile).getText('UTF-8').replaceAll("@string/channel_id", "${variant.productFlavors[0].name}"), 'UTF-8')
variant.processResources.manifestFile = file("${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml")
}
但是这个方法的问题是gradle会根据每个味道执行每个任务吗?但在我看来,大多数步骤完全相同。那么有没有更好的方法让gradle只编译和dex一次只需更改清单文件中的String?