티스토리 뷰

1. 구글 플레이스토어 target API 수준 요구사항 살펴보기

APK 파일을 구글 플레이에 업로드 할 때, 구글 플레이가 요구하는 target API 레벨 요구사항을 충족해야 합니다.

이 글이 작성되는 시점 기준(2022.10.14)으로 새로운 앱은 반드시 Android 12 (API level 31) 이상을 타겟팅 해야합니다. (Wear OS 의 경우에는 Android 11(API 30) 또는 그 이상을 만족해야 합니다.)

2022년 11월 부터는 target SDK 수준을 31 로 하거나 그 이상으로 맞춰야 합니다. 그에 따라 나타나는 수정 사항도 적합하게 반영해야 합니다.

참고로 2022년 부터, 안드로이드의 새 버전 디바이스를 사용하는 새로운 유저는 일부 오래된 앱을 사용할 수 없을 수도 있습니다.

1.1. 왜 새로운 SDK 를 타겟팅 하나요?

매번 새로운 안드로이드 버전은 새 업데이트 내역을 소개합니다. 이는 보안과 성능 향상 그리고 보다 나은 UX 가 포함됩니다. 몇몇 이런 변경 사항들은 오로지 명시적으로 targetSdkVersion 으로 매니페스트에 지정된 앱에 대해서만 적용됩니다.

만약 우리 앱이 여전히 오래된 버전의 안드로이드를 사용하고 있다면, 유저들에게 더 좋은 경험과 이익을 주기위해 우리의 앱을 최신의 API level 로 타겟팅 설정 해야합니다. 타겟 sdk 를 올리면 우리 앱이 최신 기능을 사용할 수 있는 이점도 있습니다. 게다가 Andorid 10 (API level 29) 유저들은 Andorid 5.1 (API level 22) 이하를 타겟팅하는 앱을 최초 실행 시 경고를 보게 됩니다.

이 문서는 우리가 타겟 sdk 를 업데이트 할 떄 중요한 점을 강조합니다.

하위 버전에서 마이그레이트 하는 경우 아래 리스트를 확인 해주세요.

만약 Gradle 파일이 메니페스트 앤트리를 포함한다면, targetSdkVersion을 확인 또는 변경할 수 있습니다. 다른 대안 으로는 android:targetSdkVersion 속성을 매니페스트 파일에서 <uses-sdk> 속성을 통해 사용할 수 있습니다.

2. Android 11 (API level 30) 에서 Android 12 (API level 31) 로 마이그레이션

2.1. 권한 및 보안

블루투스: BLUETOOTH 와 BLUETOOTH_ADMIN 퍼미션을 BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, or BLUETOOTH_CONNECT 퍼미션 으로 교체해야 합니다. 더이상 LOCATION 퍼미션 요청은 필요 없습니다.

위치: 유저는 대략적인 위치 정보만 제공하도록 설정할 수 있습니다. ACCESS_COARSE_LOCATION 퍼미션을 ACCESS_FINE_LOCATION 퍼미션을 요청할 때 반드시 함께 요청해야 합니다.

인텐트 필터: 만약 앱에서 activitys, services, or broadcast receivers 들이 인텐트 필터를 사용하고 있다면, 반드시 android:exported 속성을 해당 컴포넌트에 설정해야합니다.

동면(Hibernation): 오랜 기간 사용이 되지 않는다면, 앱들은 동면 모드로 돌입할 수 있습니다. 동면 모드에서 앱에 주어진 권한과 캐시가 초기화 될 수 있습니다. 그리고 jobs 나 알림을 사용할 수 없게 됩니다. 앱 동면에서 상태를 체크하는 방법을 확인 할 수 있습니다.

팬딩 인텐트 변경가능성: 반드시 앱에서 생성하는 각각 pending intent 객체 의 가변성을 특정해야합니다.

2.2. UX

알림 커스터마이징: 사용자 지정 콘텐츠 보기가 있는 알림은 더 이상 전체 알림 영역을 사용하지 않습니다. 대신 시스템이 표준 템플릿을 적용합니다. 이 템플릿은 사용자 지정 알림이 모든 상태에서 다른 알림과 동일한 장식을 갖도록 합니다. 이 동작은 Notification.DecoratedCustomViewStyle의 동작과 거의 동일합니다.

안드로이드 앱 링크 인증 변경: Android 앱 링크 확인을 사용할 때 인텐트 필터에 BROWSABLE 카테고리가 포함되고 HTTPS 체계를 지원하는지 확인하세요.

2.3. 성능

포그라운드 서비스 실행 제한: Android 12 이상을 타겟팅 하는 앱에서는 백그라운드에서 포그라운드 서비스를 실행할 수 없게됩니다. 몇몇 특별한 경우를 제외하면 말이죠. 앱이 백그라운드에서 실행되는 동안 포그라운드 서비스를 시작하려고 하면 예외가 발생합니다(몇몇 특별한 경우 제외).

앱이 백그라운드에서 실행되는 동안 WorkManager를 사용하여 빠른 작업을 예약하고 시작하는 것이 좋습니다. 사용자가 요청하는 시간에 민감한 작업을 완료하려면 정확한 알람 내에서 포그라운드 서비스를 시작하십시오.

알림 trampoline 제한: 사용자가 알림을 탭하면 일부 앱은 사용자가 보고 상호 작용하는 활동을 시작하는 앱 구성 요소를 실행하여 응답합니다. 이 앱 구성 요소는 알림 트램폴린으로 불리고 있습니다.

앱은 알림 trampoline 을 통한 service 또는 broadcast receivers 로부터 액티비티를 실행해서는 안됩니다. 사용자가 알림 내의 알림 또는 작업 버튼을 탭한 후 앱은 서비스 또는 브로드캐스트 수신기 내부에서 startActivity()를 호출할 수 없습니다.

References

https://developer.android.com/google/play/requirements/target-sdk

 

Google Play의 대상 API 수준 요구사항 충족하기  |  Android Developers

Google Play의 대상 API 수준 요구사항 충족하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. APK를 업로드하는 경우 Google Play의 대상 API 수준 요구사항을 충족

developer.android.com

2022.10.09 - [Android/Jetpack Compose] - [Android] This annotation should be used with the compiler argument '-opt-in=kotlin.RequiresOptIn' 해결하기

2022.10.09 - [Android/Groovy] - [Android Groovy] build.gradle plugins apply false? 왜 false 인가

댓글
최근에 올라온 글
최근에 달린 댓글
네이버 이웃추가
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함