兩種方式
第一種 針對打包類型或者渠道配置不同的值
AndroidMenifest文件占位符 ${}
<application
android:name="com.x.x"
android:icon="@mipmap/app_ic"
android:label="${app_name}">
在guidle中 manifestPlaceholders 對應(yīng)的必須是數(shù)組
對應(yīng) debug 和release 可以不同
buildTypes {
debug {
manifestPlaceholders = [app_name: “xxx” ]
}
}
或?qū)?yīng)每個渠道可以設(shè)置不同的值
productFlavors {
mi{
manifestPlaceholders = [app_name: “xxx” ]
}
}
第二種 針對每個變種 配置不同的值
getApplicationVariants().all { variant ->
variant.outputs.each() { output ->
output.processManifest.doLast {
//${buildDir}是指build文件夾
//${variant.dirName}是flavor/buildtype阎肝,例如GooglePlay/release效拭,運行時會自動生成
//下面的路徑是類似這樣:build/intermediates/manifests/GooglePlay/release/AndroidManifest.xml
def manifestFile = "${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml"
System.out.println("----manifestFile:" + manifestFile + "---variant.applicationId:" + variant.applicationId)
//將字符串REPLACE_KEY替換成flavor的名字
def file = new File(manifestFile)
def updatedContent = file.getText('UTF-8').replaceAll("dynamic", "${variant.applicationId}")
file.write(updatedContent, 'UTF-8')
}
}
}