Android Gradle插件(7.0.0-alpha15)已删除variantFilter属性,如何恢复功能?

7

当前的 build.gradle.kts 文件:

android {
  // ...
  variantFilter {
        ignore = run {
            val isSim = flavors[0].name == "sim"
            val isNet = !isSim

            val isU = flavors[1].name == "custom"
            val isMain = !isU

            val buildType  = buildType.name
            val isDebug    = buildType == "debug"
            val isRelease  = buildType == "release"

            (isSim && isRelease) ||
                    (isSim && isU)
        }
    }
}

如何在新版本的插件中创建类似的配置?
更新: 使用答案,上面的代码将如下所示:
    android {
        androidComponents.beforeVariants {
            it.enabled = run {
                val isSim = it.productFlavors[0].second == "sim"
                val isNet = !isSim

                val isU = it.productFlavors[1].second == "custom"
                val isMain = !isU

                val isDebug    = it.buildType == "debug"
                val isRelease  = it.buildType == "release"

               !((isSim && isRelease) || (isSim && isU))
            }
        }
    }

似乎有关联。目前还没有解决方法。https://issuetracker.google.com/issues/117343589。完整的alpha-15更改日志https://androidstudio.googleblog.com/2021/04/android-studio-arctic-fox-canary-15.html - Robert Estivill
1个回答

8
变体API将在AGP 7.0.0中更改为延迟评估模型,而Alpha 15现已删除了旧的API。 未来,您需要使用androidComponents DSL,以便访问变体。请查看beforeVariants块,以有选择地禁用您的变体。
android {
  androidComponents.beforeVariants { variantBuilder ->
    // variantBuilder provides access to buildType and flavor names.
    // It has an 'enabled' property which you could use to disable some variants
    // (logic may need to be inverted from your existing 'ignore' block)
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接