내부 저장소가장 기본적으로 Show soft-link가 걸려 있다면, 내용도 자동으로 업데이트 된다!
외부 저장소외부 저장소는 write/read시 permission이 필요하고, 모든 앱에서 접근이 가능하다. 공용 영역과 App 전용 영역이 존재하는데, 차이점은 App 삭제 시에 함께 삭제되는지 여부이다.
공용 영역 내부에도 App 영역은 PACKAGE 이름에 따라 구분된다. 외부 저장소에서 https://android.stackexchange.com/questions/35541/why-did-sdcard-turn-into-sdcard-0-with-4-2 참고https://crazykim2.tistory.com/488 폰 안에 영화가 들어있는데요.... 여기에 /storage/emulated 있거든요....PC로 어떻게 옮기나요? 컴퓨터에서 저 폴더가 안보여요.... 컴퓨터에 연결하면.........컴퓨터가 폰으로 인식해서 폴더들 중 일부만 보이는거 같은데..... 이렇게 되니까......컴퓨터에서는 /storage/emulated..찾을 수가 없음.... 해결 방법 좀요.. Device에 App이 설치되면 App마다 사용할 수 있는 저장공간이 있습니다. 각 앱이 사용할 수 있는 directory마다 차이점이 있고, 자주 헷갈리는 부분이라서 한번 정리해보았습니다. 이 글은 안드로이드 Q가 공개되기 전에 쓰여졌습니다. 안드로이드 Q에서 외부 저장소의 새로운 정책인 Scoped Storage가 소개되었습니다. 그렇기 때문에 이 글의 내용은 안드로이드 P 이하의 디바이스에만 해당됩니다. Scoped storage에 대한 자세한 내용은 안드로이드 Q의 새로운 저장소 정책, Scoped Storage 알아보기를 참고해주세요. 어떤 App이 설치되면 device 내부의 특정 dir에 apk, libs, oat 파일 등이 저장됩니다. Oreo부터 폴더명은 package의 이름에 random hashcode의 조합으로 생성됩니다.
Internal storage (내부 저장소)내부 저장소도 특정 dir에 file, cache 등의 공간이 생성됩니다. cache의 경우 Device 내부에 저장공간이 부족한 경우 동의를 구하지 않고 삭제할 수 있는 폴더입니다. 삭제되서는 안되는 파일이라면 cache 폴더에 저장하면 안됩니다. 어떤 App의 Internal storage는 그 앱 스스로만 사용이 가능하며 다른 앱은 접근할 수 없습니다. 또한, file을 write/read 하는데 어떤 Permission도 필요하지 않습니다.
adb shell로 확인해보면 여러 폴더들이 있습니다.
App이 이런 path들은 쉽게 알 수 있도록 Context 객체에서 여러 method를 제공해줍니다.
External storage (외부 저장소)외부 저장소도 내부 저장소와 비슷합니다. 하지만 외부저장소는 write/read 시 permission이 필요합니다. 그리고 모든 앱에서 접근이 가능하기 때문에 private을 보장하지 않습니다. 또한, PC에서 이 Storage에 접근이 가능하기 때문에 일시적으로 write/read가 불가능할 수 있습니다. App 전용 폴더App 전용으로 생성되는 storage가 있습니다. External이기 때문에 다른 앱에서도 접근이 가능하지만, 중요한 것은 이 App이 삭제된다면 이 공간도 함께 삭제된다는 점입니다. 따라서, 다른 App에서 공유되길 원하는 data는 이 곳에 저장되어서는 안됩니다.
Java로 path구하는 코드와 실행 Log입니다.
공용 폴더공용 폴더는 앱들이 삭제된다고 해도 저장된 data가 삭제되지 않습니다.
Java로
path구하는 코드와 실행 Log입니다.
Permissionsread/write를 하려면 AndroidManifest.xml에 다음 권한을 선언해야 합니다. Runtime permission이기 때문에 사용자의 허락을 받아야 합니다.
External storage 사용 가능 확인PC에서 mount하는 경우 write/read가 안될 수 있기 때문에 사용하기 전에 사용가능한지 확인이 필요합니다.
정리지금까지 안드로이드의 내부/외부 저장소에 대해서 알아보았습니다. 이 글은 안드로이드 Q가 공개되기 전에 쓰여졌습니다. 안드로이드 Q에서 외부 저장소의 새로운 정책인 Scoped Storage가 소개되었습니다. 그렇기 때문에 이 글의 내용은 안드로이드 P 이하의 디바이스에만 해당됩니다. Scoped storage에 대한 자세한 내용은 안드로이드 Q의 새로운 저장소 정책, Scoped Storage 알아보기를 참고해주세요. 참고
codechachaCopyright ©2019 codechacha |