이 문서는 호스트 앱과 잠금화면 앱이 별도로 개발된 경우에 targetSdkVersion 30(Android 11, API 수준 30)을 적용하기 전에 반드시 수행해야 할 과정을 설명합니다. 문서 안에서 M앱은 호스트 앱을 지칭하며, L앱은 별도의 잠금화면 앱을 지칭합니다.
주의 호스트앱에서 직접 잠금화면을 구현하며, 별도의 잠금화면이 없는 퍼블리셔는 해당되지 않는 내용입니다.
이슈
구글은 Google Play 스토어에 업로드되는 앱에 대해 targetSdkVersion 30(Android 11, API 수준 30)을 반드시 사용하도록 강제하는 정책을 발표했습니다. 이 때, M앱 L앱 구조에서 문제가 되는 변경사항은 패키지 공개 상태 관리 부분입니다.
targetSdkVersion 30으로 앱을 업데이트 하면, Android 11 이상의 기기에서 다음의 기능이 정상 동작하지 않게 됩니다.
- 상호간에 설치 유무를 판단하는 기능
- 상호간에 앱을 실행시키는 기능
Google Play에 신규로 등록되는 앱의 경우 2021년 8월까지 완료되어야 하며, 기존 등록된 앱을 업데이트하는 경우 2021년 11월까지 완료되어야 합니다.
해결 방법
benefit-2.21.0 이상 또는 buzzscreen-3.25.0 이상으로 업데이트 하거나, 구글의 가이드에 따라 앱 상호간의 가시성을 위한 설정을 AndroidManifest.xml에 추가하십시오.
참고 상호 가시성을 확보하는 AndroidManifest.xml 설정이 benefit과 buzzscreen에 모두 추가되기 때문에 M앱에서 L앱을 선언하거나 L앱에서 M앱을 선언하는 것 중 하나를 선택하여 적용할 수 있습니다.
M앱에서 L앱을 선언하기
M앱 (패키지명: com.mapp)
<manifest ... > <queries> <package android:name="com.lapp" /> </queries> ... </manifest>
L앱에서 M앱을 선언하기
L앱 (패키지명: com.lapp)
<manifest ... > <queries> <package android:name="com.mapp" /> </queries> ... </manifest>
테스트
L앱에서 확인하기
- 상호 가시성을 선언하지 않은 상태에서 M앱을 찾을 수 없어서 잠금화면 앱을 실행할 수 없는 것은 확인하십시오.
- 상호 가시성을 선언한 뒤 잠금화면이 올바르게 싱행되는 것을 확인을 확인하십시오.
M앱에서 확인하기
M앱의 경우 구현 방식이 퍼블리셔앱 마다 상이하기 때문에 문제 유형을 모두 설명하기는 어려우나 일반적으로 L앱 설치를 유도하는 기능에서 L앱이 설치되어 있음에도 불구하고 계속 구글플레이스토어로 보내게 되는 문제가 발생합니다. 상호 가시성을 선언한 뒤에는 기능이 올바르게 동작하는 것을 확인할 수 있습니다.
관련 정보
- Android developers | 패키지 공개 상태 요구사항 선언
- Google | 예정된 Android 및 Google Play 기한
- Google Play | Google Play의 타켓 API 수준 요구사항 충족하기