본문 바로가기
깡샘 코틀린

11-1 제트팩과 androidx 소개

by 농농씨 2023. 6. 27.

API가 제공하는 뷰만으로는 버전호환성 때문에 한계가 있다. 구글에서는 사용자의 요구에 따라 플랫폼 API 외에 라이브러리를 따로 제공해 복잡한 화면을 편리하게 구성하도록 돕는다. 11, 12장에서는 이러한 구글 라이브러리로 화면을 구성하는 법을 공부할 것이다.
 
구글에서는 안드로이드 앱을 개발하는 데 필요한 다양한 라이브러리 모음을 제트팩(Jetpack)이라는 이름으로 제공한다. 제트팩은 안드로이드 플랫폼이 기본으로 제공하는 플랫폼 API 외에 따로 추가된 라이브러리이다.
 

플랫폼 API

플랫폼 API는 ART(Android runtime)에서 제공하는 안드로이드 앱의 핵심 라이브러리이다. ART는 대부분 android나 java로 시작하는 패키지명을 사용한다. 우리가 지금껏 이 책에서 살펴본 클래스는 대부분 플랫폼 API이다. java.lang.String 등의 자바클래스부터 android.widgetTextView 등의 안드로이드 클래스는 모두 플랫폼 API 이다.
 
01장에서 설명한것처럼(블로그에 기록 안함) 안드로이드 앱은 런타임 때 ART에 의해 실행되므로 ART에서 제공하는 플랫폼 API를 이용해 개발한다. 그런데 플랫폼 API를 이용하면 사용자 기기의 버전과 달라서 호환성 문제가 발생할 수 있다. (10-1 참조)
또한 플랫폼 API는 기본 재료일 뿐 실제 앱을 개발할 때는 더 다양한 기능이나 화면 구현이 필요해서 구글이 2018년에 제트팩이라는 라이브러리 모음을 발표했다.
 
 

제트팩

제트팩은 구글에서 안드로이드 앱 개발용으로 제공하는 다양한 라이브러리 모음으로, androidx로 시작하는 패키지명을 사용한다. 안드로이드 공식 문서에는 제트팩을 다음처럼 소개한다.

제트팩은 개발자가 관심 있는 코드에 집중할 수 있도록 권장 사항 준수, 상용구 코드 제거, 모든 안드로이드 버전과 기기에서 일관되게 작동하는 코드를 작성할 수 있도록 돕는 라이브러리 모음입니다.

제트팩은 크게 다음 3가지 목적으로 제공한다.

  • 앱을 개발하는 데 필요한 권장 아키텍처를 제공한다.
  • API 레벨의 호환성 문제를 해결한다.
  • 플랫폼 API에서 제공하지 않는 다양한 기능을 제공한다.

제트팩에서는 앱을 개발할 때 적용할 수 있는 다양한 아키텍처를 제시하며 이를 위해 뷰 모델(ViewMode), 라이브 데이터(LiveData), 룸(Room), 페이징(Paging) 등과 같은 라이브러리를 제공한다. 
 
제트팩은 API 레벨의 호환성 문제를 해결해준다. 예를들어 툴바를 구성하려면 플랫폼API에서 제공하는 android.widget.Toolbar 를 써야하는데 이는 API 레벨 21 버전에 추가되어 하위 버전의 기기에서 오류가 발생한다.
그런데 제트팩의 appcompat 라이브러리에서 제공하는 androidx.appcompat.widget.Toolbar 클래스를 이용하면 호환성 문제가 발생하지 않는다. 따라서 목적이 같은 클래스를 제트팩의 라이브러리에서도 제공한다면 대부분 제트팩의 클래스를 이용한다.
그리고 제트팩에서는 플랫폼API에서 제공하지 않는 다양한 기능을 제공한다. ex. 뷰 페이저(스와이프로 화면 전환하는 기능)
 

androidx 라이브러리

제트팩에는 androidx라는 패키지명으로 시작하는 다양한 라이브러리가 있다.* 그중에 이번 장의 주제인 화면 구성과 관련된 라이브러리를 소개하면 다음과 같다.
*androidx 라이브러리 소개: developer.android.com/jetpack/androidx

  • androidx.appcompat: 앱의 API 레벨 호환성을 해결해준다.
  • androidx.recyclerview: 목록 화면을 구성한다.
  • androidx.viewpager2: 스와이프로 넘기는 화면을 구성한다.
  • androidx.fragment: 액티비티처럼 동작하는 뷰를 제공한다.
  • androidx.drawerlayout: 옆에서 서랍처럼 열리는 화면을 구성한다.