升级Google services至3.3.0后遇多项目变体匹配错误求助
你在把com.google.gms:google-services从3.2.1升级到3.3.0后遇到的这个错误,本质是Gradle解析依赖时找到了多个符合主项目属性要求的变体,却无法确定最终选择哪一个。核心矛盾是依赖模块asq-react-native-facebook-log-in缺少主项目要求的development属性配置,同时Android Gradle Plugin(AGP)版本和Google Services插件版本也存在兼容性不匹配的问题。
先把你的配置和错误信息整理清晰:
配置实现
buildscript { repositories { jcenter() google() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' classpath "com.google.gms:google-services:3.3.0" // 升级后的版本 } }
错误信息
More than one variant of project :asq-react-native-facebook-log-in matches the consumer attributes: - Configuration ':asq-react-native-facebook-log-in:debugApiElements' variant android-aidl: - Found artifactType 'android-aidl' but wasn't required. - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'. - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required. - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. - Required default 'development' but no value provided. - Required org.gradle.usage 'java-api' and found compatible value 'java-api'.
(注:错误中类似的Configuration段落重复多次,此处为精简展示)
可行的解决方案
1. 升级Android Gradle Plugin(AGP)版本
Google Services 3.3.0对AGP版本有最低要求(建议3.2.0及以上),而你当前使用的AGP是3.1.2,版本不匹配大概率是触发错误的核心原因。把AGP升级到3.2.1试试:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // 升级AGP版本 classpath "com.google.gms:google-services:3.3.0" } }
2. 给依赖模块添加对应属性配置
错误里明确提到Required default 'development' but no value provided,说明你的主项目有一个名为development的product flavor,但依赖模块asq-react-native-facebook-log-in没有对应的配置。你需要在该模块的build.gradle中添加相同的flavor配置:
android { flavorDimensions "default" productFlavors { development { dimension "default" } } }
这样Gradle就能找到完全匹配的变体,不会再出现多选冲突。
3. 暂时降级Google Services版本
如果暂时无法调整AGP或依赖模块配置,可以先降级回3.2.1版本,确保项目能正常运行,后续再逐步完成环境兼容后升级:
classpath "com.google.gms:google-services:3.2.1"
4. 明确指定依赖变体(应急方案)
如果以上方案都无法快速生效,可以在主项目的依赖声明中直接指定要使用的变体,强制Gradle选择特定配置:
implementation project(path: ':asq-react-native-facebook-log-in', configuration: 'debugApiElements')
不过这种方式属于临时 workaround,不推荐长期使用,还是建议优先解决版本兼容或属性匹配的根本问题。
内容的提问来源于stack exchange,提问作者Ilja

