Gradle代码在更新到gradle 6.x变体后损坏,getVariantData().getVariantConfiguration()不工作

xmd2e60i  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(167)

我使用以下代码为不同的变体定义了清单占位符。

android.applicationVariants.all { variant ->
//        def names = variant.getVariantData().getVariantConfiguration().getFlavorName()
    def mergedFlv = variant.getVariantData().getVariantConfiguration().getMergedFlavor()

    mergedFlv.manifestPlaceholders = [pl1: mergedFlv.getApplicationId() + mergedFlv.getApplicationIdSuffix()]

字符串
它运行良好.但我更新到最新版本的Android Studio一个星期前,也更新了gradle版本为这个项目时,Android Studio提示和Android Studio抛出以下错误.

No signature of method: com.android.build.gradle.internal.variant.ApplicationVariantData.getVariantConfiguration() is applicable for argument types: () values: []


我该如何解决此问题?

更新

我在https://android.googlesource.com/platform/tools/build/+/0d498ccf6f91a12c036b382b7ae2b1a809eb2b9d/gradle/src/main/groovy/com/android/build/gradle/internal/variant/ApplicationVariantData.java找到了这个类
它没有getVariantConfiguration()方法,但它扩展了ApkVariantData类,而ApkVariantData类又扩展了BaseVariantDataBaseVariantData有这个公共方法getVariantConfiguration()
因此,它应该是可访问的。我关闭并重新打开项目以及android studio,并尝试再次构建项目太.似乎不工作。
请帮忙

kmb7vmvb

kmb7vmvb1#

截至目前,我将我的Android Gradle插件版本从4.0.0降级为3.6.3,Gradle版本从6.5.1降级为5.6.4,遵循this答案(降级方法),它工作了。
Gradle似乎有问题/bug。

biswetbf

biswetbf2#

我认为这可能不再起作用。请参阅Android 4.0已知问题-变体输出
请尝试以下操作:

android.applicationVariants.all { variant ->
//        def names = variant.getFlavorName()
    def mergedFlv = variant.getMergedFlavor()

    mergedFlv.manifestPlaceholders = [pl1: mergedFlv.getApplicationId() + mergedFlv.getApplicationIdSuffix()]

字符串
对我很有效。

相关问题