基于Gradle中多风味库的单味模块

Dam*_*que 11 android gradle build.gradle android-productflavors android-build-flavors

我正在研究多种口味app.(下面的gradle文件)

它使用一个名为的库tracker,遵循相同的风格internalexternal

现在,对于棘手的部分,来一个名为的新模块feature,这个没有味道,但它需要trackeras依赖

app.gradle:

android {

    buildTypes {
        debug {
        }
        release {
        }
    }

    flavorDimensions "target"

    productFlavors {
        internal {
            dimension "target"
        }

        external {
            dimension "target"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

tracker.gradle:

android {

    publishNonDefault true

    buildTypes {
        release {
        }
        debug {
        }
    }

    flavorDimensions 'target'

     productFlavors {
        internal {
            dimension "target"
        }

        external {
            dimension "target"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

feature.gradle:

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        compileSdkVersion rootProject.ext.compileSdkVersion
        buildToolsVersion rootProject.ext.buildToolsVersion

        defaultConfig {
            minSdkVersion rootProject.ext.minSdkVersion
            targetSdkVersion rootProject.ext.targetSdkVersion
            versionCode 1
            versionName "1.0"
            javaCompileOptions {
                annotationProcessorOptions {
                    includeCompileClasspath false
                }
            }
        }
    }

}

dependencies {
    implementation(
            [...]
            project(':tracker')
    )
}
Run Code Online (Sandbox Code Playgroud)

以下是errors我尝试同步时的情况:

Unable to resolve dependency for ':feature@debug/compileClasspath': Could not resolve project :tracker.

Could not resolve project :tracker.
Required by:
    project :feature
 > Project :feature declares a dependency from configuration 'implementation' to configuration 'externalRelease' which is not declared in the descriptor for project :tracker.

Unable to resolve dependency for ':feature@debugAndroidTest/compileClasspath': Could not resolve project :tracker.

Could not resolve project :tracker.
[...]
Run Code Online (Sandbox Code Playgroud)

小智 6

我的 gradle 版本是 4.4。

在文档中, Android developerAndroid Plugin DSL Reference 表明,应该添加以下代码。

missingDimensionStrategy 'external'
missingDimensionStrategy 'target'
Run Code Online (Sandbox Code Playgroud)

Android 开发者链接图片

Android 插件 DSL 参考图片

但这对我不起作用。最后我在 feature.gradle 中添加了以下代码。

flavorDimensions 'target'

 productFlavors {
    internal {
        dimension "target"
    }
}
Run Code Online (Sandbox Code Playgroud)