android sdk 31 타겟팅
이제 11월부로.....sdk31을 타겟팅하지 않은 앱은 업데이트가 거절되었다.
암튼 그래서...sdk 31 타겟팅을 하면서 수정한 것들을 기록해보기로한다.
1. uses permission 설정(알람기능 정상 동작 위해)
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
안드로이드 31 이후로, 정확한 알림기능을 사용하기 위해서는 다음과같은 권한이 필요하다. 알림 안 쓴다면 안 써도 됨.
하지만 난 있으니까 썼다.
2. android export 설정(intent filter가 들어가는 부분에 모두 명시해야함)
android:exported="true"
앱 외부와 관련 있으면 true, 아니면 false로 설정한다. intent filter가 있는 곳만 추가해주면 된다.
3. pending intent 설정
val pendingIntent = if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.M) {
PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENTor PendingIntent.FLAG_IMMUTABLE)
} else {
PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
pendingintent의 변경 여부를 추가해야한다...이것도 알림 기능때문에 대기중인 intent를 사용해야해서 쓴것.............
변경 불가능하면 FLAG_IMMUTABLE, 가능하면 FLAG_MUTABLE를 끝에 추가하면 된다.
4. work-runtime 라이브러리 추가
implementation 'androidx.work:work-runtime-ktx:2.7.1'
나는 이정도로 끝났지만..sdk 31타겟팅하면서 바뀐게 생각보다 많다.
테스트 시나리오는 이걸 참고했다.
앱 테스트하기
앱의 API 레벨과 기능을 적절하게 업데이트하고 나면 몇 가지 핵심 사용 사례를 테스트해야 합니다. 다음 제안사항에 전체 내용이 포함된 것은 아니지만, 테스트 프로세스의 길잡이로 삼기에 좋습니다. 테스트에서 다음 항목을 확인하시기 바랍니다.
- 앱이 오류나 경고 없이 API 29로 컴파일됩니다.
- 앱이 사용자가 권한 요청을 거부하는 경우를 대비한 전략을 갖추고 있으며 사용자에게 권한 요청 메시지를 표시합니다. 방법은 다음과 같습니다.
- 앱의 앱 정보 화면으로 이동하여 각 권한을 사용 중지합니다.
- 앱을 열고 비정상 종료가 발생하지 않는지 확인합니다.
- 핵심 사용 사례 테스트를 실행하여 필수 권한이 다시 요청되는지 확인합니다.
- 잠자기가 예상대로 동작하고 오류가 발생하지 않습니다.
- adb를 사용하여 앱이 실행되고 있을 때 테스트 기기를 잠자기로 설정합니다.
- Firebase 클라우드 메시징 메시지를 트리거하는 사용 사례를 테스트합니다.
- 알람 또는 작업을 사용하는 사용 사례를 테스트합니다.
- 백그라운드 서비스의 종속 항목을 제거합니다.
- 앱을 앱 대기 모드로 설정합니다.
- Firebase 클라우드 메시징 메시지를 트리거하는 사용 사례를 테스트합니다.
- 알람을 사용하는 사용 사례를 테스트합니다.
- adb를 사용하여 앱이 실행되고 있을 때 테스트 기기를 잠자기로 설정합니다.
- 새로운 사진/동영상 촬영이 정상적으로 처리됩니다.
- 앱에서 제한된 ACTION_NEW_PICTURE 및 ACTION_NEW_VIDEO 브로드캐스트를 제대로 처리하는지 확인합니다(JobScheduler 작업으로 이동).
- 이러한 이벤트에 의존하는 주요 사용 사례가 아직 작동하는지 확인합니다.
- 다른 앱과의 파일 공유가 정상적으로 처리됩니다.
- 다른 앱과 파일 데이터를 공유하는 사용 사례를 테스트합니다 (동일한 개발자의 다른 앱인 경우도 해당).
- 다른 앱에 콘텐츠가 표시되며 비정상 종료가 트리거되지 않는지 테스트합니다.
https://developer.android.com/google/play/requirements/target-sdk?hl=ko
Google Play의 대상 API 수준 요구사항 충족하기 | Android Developers
Google Play의 대상 API 수준 요구사항 충족하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. APK를 업로드하는 경우 Google Play의 대상 API 수준 요구사항을 충족
developer.android.com
동작 변경사항: Android 12를 타겟팅하는 앱 | Android Developers
Android 12를 타겟팅하는 앱에 영향을 주는 Android 12의 변경사항을 알아봅니다.
developer.android.com