기록
Android 모듈화에 대해 알아보기 본문
모듈화는 애플리케이션을 여러 개의 독립적이면서도 상호작용할 수 있는 모듈로 나누는 과정입니다. Android에서는 모듈화를 통해 애플리케이션의 유지보수성을 높이고, 빌드 시간 단축, 코드 재사용, 팀 간 협업을 용이하게 할 수 있습니다.
모듈화의 이점
1. 코드 분리: 특정 기능을 담당하는 코드와 리소스를 독립적인 모듈로 분리하여 코드베이스를 깔끔하게 유지할 수 있습니다.
2. 재사용성: 특정 기능을 다른 프로젝트에서 재사용할 수 있는 라이브러리 모듈로 정의할 수 있습니다.
3. 빌드 시간 단축: 변경된 모듈만 빌드하기 때문에 전체 빌드 시간을 단축할 수 있습니다.
4. 독립적인 업데이트: 모듈별로 업데이트와 배포가 가능하여 앱 업데이트 시 유연성을 제공합니다.
Android에서 모듈의 종류
1. 앱 모듈 (App Module): 최종 사용자가 사용하는 앱의 기본 모듈입니다.
2. 라이브러리 모듈 (Library Module): 다른 앱 모듈이나 라이브러리 모듈에서 사용할 수 있는 코드와 리소스를 포함합니다.
3. 기능 모듈 (Feature Module): 특정 기능을 담당하며, Dynamic Delivery를 통해 필요할 때만 로드할 수 있습니다.
예제 코드
1. 기본 앱 모듈 (`:app`)
기본 앱 모듈은 애플리케이션의 메인 기능을 포함하며, 다른 모듈을 의존성으로 가질 수 있습니다.
build.gradle (app 모듈)
```gradle
plugins {
id 'com.android.application'
id 'kotlin-android'
}
android {
compileSdk 33
defaultConfig {
applicationId "com.example.myapp"
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation project(':library') // 라이브러리 모듈 의존성 추가
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
}
```
2. 라이브러리 모듈 (`:library`)
라이브러리 모듈은 공통으로 사용되는 유틸리티나 UI 컴포넌트를 포함할 수 있습니다.
build.gradle (library 모듈)
```gradle
plugins {
id 'com.android.library'
id 'kotlin-android'
}
android {
compileSdk 33
defaultConfig {
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
}
```
LibraryClass.kt
```kotlin
package com.example.library
class LibraryClass {
fun getGreeting(): String {
return "Hello from Library Module!"
}
}
```
3. 기능 모듈 (`:feature`)
기능 모듈은 특정 기능을 분리하여 구현할 수 있으며, 필요할 때 로드할 수 있습니다.
**build.gradle (feature 모듈)**
```gradle
plugins {
id 'com.android.dynamic-feature'
id 'kotlin-android'
}
android {
compileSdk 33
defaultConfig {
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation project(':app')
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
}
```
FeatureActivity.kt
```kotlin
package com.example.feature
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class FeatureActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_feature)
}
}
```
이 예제는 Android 프로젝트를 모듈화하여 `:app`, `:library`, `:feature`로 나누는 방법을 보여줍니다. 이를 통해 각 모듈을 독립적으로 개발하고, 유지보수하며, 배포할 수 있습니다.
'[Study] > Android' 카테고리의 다른 글
[Compose] 상태 호이스팅 (State Hoisting) (0) | 2024.08.01 |
---|---|
기존 Android 프로젝트에 Compose 화면 빌드하기 (0) | 2024.07.22 |
파이어베이스 동적링크 지원되는 웹주소 자동화 (0) | 2023.11.29 |
Sample App 다운받기 (0) | 2023.11.17 |
Android Compose Dialog (0) | 2023.11.16 |