Android 모듈 경로 간소화
소개
Android Studio 1에서 multi-module project 2을 구성할 때 모듈 이름과 폴더 구성에 대해 다음과 같은 절충점을 고려할 수 있습니다.
이 문서에서는 이러한 절충안에 대한 설명과 두 가지 이점만을 즐길 수 있는 방법을 설명합니다.
절충
◆ 서브 모듈 이름 간결
서브모듈명을 :android
, :kotlin
와 같이 간결하게 기술한다.
☆ 장점
서브 모듈 이름이 간결해집니다.
include ':android'
include ':kotlin'
☆ 단점
폴더 구성이 혼돈이 되고 하위 모듈의 네임스페이스도 제한됩니다. 3
※ 모듈과 비모듈 폴더 수십 개가 혼연 일체로 한 상황을 상상해 보세요. 혼돈입니다,,,.
◆ 중간 폴더 설치
☆ 장점
폴더 구성이 간결해지고 하위 모듈의 네임스페이스도 제한되지 않습니다. 4
☆ 단점
서브 모듈 이름이 낭비로 길어집니다.
include ':modules:android'
include ':modules:kotlin'
장점만 즐길 수 있는 방법
◆ settings.gradle
settings.gradleinclude(
':android',
':kotlin'
)
// ↑ は以下と等価です。どちらでもOKです。
// include ':android'
// include ':kotlin'
project(":android").projectDir = new File(rootDir, "/modules/android")
project(":kotlin").projectDir = new File(rootDir, "/modules/kotlin")
☆ 자동화판
modules 폴더 바로 아래에 모든 하위 모듈만 배치되면 다음과 같이 모듈 열거에서 설정까지 자동화할 수도 있습니다. 5
settings.gradlenew File("modules").listFiles().each { file ->
def name = file.getName()
def path = ":$name"
include path
project(path).projectDir = new File(rootDir, "/modules/$name")
}
◆ 서브 모듈 참조 예
include ':android'
include ':kotlin'
◆ Android 용 표시 예
결론
include ':android'
include ':kotlin'
include ':modules:android'
include ':modules:kotlin'
◆ settings.gradle
settings.gradle
include(
':android',
':kotlin'
)
// ↑ は以下と等価です。どちらでもOKです。
// include ':android'
// include ':kotlin'
project(":android").projectDir = new File(rootDir, "/modules/android")
project(":kotlin").projectDir = new File(rootDir, "/modules/kotlin")
☆ 자동화판
modules 폴더 바로 아래에 모든 하위 모듈만 배치되면 다음과 같이 모듈 열거에서 설정까지 자동화할 수도 있습니다. 5
settings.gradle
new File("modules").listFiles().each { file ->
def name = file.getName()
def path = ":$name"
include path
project(path).projectDir = new File(rootDir, "/modules/$name")
}
◆ 서브 모듈 참조 예
include ':android'
include ':kotlin'
◆ Android 용 표시 예
결론
그럼, 또.
추가 (2020-08-04)
모듈을 동적으로 추가하는 Gradle Plugin을 만들어 보았습니다.
개요
사용법
settings.gradle.kts
혹은 settings.gradle
로 다음과 같이 설정합니다.참고 : build.gradle 대신 settings.gradle이므로주의!
settings.gradle.kts
buildscript {
repositories {
// mavenLocal() // for of-commons SNAPSHOT release
maven { url = uri("https://beyondseeker.github.io/of-commons/mvn-repo") } // for of-commons
google()
jcenter()
}
dependencies {
classpath("com.objectfanatics:gradle-plugin-dynamicmodulesplugin:0.0.1")
}
}
apply(mapOf("plugin" to "com.objectfanatics.gradle.plugin.dynamicmodulesplugin"))
settings.gradle
buildscript {
repositories {
// mavenLocal() // for of-commons SNAPSHOT release
maven { url = uri("https://beyondseeker.github.io/of-commons/mvn-repo") } // for of-commons
google()
jcenter()
}
dependencies {
classpath 'com.objectfanatics:gradle-plugin-dynamicmodulesplugin:0.0.1'
}
}
apply plugin: 'com.objectfanatics.gradle.plugin.dynamicmodulesplugin'
InteliJ Idea에서도 마찬가지라고 생각됩니다. ↩
Gradle 적으로는 Multi project. ↩
루트 폴더 바로 아래의 모듈이 많을수록 루트 폴더 바로 아래의 네임 스페이스가 압박됩니다. ↩
중간 폴더 바로 아래에는 모듈용 폴더만 배치되므로 네임스페이스를 100% 사용할 수 있습니다. ↩
모듈명의 증감이나 변경시에 settings.gradle 를 변경할 필요가 없기 때문에 락틴입니다. ↩
Reference
이 문제에 관하여(Android 모듈 경로 간소화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/beyondseeker/items/6a1f0caddf995f5df46d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)