Android/Module

[Android Multi module] feature module 생성 방법

whjungdev 2024. 9. 13. 20:26

* Android Studio 제공하는 기능으로 Module 생성

1. New > Module 선택

 

2. Application/Library name 내용과 Package name 수정 후 Next 클릭
Package name : com.example.sampleapp.feature.sample2

 

3. Empty Activity 선택 후 Next 클릭

 

4. Finish 클릭

 

5. 기존에 앱 아이콘 리소스명과 테마 파일 전체 삭제

 

 

 

6. build-logic 모듈로 Root 빌드 구성했으면 충돌나므로 build.gradle.kts 코드 수정

plugins {
    id("example.android.feature")
}

android {
    namespace = "com.example.sampleapp.feature.sample2"
}

dependencies {
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.appcompat)
    implementation(libs.androidx.activity.compose)
    implementation(libs.androidx.lifecycle.runtimeCompose)
    implementation(libs.androidx.lifecycle.viewModelCompose)
    implementation(libs.kotlinx.immutable)
}

7. feature:main 모듈이 앱의 Manifest meta 정보를 정리해야하므로 feature:sample2의 Manifest 파일 수정

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>

 

8. 모듈 형식으로 생성을 해서 Gradle Task에 포함 되어 있으므로 제거 필요
Edit Configurations... 선택

 

9. 생성된 모듈 Task 삭제 버튼 선택 후 Apply -> OK 진행

 

10. settings.gradle.kts 모듈 코드 수정

include(
    ":app",
    ":core:designsystem",
    ":core:data",
    ":core:domain",
    ":core:navigation",
    ":core:model",
    ":core:ui",
    ":core:datastore",
    ":feature:main",
    ":feature:pager",
    ":feature:sample",
    ":feature:datastoretest",
    ":feature:sample2"
)

 

11. feature:main 모듈의 build.gradle.kts 파일에 feature:sample2 모듈 추가

 

12. feature:main 모듈의 AndroidManifest 파일에 Activity 추가

        <activity
            android:name="com.example.sampleapp.feature.sample2.MainActivity"
            android:exported="true"
            android:configChanges="uiMode"
            android:theme="@style/Theme.DroidKnights2023.TransparentSystemBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 

13. Gradle Sync -> Build 진행
테스트 화면이 정상적으로 출력되면 성공

 

14. 해당 모듈을 1개를 만들어 놓고 생성 시마다 1 ~ 12번을 진행하기 어려우니 copy/Paste 로 진행하기

  • Android Studio 템플릿 생성 방법도 있는 것 같은데 해당 부분은 확인 후 정리 필요.

Sample Code : https://github.com/woohyun-jeong/AndroidSampleApp/tree/datastore_test1