Suppose that I had 3 modules: mod1, mod2 and mod3.
In normal case, the file system hierarchy should be:
[android_root_dir]
build.gradle # list this file
Though include ':modules:mod1' , ':modules:mod2', ':modules:mod3' kind of gives you the solution, the AS annoyingly generates an empty module for modules. To address this gotcha, please refer to the settings.gradle on the gradle github repo. It basically includes every subproject as a top level one and then sets its project directory to be inside the subdirectory. This trick should perfectly address your need.
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()
}
You can do it:
root
build.gradle
settings.gradle
modules
mod1
build.gradle
mod2
build.gradle
mod3
build.gradle
In your settings.gradle
include ':modules:mod1' , ':modules:mod2', ':modules:mod3'
My project struct
Coding
app
push-dir
coding-push
push-xiaomi
setting.gradle
setting.gradle file
// 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"
I used repeat declarative in settings.gradle to solve. (Android Studio 3.0), I think it's AS's bug. Sometimes need restart AS.