我有一个多模块Android项目,该项目的模块仅包含用于通过testImplementation project(path: 'libtestsupport')
进行测试的模块。除非我通过implementation project(path: 'libtestsupport')
将该模块用于非测试构建,否则自动变体切换似乎不起作用,我不希望这样做,因为我只想在测试中使用它。这导致此库模块的构建变体与其他模块不匹配:
是否有任何方法可以使该库依赖项像应用程序中的其他依赖项一样自动切换构建变体?
解决方法:Resolve build errors related to dependency matching
生成错误的原因:
您的应用程序包含库依赖项不包含的构建类型。
例如,您的应用程序包括“登台”构建类型,而依赖项仅包括“调试”和“发布”构建类型。
请注意,当库依赖项包含您的应用程序不包含的构建类型时,这没有问题。这是因为插件根本不会从依赖项中请求构建类型。
分辨率
使用matchingFallbacks指定给定构建类型的替代匹配,如下所示:
// In the app's build.gradle file.
android {
buildTypes {
debug {}
release {}
staging {
// Specifies a sorted list of fallback build types that the
// plugin should try to use when a dependency does not include a
// "staging" build type. You may specify as many fallbacks as you
// like, and the plugin selects the first build type that's
// available in the dependency.
matchingFallbacks = ['debug', 'qa', 'release']
}
}
}