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]
假设我有 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]