전체 글 (62) 썸네일형 리스트형 [안드로이드 멀티 모듈] 11. JvmLibraryConventionPlugin 만들기 지난 포스트에서는 Room 데이터베이스를 위한 AndoridRoomConventionPlugin을 만들었습니다.이번 시간에는 안드로이드에 의존성이 없는 모듈을 위한 JvmLibraryConventionPlugin을 만들겠습니다.해당 플러그인은 도메인 모듈 등에서 사용하게 될 것입니다.1. configureKotlinJvm 유틸 함수 만들기build-logic 모듈의 Kotlin 파일에 Kotlin과 JVM 설정을 하기 위한 Project.configureKotlinJvm 이라는 유틸 함수를 만들겠습니다.configureKotlinJvm 함수는 Java 11을 사용하도록 설정하는 역할을 합니다. build-logic 모듈에서만 사용할 것 이므로 internal 키워드를 추가해주었습니다.// Kotlin.k.. [안드로이드 멀티 모듈] 10. AndroidRoomConventionPlugin 만들기 지난 포스트에서는 Compose로 구성된 화면을 위한 AndroidPresentationUIConventionPlugin을 만들었습니다.이번 시간에는 Room 데이터베이스를 사용하기 위한 AndroidRoomConventionPlugin을 만들겠습니다. 해당 플러그인은 데이터베이스와 관련된 모듈에서 적용하는 컨벤션 플러그인 입니다.1. Room과 관련된 의존성 추가하기먼저, libs.versions.toml 파일에 아래와 같이 Room을 사용하기 위한 라이브러리와 플러그인을 추가하겠습니다.room-compiler, room-ktx, room-runtime, room-gradle-plugin로 구성된 4개의 라이브러리와 androidx.room 플러그인을 추가합니다.Room 데이터베이스는 ksp도 필요하므.. [안드로이드 멀티 모듈] 9. AndroidPresentationUIConventionPlugin 만들기 지난 포스팅에서는 화면은 없지만 Compose와 관련된 컨벤션 플러그인을 만들어서 designsystem 모듈에 적용했습니다. 이번 포스팅에서는 화면이 존재하고 Compose와 관련된 모듈을 위한 AndroidPresentationUIConventionPlugin을 만들겠습니다. 해당 플러그인은 home, login, board 등 화면을 담당하는 UI Layer 모듈에 적용되는 컨벤션 플러그인입니다.1. AndroidPresentationUIConventionPlugin 만들기이번에는 화면이 존재하는 Compose 컨벤션 플러그인을 만들고 있습니다. 그래서 이전 포스팅에서 만든 컨벤션 플러그인을 pluginManager를 통해 적용하고, Compose 화면을 위한 의존성을 추가해줘야 합니다.// And.. [안드로이드 멀티 모듈] 8. AndroidLibraryComposeConventionPlugin 만들기 지난 포스팅에서는 Compose가 없는 AndroidLibrary를 위한 AndroidLibraryConventionPlugin을 만들었습니다. 이번에는 Compose 관련 빌드 옵션이 포함된 AndroidLibraryComposeConventionPlugin을 만들겠습니다. Compose 관련 모듈은 아래처럼 2가지로 나뉘게 됩니다.화면이 없는 모듈 (designsystem, ui 등)화면이 있는 모듈 (home, board, login 등)designsystem처럼 화면이 없는 모듈이 있고, home처럼 Compose로 구성된 화면이 있는 presentation 성격의 모듈이 있습니다. 이번 포스팅에서는 Compose 관련 기능이 있지만 화면이 없는 모듈을 위한 컨벤션 플러그인을 만들겠습니다.1. A.. [안드로이드 멀티 모듈] 7. AndroidLibraryConventionPlugin 만들기 지난 포스팅까지는 Application 모듈에 대한 컨벤션 플러그인을 다루었는데, 이번 포스팅에서는 Compose가 없는 AndroidLibrary를 위한 AndroidLibraryConventionPlugin을 만들겠습니다. 안드로이드 프로젝트를 멀티모듈로 구성한다면 꼭 필요한 컨벤션 플러그인입니다.1. AndroidLibraryConventionPlugin 만들기이전 포스팅에서 확장성을 고려하여 여러 가지 유틸함수를 만든 덕분에 AndroidLibraryConventionPlugin을 간단하게 만들 수 있습니다. Build Type 설정을 위해 유틸함수를 만들었었는데, Enum Class로 ExtensionType에 대한 분기처리를 했기 때문에 아래처럼 ExtensionType.LIBRARY를 전달하.. [안드로이드 멀티 모듈] 6. AndroidApplicationComposeConventionPlugin 만들기 지난 포스팅에서는 app 모듈의 컨벤션 플러그인 AndroidApplicationConventionPlugin을 만들었습니다. 최근 안드로이드에서는 기존의 XML방식에서 선언형 UI 프로그래밍인 Compose 방식으로 많이 전환되고 있는데, Compose로 개발을 하기 위해서 빌드 관련 코드를 추가해야 합니다. 이번 포스팅에서는 Compose Application 모듈을 위한 AndroidApplicationComposeConventionPlugin을 만들겠습니다.1. AndroidCompose 유틸 함수 만들기지난 포스팅과 마찬가지로 여러 컨벤션 플러그인에서 공통으로 사용할 수 있는 AndroidCompose 유틸 함수를 만들겠습니다. 해당 함수에서는 안드로이드 Compose 관련 빌드 로직을 정의합니.. [안드로이드 멀티 모듈] 5. BuildTypes 컨벤션 플러그인에 적용하기 지난 포스팅에서는 AndroidApplicationConventionPlugin을 만들었습니다. 하지만 buildTypes, buildFeatures, composeOptions 등의 코드를 컨벤션 플러그인에 추가하지 않았는데, 이번 포스팅에서는 buildTypes를 컨벤션 플러그인에서 공통으로 사용할 수 있도록 적용하겠습니다.1. Application을 위한 BuildTypes 유틸함수 만들기buildTypes를 컨벤션 플러그인에서 공통으로 사용하기 위해서 build-logic:convention 모듈에 BuildTypes 유틸함수를 만들겠습니다. 이전과 같은 패턴으로 Project의 확장함수로 구현하겠습니다. // BuildTypes.kt internal fun Project.configureBuil.. [안드로이드 멀티 모듈] 4. AndroidApplicationConventionPlugin 만들기 모듈을 만들었을 때 생성되는 build.gradle.kts 파일의 빌드 관련 중복 코드를 제거하고, 한 곳에서 관리하기 위한 작업을 진행 중입니다. 그래서 지난 포스팅에서는 build-logic:convention 모듈을 만들었습니다. 이번 포스팅에서는 AndroidApplicationConventionPlugin을 만들고 build.gradle.kts(Module :app) 모듈에 적용하겠습니다.1. AndroidApplicationConventionPlugin.kt 만들기build-logic모듈의 java 패키지 폴더에 AndroidApplicationConventionPlugin.kt을 만듭니다.// AndroidApplicationConventionPlugin.ktimport org.gradle... 이전 1 2 3 4 ··· 8 다음