일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드
- @provides @binds 차이
- databinding xml
- @immutable
- databinding error
- 안드로이드 다이얼로그 오류
- rememberCoroutineScope
- android mvi
- WindowManager$BadTokenException
- android compose stable
- 터치이벤트 순서
- @stable
- compose side-effect
- {"msg":"cannot find method
- android.view.WindowManager.BadTokenException
- Python
- isFinishing()
- [databinding]
- dispatchTouchEvent
- Android
- android compose
- Java
- LaunchedEffect vs rememberCoroutineScope
- onIntercepterTouchEvent
- material3
- LaunchedEffect
- Could not find method
- 힐트
- effect api
- 레트로핏
- Today
- Total
개발관련일지
안드로이드 내부저장소 외부저장소 이해한것 정리 본문
안드로이드에선 앱에 저장소가 2가지가있다.
내부 저장소(Internal Storage) , 외부 저장소(External Storage)
내부저장소
해당 앱의 private 공간이며 다른앱에서 접근이 불가능하다
노출되면 안되는 앱의 데이터가 사용되게 된다.
위의 내용으로 구성 되어져있다
외부저장소
public하게 공개되는 공간이다.
권한만 있게되면 엑세스가 가능하다.
외부저장소가 안드로이드Q (api29)부터 구조가 바뀌었다.
api29를 기준으로 이전의 스토리지 형태를 다르게 부른다.
version < api29 -> legacy storage
version >- api29 -> scoped storage
구조를 이해하는데 가장 도움이 되었던 글이다. 출처
legacy storage (안드로이드 Q 이전) 의 구조는
- 외부저장소
- public (공유공간)
- private (개별공간)
- app pakages (각각의 패키지)
특징
- 권한만 있으면 생성자에 관계없이 파일(개별공간포함)에 접근이 가능함
scoped storage (안드로이드 Q 이후) 의 구조는
- 외부저장소
- 개별공간
- 공유공간
- 이미지 비디오
- 오디오
- 다운로드 파일
특징
- 개별공간
- 자기공간은 퍼미션필요없이 접근가능
- 샌드박스 으로 격리됨 , 자신앱을 제외하고 다른 앱의 저장 공간에 접근 불가능
- 공유공간
- 해당 파일 형식에 맞는 데이터만 들어감
- 파일들을 접근하기 위해 읽기퍼미션 필요
- 다운로드 파일은 SAF(Storage Access Framework)로 접근
- 공유공간은 MediaStore API 로 접근 권장
이렇게 변하게된 이유는 무었일까
- 외부저장소에 파일을 생성해놓고 파일을 생성한 앱이 삭제되어도 파일이 남아있지만 지금은 scoped 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
'개발기록 > 안드로이드' 카테고리의 다른 글
android compose M3 theme, layout Reply 샘플앱 코드보기 (0) | 2023.07.24 |
---|---|
안드로이드 databinding xml 오류 (0) | 2021.08.18 |
안드로이드 WindowManager$BadTokenException 오류 해결 (0) | 2021.07.08 |
안드로이드 뷰의 터치이벤트 순서(touch event ) (0) | 2021.07.07 |
안드로이드 캔버스에 도형(원) 생성하고 움직이기 (0) | 2021.05.29 |