为了遵循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块,但错误仍然存在。
好的,问题是我在核心模块中创建了一个库模块,而不是相同的文件夹级别。我的猜测是这个afterEvaluate
安卓块不适用于模块内的模块。因此,我的解决方案只是确保在同一级别指定模块。