태그 보관물: android

Android 13(API level 33) 이상 Storage 관련 오류 해결

개요

새로운 앱을 업로드 하는데 API level 34 이상이어야 했습니다. API level 이 낮은 장비에서 잘 동작해서 34 로 변경 후 구글플레이에 업로드 했습니다. 그런데 앱이 거부되었습니다.

거부 이유

메일의 제목은 조치 필요: 앱이 Google Play 정책을 준수하지 않음 이었습니다. 세부 내용을 확인해 보니 다음과 같았습니다.

발견된 문제: 손상된 기능 정책 위반

비정상 기능 정책을 준수하지 않는 콘텐츠가 포함되어 있습니다.

  • 앱이 로드되지만 응답하지 않음
메일 내용

문제 파악

이미지 까지 첨부되어 있어 확인해 보았습니다. 내용은 Storage 에 쓰기 권한을 요청하는 화면이었습니다.

첨부된 이미지

단순히 SETTINGS 를 눌러 권한을 허용하면 될 것 같은데 뭔가 좀 이상했습니다.

API level 34 를 지원하는 실제 테스트 기기가 없어서 에뮬레이터를 이용해서 테스트 해 보았습니다. 앱을 설치하고 실행하니 위와 같은 화면이 나타났습니다. SETTINGS 를 터치하니 앱의 권한 관리 화면으로 이동 되었습니다. 그런데 권한을 추가할 수 없고 요청된 권한 사항이 없다는 글자만 나타나고 비활성화 되어 있는 상태였습니다.

앱이 위의 화면에서 설정 화면으로 이동만 되고 더 이상 할 수 있는 것이 없어서 정상적으로 실행되지 않는다는 것을 확인했습니다.

문제 해결

이전 API level 에서는 처음에 나타나는 권한 부여만 선택해 주면 문제 없이 동작했습니다. 문제는 API level 33 이상에서 나타나는 것으로 생각되었습니다. 이리저리 찾아보니 AndroidManifest.xml 파일에 권한 관련 설정 부분에 추가 내용이 필요했습니다.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

android:maxSdkVersion=”32″ 를 위와 같이 추가해서 다시 업로드 하면 문제 없이 앱이 등록되었습니다.

안드로이드 앱 업로드 시 손상된 기능 정책 위반 해결

개요

개발이 끝난 안드로이드 게임을 업로드 했습니다. 문제 없이 등록이 될 거라고 생각했는데 손상된 기능 정책 위반 문제가 발견되었다는 메일이 오고 거부되었습니다.

문제 파악

메일의 내용은 다음과 같았습니다.

발견된 문제: 손상된 기능 정책 위반
비정상 기능 정책을 준수하지 않는 콘텐츠가 포함되어 있습니다.

앱에 응답하지 않거나 콘텐츠를 반환하지 않는 아이콘 또는 버튼이 포함되어 있습니다.

참고로 영문 메시지는 App contains icon(s) or button(s) that are not responsive or do not return content. 입니다.

메일의 일부 내용

게임 상에 누를 수 있는 버튼은 세 개인데 계속 실행할 수 있는 버튼이 문제였던 것 같았습니다. 새로운 게임을 시작하고 그 후 계속 버튼을 활성화 하도록 작업 되어 있습니다. 처음에는 비활성화 되도록 설정되어 있었는데 그것이 문제였습니다.

문제 해결

버튼을 비활성화하고 사용 가능 할 때 다시 활성화 해 주는 것이 논리적인 흐름으로 보면 맞다고 생각했습니다. 그런데 구글 측에서 앱을 검사할 때 버튼으로 간주되는 것이 있으면 일단 눌려져야 하는 것 같았습니다. 버튼을 비활성화 하지 않고 계속 버튼을 클릭해도 새 게임을 시작한 것처럼 동작하도록 수정 후 업로드 했더니 해결되었습니다.

버튼이 있으면 무조건 누를 수 있게 하고 논리적인 흐름에 따른 비활성화는 메시지 같은 것을 보여줘서 처리하는 것이 앱이 거절되지 않고 등록되도록 하는 데 도움이 됩니다.