如何在Android Gradle中在编译时禁用模块?

如何在Android Gradle中在编译时禁用模块?,android,gradle,android-gradle-plugin,build.gradle,Android,Gradle,Android Gradle Plugin,Build.gradle,我的单模块应用程序代码变得非常繁重,调试也变得很痛苦。由于我一次只处理应用程序的一小部分,大多数功能在调试期间都是无用的,所以我决定将我的应用程序拆分为模块 目标是拥有一个轻量级的“应用程序”模块和多个“功能N”模块。在我的“settings.gradle”中,我只想启用我正在使用的“app”和功能模块,忽略其余部分,直到我开始发布版本 所以我为每个功能设计了一个接口。问题是把它们放在哪里 如果我将接口放在单个模块中,那么“应用程序”模块将引用所有“功能”模块;因此,禁用“settings.gr

我的单模块应用程序代码变得非常繁重,调试也变得很痛苦。由于我一次只处理应用程序的一小部分,大多数功能在调试期间都是无用的,所以我决定将我的应用程序拆分为模块

目标是拥有一个轻量级的“应用程序”模块和多个“功能N”模块。在我的“settings.gradle”中,我只想启用我正在使用的“app”和功能模块,忽略其余部分,直到我开始发布版本

所以我为每个功能设计了一个接口。问题是把它们放在哪里

  • 如果我将接口放在单个模块中,那么“应用程序”模块将引用所有“功能”模块;因此,禁用“settings.gradle”中的任何模块都会中断编译。唯一的解决办法似乎是注释掉未使用接口的代码,这在大型项目中是不可行的,因为代码是分散的
  • 如果我将接口放在“应用”模块中,那么实现将在“功能”模块中,我可以添加运行时检查以防止崩溃。这就是我想要的。但现在的依赖是反向的——“功能”模块将依赖于“应用”模块;格雷德尔不会允许的
  • 另一种解决方案是强制禁用所有未使用功能模块的组装任务,这有助于加快构建速度;但由于我的APK很大,上传到设备上仍然需要20秒 我已经尝试了几乎所有的gradle技巧来加速我的构建,但没有任何重大改进,所以我希望得到我最初查询的答案