Android 13 퍼미션 변경 사항_READ_EXTERNAL_STORAGE
개요
- Android13 변경 사항에 따른 Permission 선언 세분화
- SDK version에 따른 API 사용 버전 기준 설명
안드로이드 퍼미션에 대해서는 알고 계실꺼라 생각하고 설명은 별도로 하지 않겠습니다.
변경점_ 세분화된 미디어 권한
앱이 Android 13 이상을 타겟팅하고 다른 앱에서 만든 미디어 파일에 액세스해야 하는 경우 READ_EXTERNAL_STORAGE 권한 대신 다음과 같은 세분화된 미디어 권한을 하나 이상 요청해야 합니다.
미디어 유형요청 권한
이미지 및 사진 | READ_MEDIA_IMAGES |
동영상 | READ_MEDIA_VIDEO |
오디오 파일 | READ_MEDIA_AUDIO |
다른 앱의 미디어 파일에 액세스하기 전에 사용자가 앱에 적절한 세분화된 미디어 권한을 부여합니다.
그림 1은 READ_MEDIA_AUDIO 권한을 요청하는 앱을 보여줍니다.
READ_MEDIA_IMAGES 권한과 READ_MEDIA_VIDEO 권한을 동시에 모두 요청하면 시스템 권한 대화상자가 하나만 표시됩니다.
앱이 이전에 READ_EXTERNAL_STORAGE 드림 권한을 부여받은 경우 요청된 READ_MEDIA_* 권한이 부여됨 자동으로 업데이트됩니다.
요약하면
- Android13 지원하지 않는 앱 / 디바이스에서는 READ_EXTERNAL_STORAGE 권한을 사용해야한다.
- Android13 이상 지원하는 앱/ 디바이스에서는 READ_EXTERNAL_STORAGE 권한 대신 세분화된 권한(위의 장표)을 사용 해야한다.
이걸 왜 알아야 하느냐?
- 담당하는 게임에서 해당 권한을 이용하는 기능이 있는 경우 퍼미션이 추가되어야 한다.
- 담당하는 게임에서 지원하는 디바이스가 Android13을 지원하지 않는다면?
- READ_EXTERNAL_STORAGE 권한이 manifest.xml에 등록되어 있어야 기능 사용이 가능하다.
- 단순히 서비스 앱의 target SDK만 고려하여 퍼미션을 제거하게 되면 골치아픈 일이 생길 수 있음에 유의하자
- 현재 서비스를 사용하는 디바이스 종류 / 점유율에 대해서는 구글 플레이 콘솔에서 확인이 가능하다.
그렇다면 앱에서 현재 어떤 버전의 SDK를 타겟으로 서비스되고 있는지 어떻게 알수 있을까?
안드로이드에서 사용하는 SDK 버전 관리에 대해서 간략하게 설명해보자.
Target SDK Version
- 앱이 기기에서 실행 시 실제로 사용되는 Android API 레벨
targetSdkVersion 및 기기 OS버전 비교
targetSdkVersion을 지정하더라도 실제 앱이 설치된 기기의 OS버전은 다를 수가 있다 각 경우
1. OS버전 > targetSdkVersion
- 기기의 OS 버전 : API 30
- targetSdkVersion : API 28
이 경우 기기는 안드로이드 API 30에 포함된 기능을 모두 사용 할 수 있지만 앱의 targetSdkVersion이 28이므로 기기는 API 28을 기반으로 동작
2. OS버전 == targetSdkVersion
- 기기의 OS 버전 : API 30
- targetSdkVersion : API 30
이 경우 OS버전과 targetSdkVersion이 같으므로 API 30을 기반으로 앱이 동작되며 API 30에서 제공하는 기능을 기기에서 모두 사용할 수 있다.
3. OS버전 < targetSdkVersion
- 기기의 OS 버전 : API 28
- targetSdkVersion : API 30
이 경우 앱은 기기의 OS 버전인 API 28 기반으로 동작한다.
** 아주 잘 정리된 글이라고 생각하여 일부 발췌해왔다.
- https://velog.io/@heathcliff/Android-SDK-%EC%84%A4%EC%A0%95-TargetSdk-MinSdk-CompileSdk
우리는 SDK Version 설정 정보에 대해 어디서 확인해야하나?
Android.manifest를 통해서 확인이 가능하다!
물론 직접 빌드를 진행하는 개발자의 경우 SDK 설정에 대해 모를리 없겠지만, 퍼블리셔의 경우 직접 코드를 관리하지 않고 빌드만 전달받는 경우도 발생하기에 적어두었다.