Android Studio - 如何在子目录中创建模块?

McA*_*Lee 21 module subdirectory android-studio build.gradle android-gradle-plugin

假设我有3个模块:mod1,mod2和mod3.

在正常情况下,文件系统层次结构应为:

[android_root_dir]
build.gradle # list this file just to make it clear.
----mod1
----mod2
----mod3
Run Code Online (Sandbox Code Playgroud)

但我想要的是:

[android_root_dir]
build.gradle # list this file just to make it clear.
----modules
    ----mod1
    ----mod2
    ----mod3
Run Code Online (Sandbox Code Playgroud)

如何在Android Studio 1.1.0中执行此操作?

PS:我发现这篇文章但它似乎不起作用,或者它适用于早期版本的AS,而不是1.1.0: 如何在子目录中移动模块?

Gab*_*tti 31

你能行的:

root
  build.gradle
  settings.gradle
  modules
    mod1
      build.gradle
    mod2
      build.gradle
    mod3
      build.gradle
Run Code Online (Sandbox Code Playgroud)

在你的 settings.gradle

include ':modules:mod1' , ':modules:mod2', ':modules:mod3'
Run Code Online (Sandbox Code Playgroud)

  • thx的反馈意见.这种方法有点......有些...... AS将生成一个名为"modules"的伪和空模块,并生成"modules/modules.iml".如果我在AS项目结构中删除此模块,AS将再次自动生成它.有任何想法吗? (4认同)

yoA*_*ex5 13

子目录中的 Android 模块

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')
Run Code Online (Sandbox Code Playgroud)

[例子]


Far*_*ley 6

虽然include ':modules:mod1' , ':modules:mod2', ':modules:mod3'有点给你解决方案,AS烦人地生成一个空模块modules.为了解决这个疑难杂症,请参考settings.gradlegradle这个GitHub库.它基本上包括每个子项目作为顶级项目,然后将其项目目录设置在子目录中.这个技巧应该完全满足您的需求.

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()
}
Run Code Online (Sandbox Code Playgroud)