[Android Multi module] feature module 생성 방법
* 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