Tech Log

[Android] Jetpack 본문

Android/etc

[Android] Jetpack

yuhee kim 2022. 6. 21. 20:59

안드로이드 개발을 하다보면, Jetpack에 대해서 많이 듣게 된다. Jetpack을 이용해서 개발을 한 적은 많은 것 같은데, Jetpack 정확하게 뭐냐고 물으면 대답을 확실하게 할 자신이 없다. 따라서 Jetpack이 도대체 무엇인지 알아보기로 했다.

 

 

1. 정의

 

먼저 Jetpack이라는 단어 자체의 의미만 생각해보자. 네이버 영어 사전에 의하면 Jetpack의 의미는 다음과 같다.

  • 제트팩 ((등에 메는 개인용 분사 추진기, 우주 유영 등에 사용))

그래서 안드로이드 Jetpack을 검색했을 때 나오는 이미지가 안드로이드에 부스터가 달린 것인 것을 확인할 수 있다.

이처럼 Jetpack은 안드로이드 개발을 할 때 부스터 역할을 하는 도구라고 볼 수 있다.

 

Android Developers에서는 아래와 같이 안드로이드 Jetpack을 정의하고 있다.

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

 

이와 같이 Jetpack은 개발에 자주 사용되는 라이브러리, 툴을 묶어놓은 것이다.

Jetpack은 안드로이드 개발자들이 쉽고 빠르게 퀄리티 높은 앱을 만들 수 있도록 돕는다.

 

Jetpack은 androidx.* 패키지 라이브러리로 구성된다.

따라서 플랫폼 API로부터 분리되어 있다.

라이브러리 형태이므로 자주 업데이트가 되어 항상 가장 뛰어난 최신 버전의 Jetpack 구성 요소에 액세스할 수 있다.

* 플랫폼 API : 플랫폼 버전에 따라 제공되며, 어플리케이션이 안드로이드 시스템과 통신할 수 있도록 해준다.

Jetpack Components는 안드로이드 플랫폼의 일부가 아니므로 개발자가 원하는 androidx.* 패키지 라이브러리를 이용하여 원하는 Component만 선택하여 사용할 수 있다.

 

2. 배경

안드로이드 Jetpack에는 나오게 된 배경이 있다. 사실 Jetpack이 등장하기 전, Jetpack과 비슷한 역할을 하는 도구 모음집이 있었다.

Jetpack이 나오기 전, Support Library라는 라이브러리 모음집이 있었다.

하지만 Support Library는 문제가 많았다.

 

Support Library의 문제점

1) 버전 규칙의 모호성

support-v4, support-v13 

위 두 버전을 봤을 때, support-v13이 더 상위 버전이라고 생각하기 쉽다.

그러나 어떤 것이 상위 버전인지에 상관이 없이 support-v13은 API 13 수준 이상에서 사용할 수 있다는 의미를 갖는다.

그리고 support-v4는 API 4 수준 이상에서 사용할 수 있다는 의미가 된다.

 

하지만 support library 24.2.0 배포 후에 위 규칙은 더이상 의미가 없게 되었다.

support library 24.2.0 버전 배포 후, support-v4는 API 8 수준 이하의 지원을 중단하게 되었기 때문이다.

 

또한, 지금은 minSdkVersion이 19 이상만 되어도 95%의 기기를 지원하므로 API 레벨을 의미하는 버전 명은 의미가 없을 수 밖에 없다.

 

2) 단일 라이브러리로써의 문제

Support Library는 3만 여개의 함수를 제공하는 단일 라이브러리다.

단일 라이브러리라는 것이, 하나의 라이브러리만 사용하고 싶어도 다른 라이브러리들이 같이 설치된다.

 

만약 Google play Services를 사용하고 추가로 support-v4, appcompat-v7을 사용한다고 했을 때는 DEX의 한계치인 64k를 넘어버리게 된다. 이때 앱의 규모가 커지거나 라이브러리 내의 메소드가 많을 때 일어나는 에러인 '64k reference limit'가 나온다.

* dex : 안드로이드 런타임에서 궁극적으로 실행되는 코드를 포함하는 파일. 안드로이드 가상 머신인 Dalvik이 인식할 수 있도록 Java로 짜여진 코드가 컴파일 되어 바이트 코드로 변환된 소스 파일.

 

단일 라이브러리일 때의 문제점이 또 있다. Support Library의 새로운 버전을 배포할 때마다 한 기능이 잘못되면 그 기능 하나때문에 업데이트했다가 한꺼번에 다운그레이드해야 하는 문제가 있다. 라이브러리의 모듈화가 되어있지 않아 패키지 별로 의존성이 높아 발생하는 문제다.

 

3. 구성 요소

출처 : Android Developers Blog(https://android-developers.googleblog.com/2018/05/use-android-jetpack-to-accelerate-your.html)

 

Android Jetpack의 라이브러리들은 위 사진과 같다.

그리고 세부적으로 살펴보려면 아래 링크를 참조한다.

 

Android Jetpack Library

 

유형별 Jetpack 라이브러리 살펴보기  |  Android 개발자  |  Android Developers

유형별 Jetpack 라이브러리 살펴보기 카테고리 선택: 모두 인기 휴대전화 이상 데이터 그래픽 수명 주기 미디어 탐색 보안 성능/테스트  UI  * 인기 있고 자주 사용되는 라이브러리 라이브러리설

developer.android.com

 

4. Jetpack Compose

Jetpack에 대해서 공부하면서 Jetpack Compose 라는 것도 따로 있다는 사실을 알게 되었다.

 

Jetpack Compose는 안드로이드 UI를 쉽게 디자인하고 구현하기 위한 라이브러리다.

Compose를 사용하면 Native UI를 코드 레벨로 구현할 수 있다.

 

 Jetpack과 별개의 도구로 생각하면 될 것 같다.

 

 

JetPack Compose도 많은 내용을 포함하고 있는 것 같으니 추후에 포스팅해보도록 하겠다.

 

Jetpack에 대한 개념은 익힌 것 같다. 배경도 공부하니까 Jetpack에 대해 빨리 까먹을 것 같지 않은 느낌이다..

Jetpack의 세부 구성 라이브러리들은 사용할 때마다 공부해서 따로 포스팅을 올리는 것이 나을 것 같다.

 

Jetpack의 전반적인 개념, 배경에 대해 알아보았고 구성 요소들은 추후의 포스팅에 올려보도록 하겠다

 

참조

'Android > etc' 카테고리의 다른 글

[Android] ViewModel 개념  (0) 2022.08.23
[Android] Fragment 생명 주기  (0) 2022.06.25
[Android] SharedPreferences  (0) 2022.06.15
[Android] Glide 라이브러리의 사용  (0) 2022.06.11
[Android] Handler 개념  (0) 2022.06.07
Comments