SDK 30(11, Ros) 동작변경 사항

2021. 6. 3. 14:06Android/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