- 안드로이드 스튜디오에서 File->Open 클릭 후, 첨부한 프로젝트 파일을 열어주세요. 이후 Gradle Sync가 완료되었을 시, app 모듈을 빌드를 하시면 됩니다.
-
RxJava2 데이터와 이벤트 변화와 이에 대한 반응 유연하게 처리할 수 있도록 도와주는 라이브러리로, 해당 프로젝트에서는 비동기적 요구사항 등의 상황에서 발생하는 콜백 문제를 해결하기 위해 사용하였으며, 이를 동시성과 병렬성을 해결하였습니다. (예, 네트워크 처리 이후 UI 처리)
-
Retrofit2 RxJava 기반으로 비동기적으로 네트워킹을 할 수 있는 강력한 라이브러리로, 인터페이스 정의만으로 네트워트 처리를 쉽게 사용할 수 있어 적용하였습니다.
-
Stetho 페이스북에서 만든 네트워크 디버깅 라이브러리로, 개발 당시 네트워킹 디버깅을 위해 사용하였습니다.
-
Fresco 페이스북에서 만든 안드로이드 이미지 라이브러리입니다. 플레이어 상에서 앨범 이미지를 로딩하기 위해 사용하였습니다.
-
Koin 재사용성과 종속된 코드를 줄이기 위한 DI(Dependency Injection) 라이브러리이며, Dagger에 비해 사용하기 유연하고 가벼워 채택하여 사용했습니다.
-
Navigation Navigation은 앱 내의 화면 전환을 좀 더 쉽게 구현하고 화면 흐름을 시각화하여 볼 수 있도록 해주는 프레임워크입니다. 해당 프로젝트에서는 화면 구성이 간단하여, MainActivity에서 Fragment를 호출하는 정도의 선에서 단순하게 적용하였습니다.
-
Multidex 안드로이드에서 앱 개발을 하다 보면 규모가 커지거나 포함하는 라이브러리가 많아지게 됩니다. 안드로이드의 경우는 Dex라는 Dalvik Executable로 이루어진 안드로이드 달빅 가상 머신의 실행 포맷을 이용하여 응용프로그램을 실행하게 됩니다. 이때 사용되는 Dex 파일은 포함하고 있는 함수의 개수가 64K개를 초과할 수 없습니다. 이를 해결 하기 위해 Multidex를 사용하였으며, 64K 메소드가 넘는 dex 파일을 여러개로 쪼개어 쪼개진 dex 파일을 읽을 수 있도록 해줍니다.
-
androidx.lifecycle 액티비티의 상태에 따라 처리되는 코드를 쉽게 관리할 수 있게 도와주는 라이브러리입니다. Lifecycle을 사용하면 기존 코드를 더 읽기 쉽고, 관리하기 쉬운 코드로 만들 수 있습니다. 또한 특정 activity나 fragment에 데이터를 제공해줄 수 있는 ViewModel 포함하고 있습니다. 또한 ViewModel은 데이터를 로딩하거나, 변경을 알려주는 데이터 로직을 다루는 비지니스 파트를 위해 사용되었습니다. 최대한 VIewModel은 View에 대해서 알지 못하게 하며, Activity나 Fragment의 재생성 또는 화면 전환과 같은 Configuation 변경에 영향을 받지 않게 사용하였습니다.
-
androidx.paging 데이터의 크기가 큰 경우 UI를 그리는데 오랜 시간이 걸릴 수 있습니다. 이를 데이트 셋으로 나누어 로컬이나 인터넷에 있는 데이터를 받아오는데 유용한 라이브러리입니다. 페이징 된 데이터는 캐싱되어 관리되고, 리사이클러뷰와 연동하여 사용할 수 있습니다.
-
모듈 구성 Clean Architecture를 기반으로 Presentation(app), Domain, Data 로 나누어 모듈을 구성했으며, Data 구조에서도 Local과 Remote에 따른 Repository 구성을 위해 Local, Remote 모듈이 추가 구성하였습니다.
-
Databinding과 각 모듈에서 구현한 API(usecase)를 통해 데이터의 변화에 따라 UI가 동적으로 적용되게 작성하였습니다.