做如下修改:
`private fun addFlavorForTransform(baseExtension: BaseExtension) {
if(baseExtension.flavorDimensionList == null){//AGP3.4.2的这里为空
baseExtension.flavorDimensions(ShadowTransform.DimensionName)
}else{
baseExtension.flavorDimensionList.add(ShadowTransform.DimensionName)
}
try {
baseExtension.productFlavors.create(ShadowTransform.NoShadowTransformFlavorName) {
it.dimension = ShadowTransform.DimensionName
if(isFlavorHasDefaultParam()) it.isDefault = true//AGP3.4.2 没这个属性
}
baseExtension.productFlavors.create(ShadowTransform.ApplyShadowTransformFlavorName) {
it.dimension = ShadowTransform.DimensionName
if(isFlavorHasDefaultParam()) it.isDefault = false
}
} catch (e: InvalidUserDataException) {
throw Error("请在android{} DSL之前apply plugin: 'com.tencent.shadow.plugin'", e)
}
}
fun isFlavorHasDefaultParam() : Boolean{
val declaredFunctions = ProductFlavor::class.declaredFunctions
for (declaredFunction in declaredFunctions) {
if(declaredFunction.name == "setDefault") return true
}
return false;
}
`
`companion object {
private fun getManifestFile(processManifestTask: ManifestProcessorTask) =
when (processManifestTask) {
is ProcessMultiApkApplicationManifest -> {
processManifestTask.mainMergedManifest.get().asFile
}
is ProcessApplicationManifest -> {
try {
processManifestTask.mergedManifest.get().asFile
} catch (e: NoSuchMethodError) {
//AGP小于4.1.0
val dir =
processManifestTask.outputs.files.files
.first { it.path.contains("[/\\\\]merged_manifests".toRegex())}//3.4.2AGP有intent_merged_manifests文件夹 但里面没清单文件
File(dir, ANDROID_MANIFEST_XML)
}
}
else -> throw IllegalStateException("不支持的Task类型:${processManifestTask.javaClass}")
}
private fun getPackageForR(project: Project, variantName: String): String {
val linkApplicationAndroidResourcesTask =
project.tasks.getByName("process${variantName.capitalize()}Resources")
val property = when {
linkApplicationAndroidResourcesTask.hasProperty("namespace") -> {
linkApplicationAndroidResourcesTask.property("namespace")
}
linkApplicationAndroidResourcesTask.hasProperty("originalApplicationId") -> {
linkApplicationAndroidResourcesTask.property("originalApplicationId")
}
else -> throw IllegalStateException("不支持的AGP版本")
}
return when (property) {
is String -> { //AGP3.4.2 这个值类型是String
property
}
is Property<*> -> {
(property as Property<String>).get()
}
else -> throw IllegalStateException("不支持的AGP版本")
}
}
}
`
望验证后做好兼容
做如下修改:
`private fun addFlavorForTransform(baseExtension: BaseExtension) {
fun isFlavorHasDefaultParam() : Boolean{`
`companion object {
`
望验证后做好兼容