이번에 앱을 Android 13 이상을 타겟팅해보기 위해 targetSDK 를 33으로 올려서 배포를 해보았는데 AD_ID 관련 이슈가 발생하여 이를 공유해보고자 한다.
앱이 워낙 단순하고 비영리 목적이며, 센서, 미디어 파일 엑세스 관련 기능이 없기 때문에 다른 부분에는 문제가 없었으나, AD_ID 관련 설문은 반드시 응해야 했다.
처음엔 'Android 13 이상을 타겟팅하는 앱은 앱 메니페스트에서 com.google.android.gms.permission.AD_ID 권한을 선언해야 합니다' 라는 문장을 보고, 13이상이면 해당 퍼미션을 달아줘야되는구나 생각해서 달아주었는데
앱에 '광고'가 들어있지 않아 굳이 필요없다고 생각했고 앱에서 광고 ID 를 사용하나요? 라는 질문에 아니오라고 체크했다. 이를 위해 메니페스트에서 작성했던 퍼미션을 제거한 뒤에, 다시 앱 번들을 업로드 해보았다.
하지만..
분명 앱의 매니페스트 파일에서 해당 퍼미션을 제거해놨는데 권한이 포함되어있다고 그러길래 얼탱이가 없었다. 얘네가 나를 놀리고 있는 것인가...? 생각하던 중
하지만 역시 문제는 나한테 있었으며, 원인을 무엇인지 찾을 수 있었다.
https://developer.android.com/about/versions/13/behavior-changes-13?hl=ko
공식 문서를 확인해보면
'앱이 라이브러리의 매니페스트에서 AD_ID 권한을 사용하는 SDK 를 사용하는 경우 이 권한은 매니페스트 파일과 기본적으로 병합됩니다. 이 경우 매니페스트 파일에서 권한을 선언할 필요가 없습니다' 라는 문구가 적혀있었다.
조사를 해본 결과(오픈 카톡방에 질문) Firebase Crashlytics 를 앱에 연동했거나, 또는 Google Analytics 를 연동하였다면 AD_ID 권한이 자동으로 들어간다고 답변을 주셨다.
이에 대해 깃허브에 이슈도 올라와 있는 것을 확인할 수 있었다.
https://github.com/firebase/firebase-android-sdk/issues/2582
이슈를 쭉 읽어본 결과 해결책은 크게 2가지가 존재하는데
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />
<meta-data
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
다음과 같이 매니페스트 내에 ad_id 를 사용하지 않는다고 명시적으로 선언해주는 방법과
그냥 위의 설문에서 '예(AD_ID 를 사용합니다)' 라고 선택하고 Analytics 에 체크를 해주면 되는 것이었다.
분명히 퍼미션 제거했는데 왜 자꾸 포함되어있다고 그러지 하면서 새벽에 골머리를 앓았는데 다행히 해결할 수 있었다.
이 이슈로 나와 같은 고통을 받는 사람이 없으면 해서 글을 작성해보았다.
저도 같은 문제 겪고 있었는데 덕분에 해결되었습니다!