비비디바비비부
프로그래밍저장소
비비디바비비부
전체 방문자
오늘
어제
  • 프로그래밍 (72)
    • 안드로이드 (5)
      • 잡다한 지식 (40)
      • Compose (2)
      • Design (3)
      • Project (6)
    • 리액트 (4)
      • 프로젝트 (1)
      • 잡다한 지식 (1)
    • 알고리즘 (3)
      • 알고리즘 문제 (3)
    • AI (4)
      • 딥러닝 (4)
    • CS (2)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
비비디바비비부

프로그래밍저장소

[안드로이드] 프리아 컬렉션 프로젝트 - 2
안드로이드/Project

[안드로이드] 프리아 컬렉션 프로젝트 - 2

2023. 3. 22. 00:12

모듈화를 위한 발버둥

이전 글을 쓴 이후 프로젝트를 진행하면서 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
    '안드로이드/Project' 카테고리의 다른 글
    • [안드로이드] 프리아 컬렉션 프로젝트 - 5
    • [안드로이드] 프리아 컬렉션 프로젝트 - 4
    • [안드로이드] 프리아 컬렉션 프로젝트 - 3
    • [안드로이드] 프리아 컬렉션 프로젝트 - 1
    비비디바비비부
    비비디바비비부
    안드로이드 기술 블로그, 코딩 공부, 프로그래머

    티스토리툴바