티스토리 뷰

반응형

Flutter 에서 코딩을 하다보면,

로컬에 파일이나 이미지를 저장할 때 사용할 경로를 받아오기 위해  path_provider 를 사용한다. 

 

path_provider 에서 주로 쓰는 2개의 method가 있다.

getApplicationSupportDirectory

getApplicationDocumnetsDirecoty

 

안드로이드에서 getApplicationDocumnetsDirecoty 를 통해 받아오는 경로는 

/data/user/0/{app_id}/app_flutter/

와 같은 형태이며 사용자 또는 다른 앱에서 접근이 불가능한 디렉토리다. (안드로이드 스튜디오에서 Device File Explorer로 확인 가능)

그래서 Hive 나 GetStorage 와 같은 패키지를 사용할때 이들 패키지에서 생성한 파일을 디폴트로  저장하는 곳이 여기다.

 

문제는 iOS 에서다. iOS 에서도 hive 나 GetStorage를 사용하면 생성된 파일을 저장하는 경로를 마찬가지로 getApplicationDocumnetsDirecotry 에서가 가져온 경로로 이용하는데, 아래와 같다.

/var/mobile/Containers/Data/Application/{app_id}/Documments/ 

iOS 에서 이 경로는 접근이 가능한 폴더다. 아이폰에 기본적으로 설치되어있는 앱 중에 '파일'앱을 이용하거나 MAC에 연결하여 사용자가 접근이 가능하다.

 

이 문제를 해결하기 위해, iOS에서 생성하는 파일을 저장하는 위치를  확인한 뒤, 사용자가 접근하기 못하게 감춰야 할 경우, getApplicationDocumnetsDirecoty 대신 getApplicationSupportDirectory 로 받아온 디렉토리로 저장 위치를 바꿔 줘야 한다. 

참고로 iOS에서 getApplicationSupportDirectory 로 경로를 받아오면 아래와 비슷하다

/var/mobile/Containers/Data/Application/{app_id}/Library/Application Support/ 

 

  안드로이드 iOS
getApplicationDoccumentsDirectory /data/user/0/{app_id}/app_flutter/
사용자나 다른 앱에서 접근 불가
/var/mobile/Containers/Data/Application/{app_id}/Documments/ 
다른 앱이나 장치에서 접근 가능
getApplicationSupportDirectory /data/user/0/{app_id}/files
(안드로이드 네이티브로 코딩하면 기본 내부 저장소로 사용되나, Flutter의 경우 app_flutter 를 기본 내부 저장소로 사용 )
/var/mobile/Containers/Data/Application/{app_id}/Library/Application Support/ 
다른 앱이나 장치에서 접근 불가

 

 

반응형

'Dart & Flutter > Widget & Package' 카테고리의 다른 글

Deferred Components  (0) 2023.03.20
카메라 사용하기  (0) 2023.02.16
month의 week number를 계산하는 extention  (0) 2022.08.09
Getx 정리  (0) 2022.04.01
CustomPaint, CustomPainter, Painter, canvas  (0) 2021.07.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함