【发布时间】:2018-02-25 01:57:43
【问题描述】:
我有一个包含 3 个模块的 Android Studio 项目。甲、乙、丙。 A依赖于C,B依赖于C。 我正在尝试加快构建时间,并且我意识到每次执行 assembleRelease/assembeDebug 任务时,它都会构建所有模块。 每次我构建模块 A 应该只构建 A 和 C,因为 B 在该任务中没有依赖关系,对吗? 每次构建模块 A 时如何避免构建模块 B?
模块 A 依赖项:
dependencies {
compile project(path: ':c', configuration: 'release')
provided files('libs/some-lib.jar')
}
模块 B 依赖项:
dependencies {
compile project(path: ':c', configuration: 'debug')
}
模块 C 依赖项:
dependencies {
compile files('libs/other-lib.jar')
}
【问题讨论】:
-
你是如何运行任务的?通过命令行,还是通过 Android Studio 中的 Gradle 对话框?
-
我正在从 gradle 对话框运行任务。现在我正在从命令行运行任务并且构建时间减少了很多。显然,无论您尝试构建什么,gradle 对话框都会构建所有模块
-
发生的事情是(如果你仔细看的话)从 Android Studio 运行子模块任务实际上是从项目的根目录调用任务。由于根通常包含所有 ref,因此它生成的配置构建树包含所有模块。如果您启动运行子模块任务的 Android Studio 的第二个实例/窗口,则只会基于该模块及其依赖项生成构建树。这在 Gradle 日志中很容易看到。
标签: android android-studio gradle build dependencies