지원 라이브러리

참고: Android 9.0(API 수준 28)의 출시와 함께 Jetpack의 일부인 새로운 버전의 지원 라이브러리 AndroidX가 출시됩니다. AndroidX 라이브러리는 기존 지원 라이브러리를 포함하며 최신 Jetpack 구성요소 또한 포함합니다.

지원 라이브러리를 계속 사용할 수 있습니다. 이전 아티팩트(버전 27 이상이며 android.support.*로 패키징됨)는 Google Maven에서 계속 사용할 수 있습니다. 그러나 모든 새 라이브러리 개발은 AndroidX 라이브러리에서 진행됩니다.

모든 신규 프로젝트에서 AndroidX 라이브러리를 사용하는 것이 좋습니다. 기존 프로젝트를 AndroidX로 이전하는 것 또한 고려해보세요.

여러 API 버전을 지원하는 앱을 개발할 때 이전 Android 버전에서 최신 기능을 제공하거나 그와 동일한 기능으로 대체하는 표준 방법이 필요할 수도 있습니다. 이전 버전의 플랫폼을 처리하는 코드를 빌드하는 대신 지원 라이브러리를 활용하여 호환성 계층을 제공할 수 있습니다. 또한 지원 라이브러리는 표준 프레임워크 API에서는 사용할 수 없었던 손쉬운 개발 및 여러 기기에 걸친 지원을 위한 추가 편의 클래스 및 기능을 제공합니다.

원래 앱용 단일 바이너리 라이브러리였던 Android 지원 라이브러리는 앱 개발을 위한 일련의 라이브러리로 발전했습니다. 이러한 라이브러리 대다수는 앱 개발의 필수적인 요소는 아니지만 사용하는 것이 좋습니다.

이 문서에서는 지원 라이브러리의 구성요소를 이해하고 이를 앱에서 효과적으로 사용하는 방법을 이해할 수 있도록 지원 라이브러리를 간략하게 설명합니다.

주의: 지원 라이브러리 버전 26.0.0(2017년 7월)부터 대부분의 라이브러리 패키지를 대상으로 대부분의 지원 라이브러리가 지원하는 최소 API 수준은 Android 4.0(API 수준 14)으로 증가했습니다. 자세한 내용은 이 페이지의 버전 지원 및 패키지 이름을 참조하세요.

지원 라이브러리의 용도

지원 라이브러리는 몇 가지 뚜렷한 용도가 있습니다. 이전 버전의 플랫폼을 위한 하위 호환성 클래스는 그중 하나입니다. 앱에서 지원 라이브러리를 사용할 수 있는 더 자세한 방법은 다음과 같습니다.

  • 새로운 API에 관한 하위 호환성 - 지원 라이브러리의 많은 부분은 최신 프레임워크 클래스 및 메서드를 위한 하위 호환성을 제공합니다. 예를 들어 Fragment 지원 클래스는 Android 3.0(API 수준 11) 이전 버전을 실행하는 기기에서 프래그먼트를 지원합니다.
  • 편의 및 도우미 클래스 - 이 지원 라이브러리는 다양한 도우미 클래스, 특히 사용자 인터페이스 개발용 도우미 클래스를 제공합니다. 예를 들어 RecyclerView 클래스는 API 수준 7 이상의 Android 버전에서 사용할 수 있는 매우 긴 목록을 표시하고 관리하기 위한 사용자 인터페이스 위젯을 제공합니다.
  • 디버깅 및 유틸리티 - 메서드 입력에 관한 향상된 코드 린트 검사를 제공하는 support-annotations 라이브러리, 65,536개 이상의 메서드로 앱을 구성하고 배포하는 Multidex 지원 등 앱에 통합하는 코드 이상의 유틸리티를 제공하는 여러 기능이 있습니다.

지원 사용 vs 프레임워크 API

지원 라이브러리는 Android 프레임워크에서 API와 매우 유사한 클래스와 메서드를 제공합니다. 이를 발견하면 API의 프레임워크 버전을 사용해야 할지, 이와 동등한 지원 라이브러리를 사용해야 할지 고민할 수 있습니다. 다음은 언제 프레임워크 API 대신 지원 라이브러리 클래스를 사용해야 하는지에 관한 지침입니다.

  • 특정 기능과 호환성 - 플랫폼의 이전 버전을 실행하는 기기에서 최근 플랫폼 기능을 지원하려면 지원 라이브러리에서 동등한 클래스와 메서드를 사용합니다.
  • 관련 라이브러리 기능과 호환성 - 더 정교한 지원 라이브러리 클래스는 추가 지원 라이브러리 한 개 이상에 종속될 수 있으므로 이를 위해서 지원 라이브러리를 사용해야 합니다. 예를 들어 ViewPager 지원 클래스는 FragmentPagerAdapter 또는 FragmentStatePagerAdapter 지원 클래스와 함께 사용해야 합니다.
  • 일반 기기 호환성 - 앱에서 이전 버전과 호환되는 방식으로 사용하려는 특정 플랫폼 기능이 없더라도 앱에서 지원 라이브러리 클래스를 사용하는 것이 좋습니다. 예를 들어 프레임워크 Activity 클래스 대신 ActivityCompat를 사용하는 것이 좋습니다. 그러면 나중에 Android 6.0 (API 수준 23)에 도입된 새로운 권한 모델을 통합하는 것과 같은 최신 기능을 활용할 수 있습니다.

플랫폼 API 클래스의 호환성 구현을 제공하는 지원 라이브러리 클래스는 호스트 기기 플랫폼 버전의 제한으로 인해 최신 버전의 모든 기능을 제공하지 못할 수도 있습니다. 이와 같은 경우 지원 라이브러리 클래스는 단계적으로 성능이 저하되도록 설계되었으며 최신 플랫폼 API의 모든 기능이나 데이터를 제공하지 못할 수도 있습니다. 이와 같은 이유로 참조 문서에서 사용하는 라이브러리 클래스와 메서드를 검토해야 하며 앱이 지원하는 가장 오래된 버전의 플랫폼을 실행하는 기기에서 철저하게 테스트해야 합니다.

참고: 지원 라이브러리는 각 프레임워크 API마다 동등한 클래스와 메서드를 제공하지 않습니다. 경우에 따라 기기에서 사용할 수 없는 메서드를 처리하기 위해 프레임워크 메서드 호출을 명시적 SDK 버전 확인으로 래핑하고 대체 코드를 제공해야 할 수도 있습니다. 코드에 버전 확인을 사용하는 방법에 관한 자세한 내용은 다양한 플랫폼 버전 지원을 참고하세요.

버전 지원 및 패키지 이름

일부 지원 라이브러리 패키지는 support-v4 패키지처럼 v# 표기법으로 원래 지원하는 최소 API 수준을 나타내는 패키지 이름으로 되어 있습니다. 지원 라이브러리 버전 26.0.0(2017년 7월 버전)부터 모든 지원 라이브러리 패키지 대상으로 지원되는 최소 API 수준이 Android 4.0(API 수준 14)으로 변경되었습니다. 이러한 이유로 지원 라이브러리의 최신 버전을 사용할 때 v# 패키지 표기법이 최소 API 지원 수준을 나타낸다고 볼 수 없습니다. 최신 버전의 이러한 변화는 v4와 v7 라이브러리 패키지가 동일한 최소 API 수준을 지원한다는 것을 의미합니다. 예를 들어 26.0.0 이상 버전의 지원 라이브러리에 관해서 support-v4 패키지와 support-v7 패키지는 모두 최소 API 수준 14를 지원합니다.

라이브러리 출시 버전 지원

24.2.0 또는 25.0.1과 같은 지원 라이브러리의 출시 버전은 해당 버전의 라이브러리에서 지원하는 최소 API 수준과 다릅니다.출시 버전 번호는 라이브러리가 빌드된 플랫폼 API 버전을 나타내며 이 라이브러리에 포함될 수 있는 최신 API를 나타냅니다.

특히 버전 24.2.0에서 24와 같은 출시 버전 번호의 첫 번째 부분은 출시 당시 사용할 수 있었던 플랫폼 API의 버전과 일치합니다. 지원 라이브러리의 출시 버전 수준은 이 API 수준의 일부 기능을 포함한다는 것을 보여주지만 이것이 새로운 플랫폼 API 버전에 출시된 모든 기능과 호환될 것이라고 가정하면 안 됩니다.

라이브러리 종속성

Android 지원 라이브러리 모음의 대부분 라이브러리는 라이브러리 하나 이상에 종속됩니다. 예를 들어 거의 모든 지원 라이브러리는 support-compat 패키지에 종속됩니다. 일반적으로 gradle 빌드 도구가 종속되는 라이브러리를 자동으로 포함하여 라이브러리 종속 항목을 관리하기 때문에 지원 라이브러리 종속 항목을 걱정하지 않아도 됩니다.

앱에 어떤 라이브러리와 라이브러리 종속 항목이 포함되어 있는지 확인하려면 앱 개발 프로젝트의 빌드 루트에서 다음 명령어를 실행하여 Android 지원 라이브러리 및 기타 라이브러리를 비롯한 프로젝트의 종속 항목 보고서를 가져옵니다.

gradle -q dependencies your-app-project:dependencies

Gradle로 개발 프로젝트에 지원 라이브러리를 추가하는 방법을 자세히 알아보려면 지원 라이브러리 설정을 참고하세요. Gradle 작업에 관한 자세한 내용은 빌드 구성을 참고하세요.

Android 4.0 (API 수준 14) 이상의 최신 버전의 경우 모든 Android 지원 라이브러리가 플랫폼의 기본 수준에도 종속됩니다.