최근에 JetPack Compose UI를 공부하면서 JetPack에 대해서 정확히 무엇인지 알아볼려고 합니다.
1. JetPack 이란?
Jetpack은 개발자가 고품질 앱을 손쉽게 개발할 수 있게 돕는 라이브러리, 도구, 가이드 모음입니다. 이 구성요소를 통해 권장사항을 따르고, 상용구 코드 작성 작업에서 벗어나며, 복잡한 작업을 간소화하여 중요한 코드에만 집중할 수 있습니다.
Jetpack은 플랫폼 API와는 별도로 제공되는 androidx.* 패키지 라이브러리로 구성됩니다. 즉, 이전 버전과 호환되며 Android 플랫폼보다 더 자주 업데이트되므로 개발자는 항상 가장 뛰어난 최신 버전의 Jetpack 구성요소에 액세스할 수 있습니다.
2. AndroidX
JetPack은 'AndroidX' 라이브러리로 패키지화되어 있습니다. 최근 안드로이드 스튜디오를 설치해서 사용하는 경우라면 자동으로 androidx 되어있어 크게 상관없지만, 오래전에 개발한 앱 같은경우에는 AndroidX로 마이그레이션 작업이 필요하다. 실제로 회사 코드로 마이그레이션하는 작업이 필요했었는데, 기존 소스코드를 부분적으로 리팩토링 할 필요 없이, compileSdk 수정 후 Android Studio에서 제공하는 'Migration to AndroidX' 기능을 이용하면 SDK 변경 과정에서 발생한 컴파일 문제만 수정하면된다.
3. JetPack의 구성요소
JetPack 라이브러리를 구성하는 대표적인 요소입니다.
Architecture
Data Binding : 앱의 xml 파일(UI)에 데이터를 연결하여 xml 파일에서 데이터에 접근하는 방식
Lifecycles : Activity나 Fragment의 생명주기 상태를 기반으로 작업을 실행하는 구성요소
LiveData : Activity나 Fragment의 생명주기 내에서 데이터의 변경을 관찰할 수 있는 Data Holder 클래스
Navigation : 화면 전환(Fragment To Fragment)과 화면 간 데이터 전달을 관리하는 구성요소
Paging : RecyclerView 내 대량의 데이터를 효율적으로 로딩(Loading)하기 위한 구성요소
Room : SQLite를 활용해 로컬 데이터베이스에 접근하는 라이브러리
ViewModel : MVVM 디자인 패턴에서 파생된 UI와 데이터를 처리하는 로직을 분리하기 위한 구성요소
WorkManager : 백그라운드 작업을 도와주는 최신 라이브러리
Foundation
AppCompat : 이전 버전의 안드로이드에서 상위 버전의 API에 접근할 수 있도록 해주는 라이브러리
Android KTX : 안드로이드 코틀린 개발을 위한 확장 프로그램 세트
Mutidex : 프로젝트 규모가 커짐에 따라 dex 파일을 관리하는 구성요소
Test : 안드로이드 스튜디오의 테스트 작업을 단순화할 수 있도록 설계된 구성요소
Behavior
Download Manager : HTTP 다운로드를 관리하는 서비스 클래스
Media & Playback : 미디어 유형의 재생을 지원하는 클래스
Permissions : 앱이 기기의 접근 권한을 관리하는 클래스
Notifications : 안드로이드의 알림을 관리하는 클래스
Sharing : 다른 앱에 데이터를 공유할 수 있도록 도와주는 클래스
Slices : 앱 외부에 앱의 콘텐츠를 표시할 수 있도록 도와주는 클래스
UI
앱의 다양한 애니메이션, 이모지, 주변기기, UI 등 상호작용과 관련된 역할을 수행하는 구성요소
이렇게 조각 모음으로 되어있는걸 보니, 이미 앱 개발하면서 사용하고 있는것을 여러 볼 수 있다. 다음 글은 JetPack DataStore에 대해서 심화 학습을 진행해야겠다...