안드로이드 취약점 분석을 하며 SharedPreferences에 대해 알게 되었고, 안드로이드는 어떻게 저장 공간이 이루어져 있는 지 궁금해 오늘 공부했다.
내가 이해한 것을 바탕으로 이를 정리해보겠다.
안드로이드는 내부 저장소(Internal Storage)와 외부 저장소(External Storage)를 제공한다.
- Internal Storage (시스템에 의해서 보호됨)
- External Storage (공유될 수 있음)
- Built in non-removable storage (내장 메모리에 박혀있음)
- SD card
빨간색 → 내장 메모리, 파란색 → 외장 메모리
내부 저장소
- 다른 앱의 공간에 접근이 불가능한 샌드박스 공간
- 앱 삭제 시 앱 개별공간에 존재하는 앱 개별 파일들이 모두 제거
(ex) SharedPreferences → Datastore
간단한 데이터들을 저장하기 위해
- Key-Value 형태로 저장
- 어플리케이션이 삭제되기 전까지 내부에 보관됨
/data/data/(package_name)/shared_prefs/SharedPreference ← 저장되는 파일 위치
외부 저장소
- 다른 앱에 의해서 접근 되어야 하는 내 앱의 파일들을 저장하는 공간이 필요
- 내 앱이 제거 되더라도 지워지지 말아야 할 데이터가 존재하기 때문
android 10부터 Scoped Storage 도입. android 9까지는 Legacy Storage.
내부 저장소의 구조는 변하지 않고, 외부 저장소의 구조만 변함.
외부 저장소에서 유의해야 될점은 사진 및 동영상에 각각의 앱 데이터가 들어가는 것이지, 앱의 디렉토리가 생기는 것이 아니다.
Android Developers에 가면 앱별 저장소 라는 단어가 있는데, 내부 저장소와 개별 공간을 말하는 것 같다.
출처)
https://hellose7.tistory.com/96
[Storage] 안드로이드 저장소 정리
목차 이글은 안드로이드 11 변경사항에 대해 정리하지 않았습니다. 1. 외부저장소 vs 내부저장소 vs 내장메모리 2. 앱 개별파일과 앱 개별공간, 외부저장소 공유공간이란? 3. 내부저장소 앱 개별공
hellose7.tistory.com
https://developer.android.com/guide/topics/data?hl=ko
앱 데이터 및 파일 | Android 개발자 | Android Developers
앱 데이터 및 파일 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱 및 사용자 데이터를 기기의 파일, 키-값 쌍, 데이터베이스 또는 기타 데이터 유형으로
developer.android.com
https://developer.android.com/topic/libraries/architecture/datastore?hl=ko#groovy
앱 아키텍처: 데이터 영역 - Datastore - Android 개발자 | Android Developers
데이터 영역 라이브러리에 관한 이 앱 아키텍처 가이드를 통해 Preferences DataStore 및 Proto DataStore, 설정 등을 알아보세요.
developer.android.com
'공부 > 안드로이드' 카테고리의 다른 글
Frida-Labs 0x1 (0) | 2024.05.13 |
---|---|
안드로이드 생명주기 (0) | 2024.02.04 |
Hooking (w. frida) (0) | 2023.12.03 |
frida 설치 (2) | 2023.11.24 |
Magisk 루팅 (삽질2) (2) | 2023.10.31 |