Android Studio - 如何在子目录中制作模块?

Android Studio - How to make modules inside a subdirectory?

假设我有 3 个模块:mod1、mod2 和 mod3。

正常情况下,文件系统层次应该是:

[android_root_dir]
build.gradle # list this file just to make it clear.
----mod1
----mod2
----mod3

但我想要的是:

[android_root_dir]
build.gradle # list this file just to make it clear.
----modules
    ----mod1
    ----mod2
    ----mod3

如何在 Android Studio 1.1.0 中实现?

PS:我找到了这篇文章,但它似乎不起作用,或者它适用于早期版本的 AS,而不是 1.1.0:

你可以做到:

root
  build.gradle
  settings.gradle
  modules
    mod1
      build.gradle
    mod2
      build.gradle
    mod3
      build.gradle

在你的settings.gradle

include ':modules:mod1' , ':modules:mod2', ':modules:mod3'

虽然 include ':modules:mod1' , ':modules:mod2', ':modules:mod3' 给了你解决方案,但 AS 恼人地为 modules 生成了一个空模块。要解决这个问题,请参阅 gradle github repo 上的 settings.gradle。它基本上包括每个子项目作为顶级项目,然后将其项目目录设置在子目录中。这个技巧应该可以完美地满足您的需求。

include 'mod1'
include 'mod2'
...
include 'modX'
rootProject.name = 'gradle'
rootProject.children.each {project ->
    String projectDirName = "modules/$project.name"
    project.projectDir = new File(settingsDir, projectDirName)
    assert project.projectDir.isDirectory()
    assert project.buildFile.isFile()
}

我的项目结构

Coding
   app
   push-dir
     coding-push
     push-xiaomi
   setting.gradle

setting.gradle 文件

// need repeat declarative, i think it's bug
include ':app'
include ':coding-push'
include ':push-dir:coding-push'
include ":push-xiaomi"
include ":push-dir:push-xiaomi"

我在settings.gradle中使用了重复声明来解决。 (Android Studio 3.0),我觉得是AS的bug。 有时需要重启AS。

子目录中的模块

settings.gradle 文件

include ':module1', ':module2', ':module3'

project(':module1').projectDir = new File('modules/module1')
project(':module2').projectDir = new File('modules/module2')
project(':module3').projectDir = new File('modules/module3')

[Example]