최근 안드로이드를 공부하며 JetPack에서 제공하는 기능을 공부하고 있어 JetPack이 정확히 무엇인지 알아보려고 합니다.
'JetPack' 이란?
구글 공식문서에 따르면 Android JetPack을 다음과 같이 설명하고 있습니다.
Jetpack은 개발자가 중요한 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 감소, 여러 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 묶음입니다.
즉, JetPack은 안드로이드 개발자에게 보다 편리하고 생산적인 개발을 위해 안드로이드에서 제공하는 라이브러리 모음이라고 볼 수 있겠습니다.
구글은 위와 같은 이유로 JetPack 라이브러리 사용을 적극 권장하고 있습니다.
텍스트로 볼 때는 잘 와닿지 않지만 JetPack에서 제공하는 기능 중 일부(DataBinding, LiveData, Room...)를 사용해보니 구글에서 권장하는 이유를 체감할 수 있었습니다.
JetPack은 'AndroidX' 라이브러리로 패키지화되어 있습니다.
또한, androidx로 패키지화되어 있기 때문에 안드로이드 플랫폼 API와 분리되어 안드로이드 버전에 관계없이 호환된다는 특징이 있습니다. API와 분리되어 있으면 플랫폼 버전에 제한을 받지 않고, 항상 최신 버전의 androidx 패키지에 접근할 수 있다는 장점이 있습니다.
제 경험에서 안드로이드 스튜디오에서 의존성을 추가할 때 implementation ('jetpack...') 과 같은 키워드는 본 적이 없는 것 같은데 JetPack 관련 라이브러리는 'androidx.' 키워드로 추가되는 이유였습니다.
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 Library' 카테고리의 다른 글
[Android JetPack] Room을 이용해 로컬 데이터베이스 사용하기 - 회원가입 예제 (6) | 2023.01.11 |
---|---|
[Android JetPack] DataBinding + LiveData + ViewModel + Repository 적용해보기 (0) | 2023.01.05 |
[Android JetPack] DataBinding 알아보기 (0) | 2023.01.05 |
[Android JetPack] LiveData 기본 (0) | 2023.01.04 |
[Android JetPack] ViewModel 이란? ( + ViewModelFactory) (0) | 2023.01.03 |