[안드로이드] QUERY_ALL_PACKAGES 권한 이슈 트러블슈팅

S_Soo100·2023년 4월 26일
4

flutter

목록 보기
9/19
post-thumbnail

QUERY_ALL_PACKAGES 관련 이슈로 앱 업로드가 거부되는 상황 발생시 해결방법

  • 플러터 앱 개발에 사용하던 라이브러리 중 AndroidManifest.xml 파일에 QUERY_ALL_PACKAGES 라는 uses-permission을 사용하는 것이 있었다.
  • 이 부분이 문제가 되어 계속해서 앱 업데이트/개시 등이 문제가 되었다.
    이전에도 그랬는지는 잘 모르겠는데, QUERY_ALL_PACKAGES에 대해서는 엄격하게 검사하는 것 같다.

문제 파악

  • 폭넓은 패키지(앱) 가시성(QUERY_ALL_PACKAGES) 권한(클릭!) 사용에 대한 공식문서를 보고
    대체 이게 뭔지 좀 알아보았다.
    • 기능. 기기에 설치된 앱 인벤토리 확인
    • 조건 1. 앱이 Android 11 이상, Android API 수준 30 이상 타겟팅
    • 조건 2. 모든 앱을 검색하기 위한 핵심 목적 소명 필요(개인정보 이슈로 인해)
    • 허용 용도. 기기 검색, 바이러스 백신 앱, 파일 관리자, 브라우저, 금융 거래 기능, 등
    • 비허용 용도.
        1. 앱의 핵심 목적과 직접적인 관련이 없는 경우(p2p공유 등)
        2. 판매 목적으로 데이터를 획득하는 경우
        3. 앱에서 쿼리된 앱 인벤토리 데이터를 분석 또는 광고 수익 창출 목적으로 판매하거나 공유하는 경우
        4. 범위가 좁은 앱 가시성 방식으로도 필요한 작업을 처리할 수 있는 경우

해결책 1. 소명하기

  • 머리아프게 앱을 바꾸는 것 보다 스토어 측에 "우리 이거 꼭 필요해요"를 말하는게 더 빠를 수 있다.

  • 스토어로 들어가서 앱 콘텐츠 -> 모든 패키지 쿼리 권한의 "관리"를 누른다.

  • 핵심목적, 용도(체크리스트), 동영상URL을 첨부해야 한다.

    (1) 핵심목적 : 허용 용도 내에서 앱이 무슨 일을 하는지 설명
    (2) 용도 : 체크리스트를 보고 적당한 부분에 체크해둔다
    (3) 앱 실행 영상을 촬영한 다음 youtube에 "링크 있는 사람만 보기" 옵션으로 업로드 해서 url첨부

    세 가지를 모두 작성했으면 저장을 누르고,
    좌측 드롭다운 메뉴 목록의 "게시 개요"로 들어가서 변경사항을 전송해준다.

이러고 스토어 심사에서 Ok해주면 여기서 끝

해결책 2-1. 프로젝트 수정

  • 작업하던 앱은 금융 거래 기능에도 해당되기 때문에 소명하면 될 거라고 생각했는데, "범위가 좁은 앱 가시성 방식" 때문에 계속해서 반려가 났다.
    아무튼 전부 접근시키는건 개인정보 보호상 위험하다는 조치.
    이렇게 된 이상 프로젝트를 수정해보자.

  • 내 프로젝트/android/app/src/main/AndroidManifest.xml 파일에 접근한다.

<uses-permission
	android:name="android.permission.QUERY_ALL_PACKAGES"
	tools:ignore="QueryAllPackagesPermission" />
  • 위 부분을 삭제하고, 아래와 같이 queries를 넣고 그 안에 명시적인 패키지 이름을 넣어주면 된다.
  • 수정을 완료한 다음 빌드해서 기능이 똑같이 작동하는지 확인하고 앱번들을 올리자.
    <queries>
        <package android:name="com.package.package1"/>
        <package android:name="com.package.package2"/>
        <package android:name="com.package.package3"/>
        ....
    </queries>

해결책 2-2. 활성 Appbundle 죽이기

새로 올린 번들이 문제가 없더라도 심사에서 리젝 당하고는 한다.
기존에 QUERY_ALL_PACKAGES를 쓰던 번들이 활성화 된 경우에 그렇다.

  • 방금 열었던 "앱 콘텐츠" -> "모든 패키지 쿼리 권한" 에서 상단의 App Bundle및 APK 보기를 클릭합니다.

  • 그러면 현재 그 권한을 쓰고있는 번들의 목록이 출력된다. 이 번호를 메모허가너 적어두자.
    QUERY_ALL_PACKAGES권한을 쓰는 번들이 공개테스트/비공개테스트/내부테스트 등 어딘가에 올라가서 활성화 되어 있으면 새로 올린 번들이 아무런 문제가 없어도 넘어가지지 않는다.

  • 다시 좌측 드롭다운 메뉴 목록의 App Bundle 탐색기로 들어간다.
    위에서 메모해둔 번들을 찾아서 제일 오른쪽의 파란색 화살표를 눌러서 상세 정보를 열람한다.

  • 빨간 테두리로 표시한 "출시"의 활성 버젼이 보일 것이다.
    버전 넘버를 클릭하면 해당 버전의 출시 정보로 넘어가는데, 그 버전이 "대체됨", "게시되지 않음" 상태여도 우선 그 번들이 꽂혀있으면 문제로 본다.

  • 버전 정보로 넘어왔으면 오른 쪽의 "트랙보기"를 눌러서 "새 버전 만들기"를 해준다.
    새 버전에 적용할 번들은 라이브러리에서 문제 없는 버전을 눌러주면 된다.
  • 기타 정보들은 적당히 입력하고 버전을 만들어서 제출한 뒤, "게시 개요"로 다시 가서 변경사항을 업로드 해준다.
  • 그 후에 다시 App Bundle 탐색기로 돌아가면 해당 버전이 비활성화 되어있는걸 확인할 수 있다.
    이렇게 모든 범인을 다 비활성화 상태로 두고 플레이스토어 판단을 기다리자.

결과

  • 기능도 잘 굴러가고 앱 상태도 프로덕션으로 정상적으로 변경되었다.
    이전에 올려둔 앱번들 때문에 앱을 업데이트/게시 못하는 사람이 없기를 바라며 글을 마친다.
profile
플러터, 리액트

2개의 댓글

comment-user-thumbnail
2023년 7월 25일

감사합니다 소스를 아무리 고쳐도 계속해서 리젝되는 이유를 찾았네요

답글 달기
comment-user-thumbnail
2023년 11월 1일

안녕하세요! 해결책 2-2에서 QUERY_ALL_PACKAGES 권한을 갖고 있는 버전이 두 개인데,
하나를 바꾸고 제출하려 하면 또 다른 하나가 QUERY_ALL_PACKAGES 가지고 있어서 제출할 수 없다고 하는데
이런 경우 해결책을 알고 계실까요..?ㅜㅜ

답글 달기