Android
[Android] 안드로이드 저장소, Scoped Storage
EEEUN
2022. 9. 6. 12:23
(이 외에 안드로이드의 데이터 및 파일 저장소에는 환경설정-preference-과 데이터베이스도 포함됩니다.)
https://developer.android.com/training/data-storage
안드로이드 10 (가칭 안드로이드 Q)부터 적용된 Scoped Storage 구조입니다.
내부 저장소
이 디렉터리에는 영구 파일을 저장하는 전용 위치와 캐시 데이터를 저장하는 위치 데이터가 모두 포함됩니다. 앱을 설치하면 해당 앱을 위한 저장공간이 할당됩니다. 이 공간은 샌드박스 형식으로 되어있어서 해당 앱만 접근하고 외부에서는 볼 수 없는 형태입니다.
앱별 저장소
- 앱 전용으로 사용되는 파일 저장 (앱마다 생성되는 별도의 디렉터리)
- 앱 제거 시 파일 삭제
- 내부 저장소에서 getFilesDir() 또는 getCacheDir() 로 액세스
- 경로 : /data/data/{package_name}
외부 저장소
대부분 안드로이드 기기는 내부저장소 뿐만 아니라 외부저장소도 갖고있습니다. SD카드와 같이 이동식 저장장치로 제공되기도 하고 내부, 외부 파티션을 나눠 저장공간을 제공하는 경우도 있습니다. 내부 저장소와 마찬가지로 영구 파일을 저장하는 전용 위치와 캐시 데이터를 저장하는 위치 데이터가 모두 포함됩니다.
권한이 있는 경우 디렉터리에 액세스할 수 있으나 디렉터리에 저장된 파일은 해당 앱에서만 사용하게 되어있습니다. 다른 앱에서 액세스할 수 있는 파일을 만들려면 외부 저장소의 ‘공유 저장소’ 부분에 저장해야 합니다.
앱별 저장소
- 앱은 기본적으로 내부 저장소에 저장되나, APK 크기가 크면 외부 저장소에 앱을 설치 가능
- 앱 전용으로 사용되는 파일 저장 (앱마다 생성되는 별도의 디렉터리)
- 앱 제거 시 파일 삭제
- 외부 저장소에서 getExternalFilesDir() , getExternalCacheDir() 또는 getExternalMediaDirs()로 액세스
- 앱 내부에서만 사용될 private 디렉터리의 절대경로 리턴
- 경로 : /storage/emulated/0/Android/data/{package_name}
공유 저장소
- 음악, 사진&동영상, 다운로드(기타 파일)
- 앱을 제거해도 저장되어야 하는 데이터를 저장하는 장소
- 안드로이드Q 이전에는 외부 저장소에서 getExternalStoragePublicDirectory() 로 액세스
- 안드로이드Q 이후에는 음악&사진&동영상은 MediaStore 로, 다운로드(기타 파일)는 저장소 액세스 프레임워크 - SAF(Storage Access Framework) 로 액세스
- 경로 : /storage/emulated/0/ (이 경로는 기기마다 달라질 수 있습니다.)
(사실 아직도 헷갈리는 Scoped Storage...틀린 점이 있다면 댓글로 알려주세요. 감사합니다.)