多Flavor应用依赖多Flavor库模块时无法匹配变体的问题咨询
解决多Flavor应用与多Flavor库的匹配问题
当库模块添加Flavor后,Gradle无法自动匹配名称不一致的应用Flavor与库Flavor,导致出现No matching variant of project :app:library was found错误。以下是两种可行的解决方法:
方法一:配置匹配回退(推荐)
在应用模块的build.gradle中,为每个应用Flavor指定对应的库Flavor,通过matchingFallbacks告诉Gradle匹配规则:
flavorDimensions "version" productFlavors { appFlavor1 { // 指定该应用Flavor对应库的libraryFlavor1 matchingFallbacks = ['libraryFlavor1'] } appFlavor2 { // 指定该应用Flavor对应库的libraryFlavor2 matchingFallbacks = ['libraryFlavor2'] } appFlavor3 { // 可设置优先级,优先匹配libraryFlavor1,失败则用libraryFlavor2 matchingFallbacks = ['libraryFlavor1', 'libraryFlavor2'] } }
依赖部分保持原有配置即可:
implementation project(path: ':app:library')
方法二:变体感知依赖配置
针对不同的应用Flavor,直接指定对应的库变体(需区分Debug/Release构建类型):
dependencies { // appFlavor1对应libraryFlavor1的Debug/Release变体 appFlavor1Implementation project(path: ':app:library', configuration: 'libraryFlavor1Debug') appFlavor1ReleaseImplementation project(path: ':app:library', configuration: 'libraryFlavor1Release') // appFlavor2对应libraryFlavor2的Debug/Release变体 appFlavor2Implementation project(path: ':app:library', configuration: 'libraryFlavor2Debug') appFlavor2ReleaseImplementation project(path: ':app:library', configuration: 'libraryFlavor2Release') // appFlavor3对应libraryFlavor1的Debug/Release变体 appFlavor3Implementation project(path: ':app:library', configuration: 'libraryFlavor1Debug') appFlavor3ReleaseImplementation project(path: ':app:library', configuration: 'libraryFlavor1Release') }
注意:确保应用与库模块的flavorDimensions名称一致(当前均为"version",无需修改)。
内容的提问来源于stack exchange,提问作者tyczj
相关产品推荐
相关产品推荐

