![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
미니 안드 Q Scoped Storage 관련 정리
- Score_고동빈
- 조회 수 1487
- 2019.04.28. 21:25
원본은 링크한 안드로이드 개발자 문서입니다.
1. Scoped Stroage가 무엇이냐?
앱에게 샌드박싱된 저장소를 제공하는 개념입니다. 이게 적용되면 앱이 파일 쓰기 권한을 부여받지 않아도 외부 저장소에 자유로이 파일을 쓸 수 있습니다.
기존 안드로이드 시스템에선 외부 저장소의 파일을 읽거나 쓸때 READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE 권한을 사용자에게 부여받은 후에 자유롭게 수정했지만, 이제 이 권한들이 Q OS부터는 사라지고, 대신 Scoped Storage로 대체됩니다.
2. Scoped Storage가 적용되면 변경점은?
앱이 지맘대로 타 앱의 파일을 들여다 볼 수 없습니다. 또한 앱이 삭제되면 샌드박스 저장소 또한 같이 날라갑니다.
3. 내 앱이 삭제돼도 파일은 남기고 싶다면? 다른 앱의 파일을 보고 싶다면?
Shared Collection을 쓰면 됩니다. Shared Collection은 사진&영상, 음악, 다운로드 폴더에 한해 제공됩니다.
Shared Collection은 모든 앱이 공용으로 사용하는 저장소이지만, 아무 권한 없이 타 앱의 파일에 접근할 수는 없습니다. 만약 접근하고 싶으면,
- 사진과 영상의 경우 READ_MEDIA_IMAGES, READ_MEDIA_VIDEO 권한을
- 음악의 경우 READ_MEDIA_AUDIO 권한을
부여받아야 합니다. 다운로드 폴더는 아무 권한 없이 읽을 수 있지만, 대신 사용자가 앱이 사용할 파일을 직접 선택하도록 해야 합니다(이미지 첨부 Picker를 생각하시면 됩니다).
4. Shared Collection에 다른 앱이 저장한 파일에 수정을 가하고 싶다면?
해당 파일 타입에 대한 기본 관리자 앱 권한을 부여받아야 합니다. 가령, 다른 앱이 저장한 음악 파일들을 수정하고 싶다면 내 앱이 사용자가 지정한 기본 음악 관리자 앱이어야 합니다.
5. 특정 파일에 접근하려면?
사용자가 앱이 사용할 파일을 직접 선택하도록 해야 합니다(이미지 첨부 Picker를 생각하시면 됩니다).
6. Scoped Storage 정책에 영향을 받는 기기는?
- API Target이 Q OS 이상이며
- 시스템이 P OS에서 업데이트 되지 않아야 합니다(출고당시부터 Q인 기기).
7. iOS랑 다른 점은?
반은 비슷한데 반은 틀립니다.
앱이 기본적으로 타 앱의 저장소에 접근할 수 없다는 것은 iOS의 App Sandboxing과 비슷하나, 특정 파일 종류에 한해 여러 앱들이 공용으로 쓸 수 있으며 (권한을 받아야 하지만) 타 앱이 저장한 파일을 읽을 수도 있습니다. 즉, 대부분의 사용자들이 외장 저장소를 사용하는 주 이유인 음악/사진/동영상에 한해서는 별 영향이 없을 것입니다.
![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
![6_inch](https://meeco.kr/files/member_extra_info/profile_image/674/797/023/23797674.jpg?20220504160647)
![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
![[성공]함께크는성장](https://meeco.kr/files/member_extra_info/profile_image/821/047/47821.png?20201010143249)
![aleji](https://meeco.kr/files/member_extra_info/profile_image/693/930/023/23930693.jpg?20210701005840)
3. 내 앱이 삭제돼도 파일은 남기고 싶다면? 다른 앱의 파일을 보고 싶다면?
Shared Collection을 쓰면 됩니다. Shared Collection은 사진&영상, 음악, 다운로드 폴더에 한해 제공됩니다.
Shared Collection은 모든 앱이 공용으로 사용하는 저장소이지만, 아무 권한 없이 타 앱의 파일에 접근할 수는 없습니다.
4. Shared Collection에 다른 앱이 저장한 파일에 수정을 가하고 싶다면?
해당 파일 타입에 대한 기본 관리자 앱 권한을 부여받아야 합니다. 가령, 다른 앱이 저장한 음악 파일들을 수정하고 싶다면 내 앱이 사용자가 지정한 기본 음악 관리자 앱이어야 합니다.
이 두개가 큰거 같네요. 기존 퍼블릭 스토리지가 사라지고 Shared Collection만 사용 가능한데다가 수정도 함부로 못한다는거..
![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
![[성공]함께크는성장](https://meeco.kr/files/member_extra_info/profile_image/821/047/47821.png?20201010143249)
![6_inch](https://meeco.kr/files/member_extra_info/profile_image/674/797/023/23797674.jpg?20220504160647)
![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
Access specific files
In some use cases, your app might need to open or create files that it doesn't have permission to access:
- In a photo-editing app, open a drawing.
- In a business productivity app, save a text document to a location that the user chooses.
For these situations, use the Storage Access Framework, which allows the user to select a specific file to open, or choose a specific location to save a file.
번역을 안 해 놨네요. Storage Access Framework를 이용하면 File Picker를 이용하여 파일에 접근할 수 있다고 되어 있습니다.
추가: 해 놨었네요. 5번을 참고하시면 되겠습니다.
![[성공]함께크는성장](https://meeco.kr/files/member_extra_info/profile_image/821/047/47821.png?20201010143249)
![Score_고동빈](https://meeco.kr/files/member_extra_info/profile_image/111/130/024/24130111.png?20200329202742)
위에 제 댓글에도 답글을 달아주셨는데, 이 댓글로 갈음합니다.
보안과 편의성은 반비례할 수 밖에 없습니다. 기존처럼 권한 액션 한번으로 앱이 사용자의 모든 파일을 수정할 수 있게 둔다는 것은 어찌 보면 그냥 편한 기능일 지 모르나, 또한 시스템을 악용할 소지를 엄청나게 크게 남겨두는 것이 됩니다.
그런 측면에서 보면 Scoped Storage가 지향하는 바는 제 개인적으로는 옳다고 생각합니다. 어디처럼 빡빡하게 여지를 남기지 않고 모두 틀어막는 것이 아니라, 대부분의 유저들이 외장 저장소를 사용하는 이유인 미디어 파일에 한해서는 기존과 최대한 비슷하면서도 보안을 유지할 수 있도록 공용 저장소를 설계해 놨으니까요.
물론 이 생각은 제 개인의 의견이기에 다른 분들이 이러한 정책 변화에 대해 분노하는 것도 이해는 갑니다. 그렇지만 어디까지나 제 생각이 그렇다는 것입니다.
![늙은이](https://meeco.kr/files/member_extra_info/profile_image/285/285.gif?20200223142221)
폴드 1세대로 존버각