2021. 6. 3. 14:06ㆍAndroid/Google 버전 업데이트
SDK 29(10, Qos)부터 적용된 범위지정저장소의 사용이 의무화 됨에 따라 해당 내용 적용이 필요
1. AndroidManifest 파일 requestLegacyExternalStorage 설정 무효화
- <application android:requestLegacyExternalStorage="true">로 SDK 29에서 scoped storage 적용 유예 기간을 위해 기존 레거시 외부저장소 사용 옵션을 제공하였으나, SDK 30부터 scoped storage 정책이 의무화되어 옵션 설정이 작동하지 않음
2. AndroidManifest파일 preserveLegacyExternalStorage 설정 제공
- SDK29 사용자들의 SDK30 마이그레이션을 위해 해당 설정 제공, 업데이트하는 경우에만 동작하며 새로 설치하는 경우 설정은 무효화 처리됨
3. File API 허용
- SDK 29에서 범위지정저장소 사용시 허용하지 않았던 File API를 SDK30에서는 다시 사용할 수 있게 되었음, 그러나 내부적으로 MediaStore로 위임되기 때문에 성능상의 이점이 없어 MediaStore를 이용하는 것이 적극 권장됨
참고 > https://medium.com/androiddevelopers/modern-user-storage-on-android-e9469e8624f9
4. MediaStore로 공용 미디어파일 접근(Image, Video, Audio 컬렉션)
- 자신의 앱이 만든 미디어 파일의 경우 읽기 및 수정, 삭제 접근 제한 없음, 다른 앱이 만든 미디어 파일의 경우 외부 저장소 읽기 권한 필요하며, MediaStore API를 통한 UI로 사용자의 명시적인 권한 부여없이는 수정, 삭제 불가(SDK29+에는 쓰기 권한 제공하지 않음, 권한 요청 시에도 읽기 권한만 제공)
5. SAF로 공용 비미디어파일 접근(Download 컬렉션)
- 자신의 앱이 만든 비미디어 파일의 경우 읽기 및 수정, 삭제 접근 제한 없음, 다른 앱이 만든 비미디어 파일의 경우 읽기 접근만 가능하며, SAF의 시스템 선택기 이용 필요(사용자에게 파일 선택권을 제시해 명확히 인지하게 해야함)
> 4, 5 공통적으로 사용자가 접근을 하는 경우는 완전한 엑세스 권한이 부여되어 별도의 권한 요청이 필요없음
6. permission.ACCESS_MEDIA_LOCATION
- 미디어 파일 접근 시, 미디어 파일 메타정보에서 위치 정보는 런타임 시 권한 요청이 필요함
(permission.READ_EXTERNAL_STORAGE, permission.ACCESS_MEDIA_LOCATION은 런타임 퍼미션으로 런타임시 요청이 필요)
7. permission.MANAGE_EXTERNAL_STORAGE
- 파일관리자나 앱 백업 및 복구 앱과 같이 광역적인 파일 접근이 필요한 경우가 아니면 사용 불가(구글 내부 심사 거침, Qos에서 SAF를 광역적인 파일 접근에 사용하는 경우가 있어 해당부분을 프레임워크 자체에서 Download 디렉터리에만 한정되게 수정했다고 함))
참고 동영상 > Android 10 - https://medium.com/androiddevelopers/modern-user-storage-on-android-e9469e8624f9
'Android > Google 버전 업데이트' 카테고리의 다른 글
APK에서 AAB로 (0) | 2023.11.07 |
---|---|
Android 14 동작 변경 사항 (0) | 2023.08.02 |
Qos(API 29) (0) | 2021.04.23 |