[Android, Multi Module] 멀티모듈의 개념과 장단점
모듈화 ! 증가하는 코드베이스 문제 코드베이스에서 확장성, 가독성 및 저반적 코드 품질은 시간이 지남에 따라 감소하게 된다. 그 이유는 코드베이스 규모가 커지고 있음에도 불구하고 유지관리 담당자가 쉽게 유지관리할 수 있는 구조를 적용하기 위한 적극적인 조치를 취하지 않기 때문이다. 모듈화를 통해서 유지관리 가능성을 개선하고, 이러한 문제를 방지할 수 있는 방식으로 코드베이스를 구조화하는 방법이다. [모듈화] 모듈화는 코드베이스를 느슨하게 결합된 독립적인 부분으로 구성하는 방법이다. 각 부분이 모듈에 해당하며, 각 모듈은 독립적이며 명확한 역할을 한다. 하위 문제를 해결하기 위해 문제를 더 작고 쉬운 문제로 나누면, 대형 시스템 설계와 유지보수의 복잡성이 감소한다. 위 이미지는 다중 모듈 코드베이스에 종속..
- [Android] Architecture/[Android] Multi Module
- · 2023. 7. 29.
[Compose] Preview에 Viewmodel 연결하기
Jetpack Compose로 개발 중에 Preview에 Viewmdodel을 적용하는 코드를 작성한다. @Preview(showBackground = true) @Composable fun DefaultPreview2() { MyFoodDiaryBookAOSTheme { MainUi(todayViewModel = TodayViewModel()) } } Main화면을 담당하는 MainUi 적용 시, 위와 같이 뷰 모델을 적용해야 했다. 하지만 ComponentActivity 내부에서 viewmodel을 선언해서 사용해야하는데, MainUi 함수의 경우 따로 뷰 모델을 선언할 수 있는 코드를 작성할 수 없다. 따라서 적용하려 하는 뷰 모델의 껍데기 역할을 담당하는 FakeViewModel을 만들어서 Pre..
- Deep Dive/Android Jetpack Compose
- · 2023. 7. 26.
[DI,Android] Dagger2, Hilt 없이 의존성 주입 사용해보기
스터디 목적 DI의 원리를 이해하기 위해서 Dagger2와 Hilt 같은 의존성 라이브러리 없이 로그인 플로우를 구현하는 방식을 배운다. 의존성 라이브러리를 사용하지 않고 구현했을 경우, 차이점과 필요성을 알 수 있다. 우선 프로젝트 구조는 아래와 같다. [ Login Activity ] - > [ Login ViewModel ] - > [ UserRepository ] - > [ UserLocalDataSource ] - > [ UserRemoteDataSource ] - > [ Retrofit ] Login Activity에서 사용자가 데이터에 접근하면, Login ViewModel에 접근할 수 있다. Login Viewmodel은 userRepository를 생성해서 기능을 사용하게 되는데, use..
- [Android] Architecture/[Android] DI
- · 2023. 7. 25.
[Android] Jetpack Compose (3)
https://developer.android.com/codelabs/jetpack-compose-migration?hl=ko#0 마지막으로 Compose를 활용해서 리스트 목록과 애니메이션을 추가하는 기능을 알아봤다. Jetpack Compose에서는 리싸이클러뷰처럼 어댑터와 레이아웃을 작성할 필요가 없다. LazyColumn, LazyRow, LazyVerticalGrid 처럼 Composable 함수를 사용해서 작성한다. Compose 함수로 UI를 구성할 때, Ui 상태를 저장하기 위해서 메시지 확장을 추적해야 한다. 이 추적 기능을 구현하기 위해서 remember와 mutableStateOf 함수를 사용해야 한다. Message Card 생성 리스트 뷰의 각 아이템에 애니메이션을 적용하고, 아이..
- Deep Dive/Android Jetpack Compose
- · 2023. 7. 25.
[Android] Jetpack Compose (2)
UI 디자인하기 이전 포스팅에서 text뷰와 textField를 jetpack Compose 방식으로 적용하는 방법을 배웠다. 이제 화면을 담당하는 레이아웃과 그 내부의 코드를 작성하는 방법을 공부해야 한다. 이 방식을 익혀서 Activity에서 xml을 통해 작성한 레이아웃을 Jetpack Compose로 구현하는 연습을 한다. 연속 텍스트와 이미지 적용하기 구성 함수를 통해서 UI 계층 구조를 빌드하는 과정으로 연속 텍스트와 이미지를 적용한다. 간단한 메시지 함수를 빌드하고, 메시지를 표현하는 코드를 작성했다. 우선 메시지 데이터를 나타낼 data class를 선언했다. // 여러 텍스트 추가 data class Message( val author : String, val body : String, ..
- Deep Dive/Android Jetpack Compose
- · 2023. 6. 25.
[Android] Jetpack Compose (1)
아래 블로그 포스팅을 참고했습니다. https://blog.mathpresso.com/jetpack-compose-%EB%A1%9C-%EA%B8%B0%EB%8A%A5%EC%A0%84%EC%B2%B4%EB%A5%BC-refactoring-%ED%95%B4%EB%B3%B4%EC%9E%90-2b921c624e80 요즘 핫🔥-한 Jetpack Compose 로 기능 하나를 통째로 Refactoring 해보기 곧 몰아칠 새로운 UI 개발 패러다임에 대비해보자 blog.mathpresso.com Jetpack Compose SwiftUI, Flutter 와 같은 선언형 UI 기존의 안드로이드의 XML이나 IOS의 StoryBoard로 작성하는 방식은 특정 상태에 따라 UI를 어떻게 보여줄 지를 구상하여 구현하게 된..
- Deep Dive/Android Jetpack Compose
- · 2023. 6. 25.