Android 제트팩 androidx 와 appcompat

timothy jeong·2021년 11월 6일
0

Android with Kotlin

목록 보기
21/69
post-thumbnail

플랫폼에서 제공하는 API만으로 앱의 화면을 구성할 수 이씨잠ㄴ, 버전 호환성 때문에 개발을 어렵게 만든다. 또한 사용자 요구가 늘어남에 따라 앱이 복잡해지다보니 좀 더 다양한 뷰가 필요하기도 하다. 구글에서는 이러한 요구에 따라 플랫폼 API 외에 라이브러리를 따로 제공해 복잡한 화면을 편리하게 구성하도록 돕는다. 이러한 라이브러리의 이름이 제트팩(Jetpack) 이다.

플랫폼 API
플랫폼 API는 안드로이드 런타임(ART)에서 제공하는 안드로이드 앱의 핵심 라이브러리다. ART 는 대부분 android 나 java 로 시작하는 패키지명을 사용한다. 이제껏 살펴본 클래스의 대부분이 플랫폼 API 이다. 안드로이드 앱은 런타임 때 ART에 의해 실행되므로 ART 에서 제공하는 플랫폼 API를 이용해 개발한다.

제트팩

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

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

제트팩에서는 앱을 개발할 때 적용할 수 있는 다양한 아키텍처를 제시하며 이를 위해 뷰모델, 라이브 데이터, 룸, 페이징 등과 같은 라이브러리를 제공한다.

androidx 라이브러리

제트팩에는 androidx 라는 패키지명으로 시작하는 다양한 라이브러리가 있다. 그 중에서 다음의 것들만 살펴보자

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

appcompact 라이브러리

appcompat 라이브러리는 위에서도 말한것과 같이 API 호환성을 해결한다. 대표적으로는 Activity 가 상속하고 있는 AppCompatActivity 클래스가 appcompat 라이브러리에서 온 것이다. (MainActivity : AppCompatActivity()) 또한 알림을 만들때 사용하던NotificationCompat 이 appcompact 라이브러리에서 얻어온 클래스이다.

appcompat 라이브러리를 사용하려면 gradle 파일에 의존성을 설정해야한다.

dependencies {

    implementation 'androidx.appcompat:appcompat:1.3.1'
}

appcompat 를 사용하지 않고도 충분히 개발을 할 수 있지만, appcompat 을 사용하면 안드로이드 버전이 올라감에 따라 유지보수해줘야하는 수고가 줄어들기 때문에 유용하다.

호환성을 고려한 기본 뷰 클래스

플랫폼 API에서 제공하는 기본 뷰를 appcompact 라이브러리에서도 제공한다. 예를 들어 플랫폼 API 에서 문자열을 출력하는 TextView 클래스를 appcompact 라이브러리에서는 AppCOmpactTextView 라는 클래스명으로 제공한다. 두 클래스는 사용 목적이나 기능이 대부분 같다. 그리고 AppCOmpactTextView 는 TextView 를 상속받는다.

이렇게 플랫폼 API 에서 제공하는 View 클래스를 appcompact 라이브러리에서도 제공하는 이유는 호환성 문제를 해결하기 위해서이다. appcompact 라이브러리의 뷰 클래스로 대체하면 호환성을 고려한 아래와 같은 코드를 쓰지 않아도 된다.

if (Build.VERSION.SDK_INT >= ....) { ... } 
profile
개발자

0개의 댓글