多风味库的主要来源没有 类

No classes from main sources from multi flavor library

我有一个有 2 种风格的图书馆项目

configurations {
    // Initializes placeholder configurations that the Android plugin can use when targeting
    // the corresponding variant of the app.
    internalDebug {}
    internalRelease {}
    externalDebug {}
    externalRelease {}
}

flavorDimensions("outerInner")
productFlavors {
    internal{dimension "outerInner"}
    external{dimension "outerInner"}
}

build.gradle

中未定义自定义 sourceSet

对于其中一种口味,我在里面有自定义布局:

所有其他来源应来自 main

当我将这个 libaryr 添加到应用程序时:

implementation project(path: ':sdk', configuration: 'internalDebug')

根本没有 sdk 库的 类,所有导入都标记为红色。

问题是为什么应用程序中没有来自main的库文件夹的来源?

最后我得到了在应用程序 build.gradle 中定义 missingDimensionStrategy 的解决方案。

// Specifies a sorted list of flavors that the plugin should try to use from
// a given dimension. The following tells the plugin that, when encountering
// a dependency that includes a "minApi" dimension, it should select the
// "minApi18" flavor. You can include additional flavor names to provide a
// sorted list of fallbacks for the dimension.
missingDimensionStrategy 'outerInner', 'internal'

这意味着如果在构建过程中 gradle 将找到一个具有 flavorDimension outerInner 的依赖项,它应该为此使用 internal

应用后我可以简单地包括

implementation project(path: ':sdk')

对于每个应用程序的构建类型,它将使用适当的 debugrelese SDK 构建并回退到 internal 实施。

External 实现通过 artifact bundleExternalDebugAar 设置交付给 Maven。