이전 글에서는 아키텍쳐를 어떻게 나누고 해당 레이어 간의 종속관계에 대해 설명하였다.
해당 레이어간의 종속관계를 그림으로 표현하면 아래와 같다.
그런데 우리는 인간이기에 레이어간 나누고 종속관계를 컨벤션으로 할지어도 의존을 무시하고 개발 할 수 있다.
그러므로 우리는 강제적으로 의존의 흐름을 만들어야 하는데 이는 라이브러리(혹은 모듈)을 만들어 의존을 강제할 수 있다.
이번 편에서는 라이브러리를 만들어 아키텍쳐로 나누는 법에 대해 알아보자.
먼저 레이어에 대해 모듈을 만드는 방법은 아래 사진과 같다.
처음 앱을 생성했을때 app모듈이 생되는데 Application 클래스가 위치된다. app모듈은 ui 모듈로 사용하고 나머지 domain 모듈과 data 모듈을 생성한다.
생성하면 아래와 같다.
APP모듈(UI 모듈)
app 모듈은 ui를 담당하고 있기 때문에 plugins에 Android 애플리케이션 프로젝트용 빌드 스크립트를 구성하기 위해 아래와 같이 설정하였다. Android 애플리케이션은 Android 기기에서 설치하고 실행될 수 있게 할 수 있다.
id 'com.android.application'
이후 의존성으로 domain과 data를 의존하게 설정한다.
Data 모듈
data모듈은 라이브러리로서 설치할 필요가 없기때문에 아래와 같이 설정한다. 라이브러리가 빌드되면 다른 Android 프로젝트에서 종속 할목으로 사용할 수 있는 AAR 파일을 생성한다.
id 'com.android.library'
이 후 domain 을 의존하기 위해 애래와 같이 설정해준다.
Domain 모듈
domain 모듈 또한 data 모듈과 마찬가지로 설정하되 종속되지 않게 설정한다.
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
}
android {
namespace 'com.example.portfolio.domain'
compileSdkVersion rootProject.ext.compile_sdk_version
defaultConfig {
minSdk rootProject.ext.min_sdk_version
targetSdk rootProject.ext.target_sdk_version
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "/proguard/consumer-rules.pro"
}
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_core_version"
}
이로서 종속관계를 설정하여 의존의 강제성을 높혔다.
'Android > 아키텍쳐' 카테고리의 다른 글
Architecture 구조도 (이론편 - Data 레이어) (0) | 2023.07.07 |
---|---|
Architecture 구조도 (이론편 - Domain 레이어) (0) | 2023.07.07 |
Architecture 구조도 (이론편 - UI 레이어) (0) | 2023.07.06 |
아키텍쳐에 관하여 (0) | 2023.06.28 |
클린아키텍쳐에 대해서 정리해보자~ (0) | 2022.09.08 |