본문 바로가기
[Developer]/Android

Android Jetpack에 대한 개요

by 반가운 해피빈이 2018. 5. 15.

Google I/O 2018에서 Android Jetpack이 처음 소개 되었다.(2018.05.08)


이 글은 https://developer.android.com/jetpack/ 사이트에 소개된 글을 번역하는 위주로 정리하였다.


Jetpack은 훌륭한 Android 앱을 빠르고 쉽게 만들 수 있도록 도와주는 라이브러리, 툴, 아키텍쳐 지침 모음이다. 공통 인프라 코드를 제공하므로 앱을 유니크하게 만드는 행위에 집중하여 개발할 수 있도록 한다.



Jetpack의 존재 목적

1. 개발 가속화

컴포넌트들은 개별적으로 채택 가능하지만, 더 생산적으로 만드는 Kotlin 언어 특징을 활용하면서 함께 작동하도록 구축되었다.


2. 보일러 플레이트 코드[각주:1] 제거

Android Jetpack은 백그라운드 Task, Navigation, 라이프사이클  관리와 같이 지루한 활동을 관리하므로 앱을 만드는 행위 자체에 집중할 수 있도록 해준다.


3. 고품질의 강력한 앱 구축

모던 디자인 설계 관행을 기반으로 구축된 Android Jetpack 컴포넌트는 이전버전과의 호환성을 보장하며 더 적은 Crash가 발생할 수 있도록 하고 더 적인 메모리 누수가 발생하도록 하였다.



Jetpack에 포함된 컴포넌트

아래의 컴포넌트는 모두 사용하거나 혹은 섞어서 필요한것만 사용할 수 있다.

대표되는 것만 나열했으며, 크게 4개의 그룹으로 나누어 정리하였다.

각 항목이름은 고유명사로 보고 별도로 한글로 번역하지는 않았다. 각 항목에 적혀진 내용은 이번 Jetpack으로 통합 제공되면서 대표적인 변화 및 특징을 기술한 것이다.


1. 기초 및 토대(Foundation)

a. AppCompat

오래된 버전의 Android에 대해서는 적절하게 퇴출

b. Android KTX

보다 간결하고, 관용적인 Kotlin 코드 작성하기

c. Multidex

여러개의 DEX 파일들로 앱을 지원할 수 있도록 제공

d. Test

단위 테스트 및 런타임 UI 테스트를 위한 Android 테스트 프레임워크


2. 설계(Architecture)

a. Data Binding

선언적으로 observable 데이터를 UI 요소에 연결시킨다.

b. Lifecycles

Activity와 Fragment의 라이플사이클에 대하여 관리

c. LiveData

데이터베이스 변경 내용이 발생하였을 때 View에 알림

d. Navigation

인앱 탐색에 필요한 모든 것을 처리한다.

e. Paging

데이터 소스로부터 요청된 정보를 점진적으로 로드한다.

f. Room

SQLite 데이터베이스 접근을 유창하게 돕는다.

g. ViewModel

라이플사이클에 민감한 방식으로 UI관련된 데이터를 관리한다.

h. WorkManager

Android 백그라운드 작업 관리


3. 행위(Behavior)

a. Download Manager

대규모 다운로드에 대한 스케쥴링과 관리

b. Media & playback

미디어 재생, 라우팅, Google Case를 위한 하위 호환되는 API

c. Notifications

Wear와 Auto를 지원하는 이전 버전과 호환되는 알림 API를 제공(여기에서 Wear는 Android의 Wearable을 의미하고, Auto는 자동차 관련을 시스템을 의미한다.)

d. Permissions

앱 권한을 확인하고 요청할 수 있는 호환되는 API들

e. Sharing

앱의 작업표시줄에 적합한 공유 작업을 제공한다.

f. Slices

앱 외부에 앱 데이터를 표시할 수 있는 유연한 UI 요소를 만들기


4. 사용자 인터페이스(UI)

a. Animation & transitions

위젯 이동과 화면간 전환

b. Auto

Android Auto를 위한 앱의 개발을 돕는 컴포넌트

c. Emoji

오래된 플랫폼에서의 최신 이모지 글꼴 사용

d. Fragment

조합 가능한 UI의 기본 단위

e. Layout

서로 다른 알고리즘을 사용한 위젯의 배치

f. Palette

색상 팔레트에서 유용한 정보를 가져오기

g. TV

Android TV를 위한 앱의 개발을 돕는 컴포넌트

h. Wear OS by Google

Wear를 위한 앱을 개발하는데 돕는 컴포넌트



위에서 나열한 것 이외에도 많이 있다.

이 밖의 요소에 대해서는 아래의 사이트를 참고하자


https://developer.android.com/jetpack


개인적으로 보면, 결국 Jetpack은 기존에 없이 새롭게 만들어진 개념은 별로 없다. 대부분 기존에 하나 둘씩 만들던 프로젝트를 통합하여 제공하는 말그대로 Pack의 개념이다. 사실 이전에는 너무 중구난방으로 흩어져있고, 그래서 의존성 관리도 힘들었는데, 이러한 부분을 해소시켜주는 개념이지 않을까 싶다.




  1. 반복되어 자주 사용되는 코드( https://en.wikipedia.org/wiki/Boilerplate_code ) [본문으로]

댓글0