0

试图遵循Jeroen Mols 模块化示例,他指定了一种很好的技术来允许所有模块共享版本号。在顶级项目 build.gradle 中,添加以下内容:

subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {

            android {
                compileSdkVersion build_versions.target_sdk

                defaultConfig {
                    minSdkVersion build_versions.min_sdk
                    targetSdkVersion build_versions.target_sdk
                    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

                    vectorDrawables.useSupportLibrary = true
                }

                compileOptions {
                    sourceCompatibility JavaVersion.VERSION_1_8
                    targetCompatibility JavaVersion.VERSION_1_8
                }
            }
        }
    }
}

现在任何模块级别的 build.gradle 文件都不需要指定这些字段。但是我得到:

GradleException: Android tasks have already been created.

我没有指定 android.applicationVariants、android.libraryVariants 或 android.testVariants,就像对这个错误的描述提到的那样,我在这里做错了什么?我什至尝试从每个模块中完全删除 android 块并且错误仍然存​​在。

4

1 回答 1

0

好的,问题是我在核心模块中创建了一个库模块而不是在同一文件夹级别。我的猜测是这个afterEvaluateandroid 块不适用于模块内的模块。所以我的解决方案只是确保在同一级别指定模块。

于 2020-04-28T12:38:36.550 回答