기록

Android 모듈화에 대해 알아보기 본문

[Study]/Android

Android 모듈화에 대해 알아보기

Dannnnnn 2024. 8. 3. 21:21
반응형

모듈화는 애플리케이션을 여러 개의 독립적이면서도 상호작용할 수 있는 모듈로 나누는 과정입니다. 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`로 나누는 방법을 보여줍니다. 이를 통해 각 모듈을 독립적으로 개발하고, 유지보수하며, 배포할 수 있습니다.

반응형