[Android] Jetpack 톺아보기

Soo Hyun·2022년 10월 17일
0

Jetpack 이란?

조금 늦긴했지만 복습할 겸 Android Jetpack에 대해 포스팅해보려 합니다.

Jetpack의 사전적 정의

사전적 의미로는 "등에 메는 개인용 분사 추진기"로 정의되어 있습니다. 위의 이미지만 보더라도 무언가 개발에 추진력을 얻기 위한 라이브러리 모음이라는 것을 예측할 수 있습니다.
여기까진 저의 개인적인 생각이고,

Google Android Developer 에서는
"Jetpack은 개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 축소, 모든 Android 버전 및 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음입니다." 라고 소개하고 있습니다.

Jetpack의 구성요소

위의 이미지는 Jetpack 의 구성요소인데 크게 Architecture, UI, Foundation, Behavior 로 나뉘어져 있습니다.
Jetpack 구성 요소는 기본 Android 플랫폼의 일부가 아닌 "번들되지 않은" 라이브러리로 제공됩니다.
즉, 원하는 속도로 원하는 시간에 각 구성 요소를 채택할 수 있습니다. 또한 플랫폼 API와는 별도로 제공되는 androidx.* 패키지 라이브러리로 구성되어 있습니다. 플랫폼 API와는 별도이기 때문에 Android 플랫폼보다 더 자주 업데이트 되므로 우리 개발자들은 항상 가장 뛰어난 최신 버전의 Jetpack 구성요소에 액세스 할 수 있습니다.

Jetpack 구성요소에 대해 간략히 정리하자면,

Architecture

  • Data Binding
    • 레이아웃의 UI 구성요소를 선언적 형식을 사용하여 앱의 데이터 소스에 결합합니다.
  • Lifecycles
    • 활동이나 프래그먼트의 현재 수명 주기 상태를 기반으로 동작을 조정할 수 있는 수명 주기 인식 구성요소를 빌드합니다.
  • LiveData
    • 관찰 가능한 데이터 홀더 클래스입니다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식합니다. 즉, Activity, Fragment, Service 등 다른 앱 구성요소의 수명 주기를 고려합니다. 수명 주기 인식을 통해 LiveData는 활동 수명 주기 상태에 있는 앱 구성요소 관찰자만 업데이트 합니다.
  • Navigation
    • 인앱 UI를 빌드 및 구조화하고 딥 링크를 처리하며 화면 간에 이동합니다.
  • Paging
    • 페이지에 데이터를 로드하여 RecylcerView에 표시합니다.
  • Room
    • SQLite 데이터베이스에서 지원하는 영구 데이터를 생성, 저장 및 관리합니다.
  • ViewModel
    • ViewModel 클래스는 수명 주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었습니다. ViewModel 클래스를 사용하면 화면 회전과 같이 구성을 변경할 때도 데이터를 유지할 수 있습니다.
  • WorkManager
    • WorkManager는 지속적인 작업에 권장되는 솔루션입니다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지됩니다. 대부분의 백그라운드 처리는 지속적인 작업을 통해 잘 처리되므로 WorkManager는 백그라운드 처리에 권장하는 기본 API입니다.

UI

  • Animation & Transitions
    • 물리학 기반 애니메이션 API를 사용하여 자연스러운 애니메이션을 만듭니다. 또한, 시작 및 종료 레이아웃에서 UI 모션에 애니메이션을 적용합니다.
  • Auto, TV & Wear
    • Android TV 채널을 제공, Wear OS by Google 스마트 시계용 어플리케이션을 만듭니다.
  • Emoji
    • 현재 및 이전 기기에 이모티콘을 표시합니다.
  • Fragment
    • Activity 내에서 호스팅되는 여러 개의 독립적인 화면으로 앱을 분류합니다.
  • Layout
    • 앱에서 사용자 인터페으스를 위한 구조를 정의합니다. 레이아웃의 모든 요소는 View와 ViewGroup객체의 계층 구조를 사용하여 빌드됩니다. 일반적으로 View는 사용자가 보고 상호작용할 수 있는 것을 그립니다. 반면, ViewGroup은 View 및 기타 ViewGroup 객체의 레이아웃 구조를 정의하는 보이지 않는 컨테이너입니다.
  • Palette
    • 이미지에서 대표적인 색상 팔레트를 추출합니다.

Foundation

  • AppCompat
    • 이전 API 버전의 플랫폼에서 새 API에 액세스 할 수 있습니다(대부분 Material Design 사용).
  • Android KTX
    • Android Jetpack과 기타 Android 라이브러리에 포함된 Kotlin 확장 프로그램 세트입니다. KTX 확장 프로그램은 간결하고 직관적인 Kotlin을 Jetpack, Android 플랫폼, 기타 API에 제공합니다.
  • Multidex
    • Android 5 이전 기기에 여러 dex 파일이 있는 어플리케이션을 배포합니다.
  • Test
    • Android에서 테스트합니다.

Behavior

  • Download Manager
    • 장기 실행 HTTP 다운로드를 처리하는 시스템 서비스입니다. 클라이언트는 URI를 특정 대상 파일로 다운로드하도록 요청할 수 있습니다.
  • Media & Playback
    • 다른 앱과 미디어 콘텐츠 및 컨트롤을 공유합니다, 현재 media2로 대체 된 상태입니다
  • Permissions
    • 앱이 자체 샌드박스 밖에 있는 리소스나 정보를 사용해야 하는 경우 권한을 선언하고 이 액세스에 제공하는 권한 요청을 설정할 수 있습니다.
  • Notifications
    • 사용자에게 미리 알림, 다른 사람과의 커뮤니케이션 또는 앱의 기타 시기적절한 정보를 제공하기 위해 Android가 앱의 UI 외부에 표시하는 메세지입니다.
  • Sharing
    • Android는 인텐트 및 관련 extra를 사용하여 사용자가 선호하는 앱을 통해 빠르고 쉽게 정보를 공유할 수 있도록 합니다.
  • Slices
    • 앱 외부에 템플릿 UI 요소를 표시합니다.

출처
https://developer.android.com/jetpack?hl=ko
https://android-developers.googleblog.com/2018/05/use-android-jetpack-to-accelerate-your.html

profile
내가 쓰고 내가 보는

0개의 댓글