Google Play의 타겟 API 수준 요구사항 충족하기

APK를 업로드하는 경우 Google Play의 타겟 API 수준 요구사항을 충족해야 합니다. 새 앱과 앱 업데이트는 Android 10(API 수준 29) 이상을 타겟팅해야 합니다. 단, Wear OS 앱은 API 수준 28 이상을 타겟팅해야 합니다.

2021년 8월부터 신규 앱은 다음 요건을 충족해야 합니다.

  • Android App Bundle 형식을 사용하여 게시합니다.
  • 다운로드 크기가 150MB를 초과하는 애셋 또는 기능을 업로드하려면 Play Asset Delivery 또는 Play Feature Delivery를 사용합니다. 신규 앱에는 더 이상 확장 파일(OBB)이 지원되지 않습니다.
  • API 수준 30(Android 11) 이상을 타겟팅하고 동작 변경사항에 맞게 조정합니다. 단, Wear OS 앱은 계속 API 수준 28 이상을 타겟팅해야 합니다.

2021년 11월부터 앱 업데이트는 API 수준 30 이상을 타겟팅하고 Android 11의 동작 변경사항에 맞게 조정해야 합니다. 업데이트를 수신하지 않는 기존 앱은 영향을 받지 않으며 Play 스토어에서 계속 다운로드할 수 있습니다. Wear OS 앱은 API 수준 28 이상을 계속 타겟팅해야 합니다.

Android App Bundle 전송으로의 전환은 기존의 인스턴트 앱 ZIP 형식을 사용하는 인스턴트 환경에도 영향을 줍니다. 2021년 8월부터 새로운 인스턴트 환경 및 기존 인스턴트 환경 업데이트는 인스턴트 지원 App Bundle을 게시해야 합니다.

최신 SDK를 타겟팅해야 하는 이유

새로운 Android 버전이 출시될 때마다 보안 및 성능이 크게 개선되며 전반적으로 Android 사용자 환경이 향상됩니다. 이러한 변경사항 중 일부는 targetSdkVersion 매니페스트 속성(타겟 API 수준이라고도 함)을 통해 지원을 명시적으로 선언한 앱에만 적용됩니다.

최신 API 수준을 타겟팅하도록 앱을 구성하면 사용자가 이러한 개선사항의 혜택을 받을 수 있으며, 이전 Android 버전에서도 계속해서 앱을 실행할 수 있습니다. 최신 API 수준을 타겟팅하면 앱에서 플랫폼의 최신 기능을 활용해 사용자 환경을 개선할 수 있습니다. 또한 Android 10(API 수준 29) 현재 앱에서 Android 5.1(API 수준 22) 이하를 타겟팅하는 경우 사용자가 처음으로 앱을 시작할 때 경고가 표시됩니다.

이 문서에서는 대상 API 수준을 업데이트하여 Google Play 요구사항을 충족할 때 알아 두어야 하는 중요사항에 관해 다룹니다.

참고: Gradle 파일에 매니페스트 항목이 포함되어 있는 경우 빌드 구성의 설명대로 앱의 Gradle 파일에서 targetSdkVersion의 현재 값을 확인하거나 변경할 수 있습니다. 또는 <uses-sdk> 매니페스트 요소 문서에 설명되어 있는 대로 매니페스트 파일에 있는 android:targetSdkVersion 속성을 사용할 수 있습니다.

Android 10(API 수준 29)에서 Android 11(API 수준 30)로 이전

Android 11(API 수준 30)에 도입된 변경사항의 전체 목록을 확인하려면 동작 변경사항 페이지를 참고하세요.

Android 10(API 수준 29) 미만에서 이전

이전할 Android 버전을 선택하세요.

Android 5(API 수준 21)로 이전

아래 버전에서 도입된 변경사항이 앱에 적용되었는지 확인하려면 각 버전별 동작 변경사항 페이지를 참조하세요.

다음 섹션의 안내를 따라 계속하세요.

Android 6(API 수준 23)으로 이전

다음 항목은 Android 6.0 이상 버전을 타겟팅하는 앱에 적용됩니다.

  • 런타임 권한

    • 위험한 권한은 런타임에만 부여되기 때문에 UI 흐름에 이러한 권한을 부여할 여유가 확보되어야 합니다.

    • 가능한 경우 앱에서 권한 요청 거부를 처리할 준비가 되어 있어야 합니다. 예를 들어 사용자가 기기 GPS 액세스 권한 요청을 거부하면 앱에서 다른 방법으로 진행할 수 있어야 합니다.

Android 6.0(API 수준 23)에서 도입된 변경사항의 전체 목록을 확인하려면 해당하는 버전의 Android를 다루는 동작 변경사항 페이지를 참조하세요.

다음 섹션의 안내를 따라 계속하세요.

Android 7(API 수준 24)로 이전

다음 항목은 Android 7.0 이상 버전을 타겟팅하는 앱에 적용됩니다.

  • 잠자기 및 앱 대기

    잠자기 및 앱 대기 최적화에 설명되어 있는 동작을 고려하여 설계합니다. 여기에는 여러 차례의 플랫폼 출시를 통해 도입된 점진적인 변경사항이 모두 포함됩니다.

    기기가 잠자기 및 앱 대기 모드일 때, 시스템은 다음과 같이 작동합니다.

    • 네트워크 액세스를 제한합니다.
    • 알람, 동기화, 작업을 연기합니다.
    • GPS 및 Wi-Fi 검색을 제한합니다.
    • 일반적인 우선순위를 갖는 Firebase 클라우드 메시징 메시지를 제한합니다.
  • 권한 변경사항

    • 시스템에서 앱 비공개 디렉터리 액세스를 제한합니다.
    • 앱 외부에 file:// URI를 노출하면 FileUriExposedException이 트리거됩니다. 앱 외부로 파일을 공유해야 하는 경우 FileProvider를 구현합니다.
  • 시스템에서 NDK가 아닌 라이브러리로의 링크를 금지합니다.

Android 7.0(API 수준 24)에서 도입된 변경사항의 전체 목록을 확인하려면 해당하는 버전의 Android를 다루는 동작 변경사항 페이지를 참조하세요.

다음 섹션의 안내를 따라 계속하세요.

Android 8(API 수준 26)로 이전

다음 항목은 Android 8.0 이상 버전을 타겟팅하는 앱에 적용됩니다.

Android 8.0(API 수준 26)에서 도입된 변경사항의 전체 목록을 확인하려면 해당하는 버전의 Android를 다루는 동작 변경사항 페이지를 참조하세요.

Android 8(API 26)에서 Android 9(API 28)로 이전

Android 9.0(API 수준 28)에 도입된 변경사항의 전체 목록을 확인하려면 동작 변경사항을 참고하세요.

Android 9(API 수준 28)에서 Android 10(API 수준 29)으로 이전

이전 섹션의 안내를 따라 API 30으로 계속 업데이트합니다.

앱 현대화하기

앱의 대상 API를 업데이트하면서 Android의 최신 기능을 도입하여 앱을 현대화하고 사용자 환경을 개선할 방법이 있는지 생각해 보세요.

  • 베타 버전인 CameraX를 사용하여 카메라를 최대한 활용하세요.
  • Jetpack 구성요소를 통해 권장사항을 따르고, 상용구 코드 작성 작업에서 벗어나며, 복잡한 작업을 간소화하여 중요한 코드에만 집중할 수 있습니다.
  • Kotlin을 사용하면 더 적은 코드로 더 빠르게 더 나은 앱을 작성할 수 있습니다.
  • 개인정보 보호 요구사항 및 권장사항을 준수해야 합니다.
  • 앱에 어두운 테마 지원을 추가하세요.
  • 앱에 동작 탐색 지원을 추가하세요.
  • Google 클라우드 메시징(GCM)에서 최신 버전의 Firebase 클라우드 메시징으로 앱을 이전하세요.
  • 고급 창 관리를 활용합니다.

SDK 및 라이브러리 확인 및 업데이트하기

타사 SDK 종속 항목이 API 29를 지원하는지 확인하세요. 일부 SDK 제공업체는 종속 항목을 매니페스트에 게시하며 추가적인 조사를 요구하는 곳도 있습니다. API 29를 지원하지 않는 SDK를 사용하는 경우 우선 SDK 제공업체와 함께 문제를 해결해야 합니다.

또한 앱이나 게임의 targetSdkVersion이 비공개 Android 플랫폼 라이브러리 액세스를 제한할 수 있습니다. 자세한 내용은 플랫폼 라이브러리에 연결되는 NDK 앱을 참조하세요.

사용 중인 Android 지원 라이브러리 버전에 있을 수 있는 모든 제한사항도 확인해야 합니다. 항상 Android 지원 라이브러리의 주요 버전과 앱의 compileSdkVersion이 호환되는지 확인해야 합니다.

지원 라이브러리의 주요 버전 이하의 targetSdkVersion을 선택하는 것이 좋습니다. 최신 호환 기능 및 버그 수정을 활용하려면 호환되는 최신 지원 라이브러리로 업데이트하는 것이 좋습니다.

앱 테스트하기

앱의 API 레벨과 기능을 적절하게 업데이트하고 나면 몇 가지 핵심 사용 사례를 테스트해야 합니다. 다음 제안사항에 전체 내용이 포함된 것은 아니지만, 테스트 프로세스의 길잡이로 삼기에 좋습니다. 테스트에서 다음 항목을 확인하시기 바랍니다.

  • 앱이 오류나 경고 없이 API 29로 컴파일됩니다.
  • 앱이 사용자가 권한 요청을 거부하는 경우를 대비한 전략을 갖추고 있으며 사용자에게 권한 요청 메시지를 표시합니다. 방법은 다음과 같습니다.
    • 앱의 앱 정보 화면으로 이동하여 각 권한을 사용 중지합니다.
    • 앱을 열고 비정상 종료가 발생하지 않는지 확인합니다.
    • 핵심 사용 사례 테스트를 실행하여 필수 권한이 다시 요청되는지 확인합니다.

  • 잠자기가 예상대로 동작하고 오류가 발생하지 않습니다.
    • adb를 사용하여 앱이 실행되고 있을 때 테스트 기기를 잠자기로 설정합니다.
      • Firebase 클라우드 메시징 메시지를 트리거하는 사용 사례를 테스트합니다.
      • 알람 또는 작업을 사용하는 사용 사례를 테스트합니다.
      • 백그라운드 서비스의 종속 항목을 제거합니다.
    • 앱을 앱 대기 모드로 설정합니다.
      • Firebase 클라우드 메시징 메시지를 트리거하는 사용 사례를 테스트합니다.
      • 알람을 사용하는 사용 사례를 테스트합니다.

  • 새로운 사진/동영상 촬영이 정상적으로 처리됩니다.
    • 앱에서 제한된 ACTION_NEW_PICTUREACTION_NEW_VIDEO 브로드캐스트를 제대로 처리하는지 확인합니다(JobScheduler 작업으로 이동).
    • 이러한 이벤트에 의존하는 주요 사용 사례가 아직 작동하는지 확인합니다.
  • 다른 앱과의 파일 공유가 정상적으로 처리됩니다.
    • 다른 앱과 파일 데이터를 공유하는 사용 사례를 테스트합니다 (동일한 개발자의 다른 앱인 경우도 해당).
    • 다른 앱에 콘텐츠가 표시되며 비정상 종료가 트리거되지 않는지 테스트합니다.

추가 정보

Google에서 월간 파트너 뉴스레터를 비롯한 Android 및 Google Play의 주요 소식 및 공지사항을 보내 드릴 수 있도록 Google Play Console에서 이메일 수신에 동의해 주세요.