
Flutter image_gallery_saver 패키지 빌드 에러 해결방법
image_gallery_saver 빌드 에러를 해결해 봅시다.
2025년 1월 16일
Jisoo.
기술블로그
파일 시스템의 경로를 찾아주는 path_provider 패키지를 알아봅시다.
path_provider
는 현재 앱의 경로를 반환하는 패키지입니다.
지원하는 디렉토리는 다음과 같습니다.
Directory | 설명 |
---|---|
Temporary | 임시 데이터를 저장하기 위한 디렉토리입니다. 앱이 필요하지 않게 되면 OS가 데이터를 삭제할 수 있습니다. |
Application Support | 애플리케이션이 생성한 지원 파일이나 설정 데이터를 저장하는 디렉토리입니다. 사용자에게 직접 보여지지 않는 데이터 저장에 적합합니다. |
Application Library | (iOS 및 macOS 전용) 앱의 내부 라이브러리 데이터를 저장하는 디렉토리입니다. 설정 파일 또는 애플리케이션 데이터를 관리하는 데 사용됩니다. |
Application Documents | 애플리케이션이 생성하고 관리하는 문서 파일을 저장하는 디렉토리입니다. 사용자에게 노출될 가능성이 있는 데이터를 저장하는 데 적합합니다. |
Application Cache | 캐시 데이터를 저장하는 디렉토리입니다. 캐시 데이터는 필요에 따라 삭제될 수 있으므로 중요한 데이터를 저장하는 데 사용하지 않습니다. |
External Storage | (Android 전용) 외부 저장소에 데이터를 저장합니다. 사용자 또는 다른 앱이 접근할 수 있는 데이터를 저장하는 데 사용됩니다. |
External Cache Directories | (Android 전용) 외부 저장소에 캐시 데이터를 저장합니다. 디렉토리의 데이터는 필요에 따라 삭제될 수 있습니다. |
External Storage Directories | (Android 전용) 외부 저장소에 앱 관련 데이터를 저장하는 데 사용됩니다. 사용자와 공유되거나 다른 앱에서 접근 가능한 데이터를 저장합니다. |
Downloads | 사용자의 다운로드 디렉토리입니다. 애플리케이션이 다운로드한 파일을 저장하거나 사용자가 접근할 파일을 저장하는 데 사용됩니다. |
안드로이드의 경우 반환하는 경로는 다음과 같습니다.
1final a = await getTemporaryDirectory(); 2final b = await getApplicationSupportDirectory(); 3final c = await getApplicationCacheDirectory(); 4final d = await getApplicationDocumentsDirectory(); 5// final e = await getLibraryDirectory(); 6final f = await getExternalCacheDirectories(); 7final g = await getExternalStorageDirectories(); 8final h = await getExternalStorageDirectory(); 9final i = await getDownloadsDirectory(); 10 11[log] a: Directory: '/data/user/0/com.example.practice_flutter_screenshot/cache' 12[log] b: Directory: '/data/user/0/com.example.practice_flutter_screenshot/files' 13[log] c: Directory: '/data/user/0/com.example.practice_flutter_screenshot/cache' 14[log] d: Directory: '/data/user/0/com.example.practice_flutter_screenshot/app_flutter' 15[log] f: [Directory: '/storage/emulated/0/Android/data/com.example.practice_flutter_screenshot/cache'] 16[log] g: [Directory: '/storage/emulated/0/Android/data/com.example.practice_flutter_screenshot/files'] 17[log] h: Directory: '/storage/emulated/0/Android/data/com.example.practice_flutter_screenshot/files' 18[log] i: Directory: '/storage/emulated/0/Android/data/com.example.practice_flutter_screenshot/files/downloads'
플랫폼 별로 접근 불가능한 디렉토리에 접근 시 에러를 발생합니다.
내부 저장소는 /data
로 시작하며 외부 저장소는 /storage
로 시작하는 것을 알 수 있습니다.
항목 | 내부 디렉토리 (/data ) | 외부 디렉토리 (/storage ) |
---|---|---|
경로 | /data/user/<패키지명>/ | /storage/emulated/0/ , /sdcard/ |
용도 | 앱 전용 데이터 (설정, 캐시, DB 등) | 사용자와 공유 가능한 데이터 (사진, 파일 등) |
보안 | 높음 (Sandbox 환경) | 낮음 (다른 앱 및 사용자 접근 가능) |
권한 필요 여부 | 불필요 | 필요 (외부 저장소 권한) |
삭제 여부 | 앱 삭제 시 자동 제거 | 앱 삭제 후에도 남을 수 있음 |
접근성 | 사용자나 다른 앱은 접근 불가 | 사용자나 다른 앱이 접근 가능 |
저장 공간 | 내부 저장소 공간 제한 | 더 넓은 저장 공간 가능 |
사용 예시 | 세션 정보, 비밀번호, DB, 로컬 설정 파일 등 | 이미지, 동영상, PDF 등 |
플러터 path_provider 패키지에 대해 알아보았습니다.
1