在构建 Android Studio 时排除模块

Nic*_*sso 4 dependencies android build gradle android-studio

我有一个 Android Studio 项目,其中包含 3 个模块。A、B、C。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')
}
Run Code Online (Sandbox Code Playgroud)

模块 B 依赖项:

dependencies {
    compile project(path: ':c', configuration: 'debug')
}
Run Code Online (Sandbox Code Playgroud)

模块 C 依赖项:

dependencies {
    compile files('libs/other-lib.jar')
}
Run Code Online (Sandbox Code Playgroud)

小智 7

我在评论中明确表示,我认为通过黑客攻击settings.gradle删除模块是一个坏主意。

因此,如果您无法在打开两个或更多项目的情况下运行 Android Studio,或者您不想在命令行上调用 Gradle,或者您只想禁用某些模块,因为它们对您不感兴趣,实际上是一种受支持的方式来做到这一点。(至少在 Android Studio 的最新版本中,例如 3.2.x。)

  1. 右键单击顶级项目或项目视图中的任何模块
  2. 选择加载/卸载模块...
  3. 卸载不想激活的模块

由于这只会更改您的本地项目并且永远不会被意外提交,因此这是一种安全地减少模块开销的安全方法。我认为它甚至可以为您同步,因此您不必手动强制同步。


小智 0

Android Studio 中存在一个错误,如果您使用 Gradle 项目对话框来运行任务,这些任务将在根上下文中运行。也就是说,如果仔细观察,甚至子模块任务也会像在根级别运行相同的任务一样运行。

解决方案:

  1. 使用命令行 Gradle 或 Gradle 包装器。
  2. 始终运行两个 Android Studio 实例(即打开多个项目)