Gradle 7.3.1中matchingFallbacks已废弃,求替代方案
Gradle 7.3.1中
matchingFallbacks的替代方案 在Gradle 7.3.1中,matchingFallbacks被标记为过时,官方推荐以下几种替代方案:
1. 使用attributeMatchingStrategy配置属性匹配策略
这是官方主推的替代方式,通过属性匹配策略定义变体的匹配优先级,替代原matchingFallbacks的 fallback 逻辑,适用于模块依赖场景,示例如下:
android { flavorDimensions "version" productFlavors { demo { dimension "version" } full { dimension "version" } } dependencies { implementation(project(":lib")) { attributes { // 指定当前模块的flavor属性 attribute(AndroidAttributes.FLAVOR_ATTRIBUTE, project.objects.named(AndroidAttributes.Flavor, "demo")) // 配置匹配顺序,等同于原matchingFallbacks的优先级 attributeMatchingStrategy(AndroidAttributes.FLAVOR_ATTRIBUTE) { order("demo", "full") } } } } }
2. 在项目全局配置属性匹配策略
如果需要为整个项目统一设置变体匹配规则,可以在settings.gradle中通过dependencyResolutionManagement配置全局属性匹配策略:
dependencyResolutionManagement { attributesSchema { attribute(AndroidAttributes.FLAVOR_ATTRIBUTE) { matchingStrategy { // 定义全局的flavor匹配顺序 order("demo", "full") } } } }
3. 直接指定依赖的具体变体
如果不需要动态匹配,可直接指定依赖模块的具体变体,避免依赖 fallback 逻辑,示例:
// 直接依赖lib模块的demoDebug变体 implementation(project(path: ":lib", configuration: "demoDebug"))
补充说明
matchingFallbacks被弃用的核心原因是Gradle 7.x版本推进基于属性的变体匹配体系,原matchingFallbacks是简化版的匹配逻辑,新的属性匹配策略更灵活,能支持更复杂的变体组合场景。
内容的提问来源于stack exchange,提问作者hong developer
相关产品推荐
相关产品推荐

