모듈화를 위한 발버둥
이전 글을 쓴 이후 프로젝트를 진행하면서 Compose는 디자인을 개발하는 부분이어서 어느 정도 이해를 하면서 개발할 수 있었다. Compose를 이용해 프로토타입을 만든 후 나는 기능 추가를 위해 Pluu님, Skydoves님, TaeHwan님 등의 깃 허브에 들어가 여러 안드로이드 프로젝트를 구경했다. 내가 이때까지 했던 프로젝트와는 다른 방식으로 아키텍처를 설계를 하신 것 같았다.
Github 프로젝트와 나의 프로젝트의 차이점
나는 Data, Domain, Presentation을 한 모듈에 넣고, package에서 분리를 했다. 하지만 깃 허브에 올라온 프로젝트들은 Data, Domain, present을 세부적으로 모듈화해서 분리를 했다.
생각을 해보니 회사 프로젝트에서 안드로이드 권장 아키텍처를 적용을 하겠다고 view, domain, data 패키지를 만든 뒤 넣었는데, 모듈화를 적용 했으면 확실히 더 유지보수하기 쉬웠을 것 같다.
Android 앱 모듈화 가이드 | Android 개발자 | Android Developers
그래서 깃 허브 프로젝트를 보고 무작정 모듈화를 할려고 하니 build.gradle 또한 나와 다른 방식이였다.
나는 groovy-DSL을 사용했었고, 깃 허브 프로젝트는 kotlin-DSL을 사용한 것으로 보였다.
그래서 모듈화 하기 전 Kotlin-DSL에 대해서 공부한 것과 개발하면서 생긴 오류를 정리할려고 한다.
Kotlin-DSL이 뭔데?
DSL은 Domain-Specific Language, 도메인 특화 언어라는 뜻으로 특정 영역(나는 안드로이드)에 대한 연산 및 작업을 간결하게 기술할 수 있는 언어이다.
장점과 단점은?
장점
1. 향상된 가독성
이때까지 build.gradle을 보면 길고 복잡해서 이해하기 힘들었지만, 간결해지면서 다중 모듈 프로젝트를 처리할 때 유용하다.
2. 더 나은 IDE 지원
코드 완성, 오류 강조, 리팩토링 도구(변수 리팩토링 가능)를 지원한다. 그래서 오류 가능성을 줄일 수 있다.
3. 향상된 모듈화
종속성을 쉽게 관리하고, 중복 의존성 선언이 필요가 없어진다.
단점
1. clean build 시 Groovy DSL보다 속도가 느리다.
2. Java8 이상에서 동작
멀티 모듈 프로젝트에서 가독성, 유지 관리를 쉽게 할 수 있어서 나는 Groovy DSL에서 Kotlin-DSL로 이동하기로 했다.
buildSrc이란?
buildSrc는 빌드 로직을 작성할 수 있는 특수한 디렉토리이다. (Gradle에서 루트 프로젝트의 일부로 자동 인식하기 때문에)
buildSrc의 코드는 빌드 프로세스의 일부로 컴파일 및 실행되어서 모듈에서 재사용할 수 있는 기타 빌드 논리를 정의하는데 사용할 수 있다.
그래서 쉽게 읽을 수 있는 코드로 전체 프로젝트에 공유를 할 수 있어서 유지 보수성이 올라갈 수 있게 해준다.
build.gradle.kts
plugins {
'kotlin-dsl' // Too many characters in character literal 에러 발생
"kotlin-dsl" // Unresolved reference:buildSrc의 파일 인식 못하는 에러 발생
`kotlin-dsl` // 에러 발생 하지 않음
}
처음 개발을 하고 생소해서 자잘한 실수를 많이 했던 것 같다.
결론
kotlin-dsl은 안드로이드 프로젝트(특히 멀티 모듈 프로젝트)를 쉽게 유지보수 할 수 있다.
이 것을 기반으로 다음 포스팅은 앱 모듈화 후 포스팅을 하겠습니다.
'안드로이드 > Project' 카테고리의 다른 글
[안드로이드] 프리아 컬렉션 - 6 (0) | 2023.04.30 |
---|---|
[안드로이드] 프리아 컬렉션 프로젝트 - 5 (2) | 2023.04.22 |
[안드로이드] 프리아 컬렉션 프로젝트 - 4 (0) | 2023.04.16 |
[안드로이드] 프리아 컬렉션 프로젝트 - 3 (0) | 2023.03.29 |
[안드로이드] 프리아 컬렉션 프로젝트 - 1 (0) | 2023.03.15 |