안드로이드 버전11부터 저장소 정책이 변경되어 파일을 저장하고 읽기가 아주 까다로워졌습니다.
이제 앱은 자신의 저장공간에만 파일을 저장할 수 있게 변경되었습니다.
기존에 내장메모리에 경로를 직접 저장하던 것이 먹통이 되어버려 에러가 발생하게 됩니다.
기존에는 여기 저기 중구난방으로 파일들이 저장되어 앱을 삭제해도 제거되지 않는 쓰레기 파일들이 존재하거나 다른 앱의 공간까지도 접근하는 등의 문제가 발생하여 이를 강화했다고 합니다.
이에 앱인벤터에서 nb187업데이트 후 새로 scope라는 개념이 등장하여 이를 정리해 보려고 합니다.
이 내용은 주로 File컴포넌트를 사용할 때 적용되는 내용입니다.
경로(path)를 정의하는 방식과 해당 스코프의 특징을 간략하게 살펴보겠습니다.
1. APP : 해당 앱만 접근 가능. 파일 탐색기로 기존에는 검색이 가능했으나 안드로이드10부터 불가.
- 경로 : /storage/emulated/O/Android/data/패키지명/files/
2. Asset : 앱인벤터에사 업로드한 에셋 파일 저장 공간으로 읽기만 가능.
- 경로 : 파일명 앞에 //를 붙이면 앱 안에서 읽을 수 있음.
3. Cache : 임시로 파일 저장. 앱 삭제시 삭제. 해당 앱만 접근 가능.
- 경로 : /data/data/패키지명/cache/ [안드로이드 5.1.1]
/data/user/O/패키지 네임/cache/ [안드로이드 10]
4. Legacy : 기존 방식으로 안드로이드 11이상에서 먹통
- 경로 : /파일명 -> /sdcard/파일명
5. Private : 해당 앱만 접근 가능.
- 경로 : /data/data/패키지명/files [안드로이드 5.1.1]
/data/user/O/패키지명/files [안드로이드 10]
6. Shared : 공유 저장소. 모든 앱이 접근하여 읽기 쓰기 가능.
현재 파일 컴포넌트로 접근 불가하지만 TaifunFile 확장 기능으로는 접근 가능.
- 경로 : /storage/emulated/O/하위 미디어 디렉토리