Google Play Console 첫 업로드에서 마주친 오류들 해결하기
이 글에서 다루는 내용
이 글에서는 Flutter Android 앱을 Play Console에 처음 업로드하는 과정에서 발생한 네 가지 이슈, 즉 패키지 소유권 증명(ADI 등록), 서명 키 SHA-256 지문 확인, versionCode 충돌로 인한 세 가지 출시 오류, 그리고 CAMERA 권한에 따른 개인정보처리방침 등록까지 실제 해결 과정을 정리합니다.
이슈 1 — 패키지 소유권 증명 (adi-registration.properties)
Play Console이 com.ytylab.wordro 패키지 이름 소유권 증명을 요구하면서 "The uploaded APK does not have the required token file" 에러가 떴습니다. Google이 제공한 고유 토큰을 APK 내부 assets 폴더에 포함시켜야 하는 요구사항입니다.
Flutter 프로젝트에서는 Flutter assets/가 아니라 Android 네이티브 assets 경로에 생성해야 합니다.
android/app/src/main/assets/adi-registration.properties
파일 내용은 Play Console이 제공한 스니펫 한 줄만 포함합니다(줄바꿈·공백·key=value 형식 사용 불가).
D73N~~AAAAAAAAAAAAA
빌드 후 APK 내부에 파일이 포함됐는지 확인합니다.
unzip -l build/app/outputs/flutter-apk/app-release.apk | grep adi-registration
이슈 2 — 서명 키 지문(SHA-256) 확인
Play Console은 소유권 증명용으로 특정 SHA-256 지문과 일치하는 키로 서명된 APK를 요구합니다. 내가 보유한 keystore들 중 어느 것이 그 지문인지 확인이 필요합니다.
APK에서 지문 추출
APK는 apksigner를 사용합니다.
~/Library/Android/sdk/build-tools/34.0.0/apksigner verify --print-certs \
build/app/outputs/flutter-apk/app-release.apk
AAB는 JAR 서명 방식이라 keytool로 확인합니다.
keytool -printcert -jarfile build/app/outputs/bundle/release/app-release.aab
keystore에서 직접 확인
keytool -list -v \
-keystore <storeFile 경로> \
-alias <keyAlias> \
-storepass <storePassword>
출력된 SHA256: 줄의 값이 Play Console이 요구하는 값과 일치해야 합니다. Play App Signing을 쓰는 프로젝트의 경우 업로드 키 인증서의 지문을 기준으로 비교합니다.
이슈 3 — AAB 업로드 시 3개 오류
Play Console에서 내부 테스트에 AAB를 업로드했는데 아래 세 오류가 함께 떴습니다.
오류: 앱의 APK 또는 Android App Bundle을 업로드해야 합니다.
오류: 기존 사용자가 새롭게 추가된 App Bundle로 업그레이드하지 못하므로 이 버전은 출시할 수 없습니다.
오류: 이 버전은 App Bundle을 추가하거나 삭제하지 않습니다.
세 오류는 연결된 증상입니다. 파일은 업로드 박스에 보이지만 실제로는 릴리스에 첨부되지 않은 상태이며, 원인은 대부분 versionCode 충돌입니다. Play는 어느 트랙에서든 한 번이라도 사용된 versionCode를 다시 받지 않으므로, 소유권 증명용 APK를 올리면서 versionCode 1~2가 소진된 상태에서 같은 값으로 AAB를 올리면 조용히 거부됩니다.
해결은 여유 있게 versionCode를 점프시키는 것입니다.
# pubspec.yaml
version: 1.0.0+10
clean 빌드로 실제 AAB에 반영:
fvm flutter clean
fvm flutter pub get
fvm flutter build appbundle --release
AAB 내부 versionCode 검증:
unzip -p app-release.aab base/manifest/AndroidManifest.xml > /tmp/manifest.xml
~/Library/Android/sdk/build-tools/34.0.0/aapt2 dump xmltree /tmp/manifest.xml \
| grep -E "versionCode|versionName"
이슈 4 — CAMERA 권한 개인정보처리방침
업로드된 AAB 옆에 빨간 경고가 떴습니다.
APK 또는 Android App Bundle에서 개인정보처리방침이 필요한 권한을 사용합니다(android.permission.CAMERA)
CAMERA·위치·오디오 등 민감 권한을 쓰는 앱은 반드시 공개 개인정보처리방침 URL을 등록해야 합니다. Play Console의 정책 및 프로그램 → 앱 콘텐츠 → 개인정보처리방침 항목에 URL을 등록하면 해소됩니다.