diff --git a/projects/sdk/core/gradle-plugin/src/main/kotlin/com/tencent/shadow/core/gradle/ShadowPlugin.kt b/projects/sdk/core/gradle-plugin/src/main/kotlin/com/tencent/shadow/core/gradle/ShadowPlugin.kt index 00faba92d..0c5c0f106 100644 --- a/projects/sdk/core/gradle-plugin/src/main/kotlin/com/tencent/shadow/core/gradle/ShadowPlugin.kt +++ b/projects/sdk/core/gradle-plugin/src/main/kotlin/com/tencent/shadow/core/gradle/ShadowPlugin.kt @@ -20,6 +20,7 @@ package com.tencent.shadow.core.gradle import com.android.build.gradle.AppExtension import com.android.build.gradle.BaseExtension +import com.android.build.gradle.api.ApplicationVariant import com.tencent.shadow.core.gradle.extensions.PackagePluginExtension import com.tencent.shadow.core.manifest_parser.generatePluginManifest import com.tencent.shadow.core.transform.ShadowTransform @@ -100,12 +101,16 @@ class ShadowPlugin : Plugin { private fun createGeneratePluginManifestTasks(project: Project) { val appExtension: AppExtension = project.extensions.getByType(AppExtension::class.java) - appExtension.applicationVariants.filter { variant -> + val pluginVariants = appExtension.applicationVariants.filter { variant -> variant.productFlavors.any { flavor -> flavor.dimension == ShadowTransform.DimensionName && flavor.name == ShadowTransform.ApplyShadowTransformFlavorName } - }.forEach { pluginVariant -> + } + + checkPluginVariants(pluginVariants, appExtension, project.name) + + pluginVariants.forEach { pluginVariant -> val output = pluginVariant.outputs.first() val processManifestTask = agpCompat.getProcessManifestTask(output) val manifestFile = agpCompat.getManifestFile(processManifestTask) @@ -137,6 +142,29 @@ class ShadowPlugin : Plugin { } } + private fun checkPluginVariants( + pluginVariants: List, + appExtension: AppExtension, + projectName: String + ) { + if (pluginVariants.isEmpty()) { + val errorMessage = StringBuilder() + errorMessage.appendLine("在${projectName}中找不到Shadow所添加的Dimension flavor") + errorMessage.appendLine("当前所有flavor打印如下:") + appExtension.applicationVariants.forEach { variant -> + errorMessage.appendLine("variant.name:${variant.name}") + variant.productFlavors.forEach { flavor -> + errorMessage.appendLine( + "flavor.name:${flavor.name} flavor.dimension:${flavor.dimension} " + ) + } + } + errorMessage.appendLine("提示:添加flavorDimension时,不要覆盖已有flavorDimension") + errorMessage.appendLine("示例:flavorDimensions(*flavorDimensionList, 'new')") + throw Error(errorMessage.toString()) + } + } + private fun addFlavorForTransform(baseExtension: BaseExtension) { agpCompat.addFlavorDimension(baseExtension, ShadowTransform.DimensionName) try {