개발관련일지

안드로이드 내부저장소 외부저장소 이해한것 정리 본문

개발기록/안드로이드

안드로이드 내부저장소 외부저장소 이해한것 정리

BEECHANGBOT 2021. 7. 20. 04:20

안드로이드에선 앱에 저장소가 2가지가있다.

내부 저장소(Internal Storage) , 외부 저장소(External Storage)

 

내부저장소 

해당 앱의 private 공간이며 다른앱에서 접근이 불가능하다

노출되면 안되는 앱의 데이터가 사용되게 된다.

android studio - device file explorer - data - data - pakage name

위의 내용으로 구성 되어져있다

 

외부저장소

public하게 공개되는 공간이다.

권한만 있게되면 엑세스가 가능하다.

외부저장소가 안드로이드Q (api29)부터 구조가 바뀌었다.

 

api29를 기준으로 이전의 스토리지 형태를 다르게 부른다.

version < api29 -> legacy storage

version >- api29 -> scoped storage 

 

구조를 이해하는데 가장 도움이 되었던 글이다. 출처

legacy storage (안드로이드 Q 이전) 의 구조는

  • 외부저장소
    • public (공유공간)
    • private (개별공간)
      • app pakages (각각의 패키지)

특징

  1. 권한만 있으면 생성자에 관계없이 파일(개별공간포함)에 접근이 가능함

scoped storage (안드로이드 Q 이후) 의 구조는

  • 외부저장소
    • 개별공간 
    • 공유공간
      • 이미지 비디오 
      • 오디오
      • 다운로드 파일

특징

  • 개별공간
    1. 자기공간은 퍼미션필요없이 접근가능
    2. 샌드박스 으로 격리됨 , 자신앱을 제외하고 다른 앱의 저장 공간에 접근 불가능
  • 공유공간
    1. 해당 파일 형식에 맞는 데이터만 들어감
    2. 파일들을 접근하기 위해 읽기퍼미션 필요
    3. 다운로드 파일은 SAF(Storage Access Framework)로 접근
    4. 공유공간은 MediaStore API 로 접근 권장

이렇게 변하게된 이유는 무었일까

  1. 외부저장소에 파일을 생성해놓고 파일을 생성한 앱이 삭제되어도 파일이 남아있지만 지금은 scoped storage안에 생성하게되면 삭제시 같이 지워진다. 
  2. 보안문제 : 보안관련해서 정확한 지식이 없음..
  3. 불필요한 권한 남용을 제한을 둘려한다. 

각 저장소에 필요한 권한이 버전별로 표로 디벨로퍼에 나와있다. 중요하다 생각하는건 표시

https://developer.android.com/training/data-storage

MediaStore 와 SAF 에 대해서도 정리를 해야하지만 일단 여기까지만

나온지 좀 되서 그래도 한글자료도 많고 관련된 코드도 많아서 구현자체는 어렵지 않았다. 

하지만 이미지만 가져와도 항상 생각하고 있어야하는 부분이라 정리해보았다.

 

참고

https://www.raywenderlich.com/9577211-scoped-storage-in-android-10-getting-started

https://developer.android.com/training/data-storage

https://developer.android.com/training/data-storage/shared/media#kotlin

https://developer.android.com/about/versions/11/privacy/storage

https://brunch.co.kr/@huewu/8#comment

https://brunch.co.kr/@huewu/14

https://www.slideshare.net/myungwookahn/io-19-extended-in-korea-android-whats-new-in-shared-storage

https://youngest-programming.tistory.com/386

https://medium.com/@chapi79/%EC%9D%B4%EC%A0%9C%EB%8A%94-android-scoped-storage%EB%A5%BC-%EC%A4%80%EB%B9%84%ED%95%B4%EC%95%BC-%ED%95%A0-%EB%95%8C-3d5c22a5a0a9