android - Gradle中基于多口味库的单口味模块

标签 android gradle build.gradle android-productflavors android-build-flavors

我正在开发一个多口味的应用。 (下面的 gradle 文件)

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

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

app.gradle:

android {

    buildTypes {
        debug {
        }
        release {
        }
    }

    flavorDimensions "target"

    productFlavors {
        internal {
            dimension "target"
        }

        external {
            dimension "target"
        }
    }
}

tracker.gradle:

android {

    publishNonDefault true

    buildTypes {
        release {
        }
        debug {
        }
    }

    flavorDimensions 'target'

     productFlavors {
        internal {
            dimension "target"
        }

        external {
            dimension "target"
        }
    }
}

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')
    )
}

以下是我尝试gradle sync时的错误:

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.
[...]

最佳答案

我的 gradle 版本是 4.4。

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

missingDimensionStrategy 'external'
missingDimensionStrategy 'target'

Android developer link image

Android Plugin DSL Reference image

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

flavorDimensions 'target'

 productFlavors {
    internal {
        dimension "target"
    }
}

关于android - Gradle中基于多口味库的单口味模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47989894/

相关文章:

java - 在 recyclerView 中滚动时如何保持复选框状态?

properties - Gradle额外属性在子项目中定义的自定义任务中不可见

java - Android:build.gradle中的API兼容性问题

gradle - 使用此build.grafle文件时出现错误,不知道如何解决

android - Fabric 和新gradle 2发布

Android appbundle : rename generated outputfile (. aab)

android - 在 Android 上阻止网站

android-studio - 同时构建两个变体

java - 为什么gradle创建的jar文件中没有.class文件?

java - 如何在Java数据结构中实现多类别?