개발자
VSCODE환경에서 Flutter를 이용해서 Android app을 개발중입니다. ini file을 통해 ip address등 환경변수들을 저장하고 싶은데, ini.dart 나 ini_file.dart등 package를 써봤는데, 권한 문제인지 경로문제인지 화일을 찾을수 없다고 나오거나, (OS Error: Read-only file system, errno = 30)이런 에러가 뜹니다. 아직 Flutter는 초보라서 잘 모르니 고수분들의 지도 간곡히 부탁드립니다.
답변 2
Jake
Cybozu 안드로이드/플러터 개발자 • 2024년 02월 07일
앗 근데 에러만 보고 답변하긴 했는데, 좀만 더 추가적으로 답변하자면, 환경변수를 저장하시는 방법으로는, flutter run --dart-define-from-file=.environment.json 과 같은 방법으로 환경변수 파일을 지정해서 실행하시고, 해당 파일 안에 String 등의 형태로 IP address를 저장하시는걸 추천드립니다. Flutter 내에서 해당 환경변수에 액세스하시려면 String.fromEnvironment(KEY); bool.fromEnvironment(KEY); 와 같은 형태로 액세스가 가능하세요.
Jimmy Kim
작성자
프로페셔널어쿠스틱스 임베디드 개발자 • 2024년 02월 07일
그부분은 이미 체크했고 이상없다고 뜹니다. 그런데도 새로화일 만들려면 read-only, 읽으려면 화일이 없다고 나옵니다. 혹시 특정 디렉토리같은걸 정해야 하나요 ?
Jimmy Kim
작성자
프로페셔널어쿠스틱스 임베디드 개발자 • 2024년 02월 07일
문제는 단순히 읽는게 아니고 내용을 수정, 저장등도 해야합니다.
Jake
Cybozu 안드로이드/플러터 개발자 • 2024년 02월 07일
환경변수를 저장하는 파일을 직접적으로 수정하시겠다는 말씀이신가요?
Jake
Cybozu 안드로이드/플러터 개발자 • 2024년 02월 07일
만약 그런거라면 경로 문제가 거의 확실한거같습니다만, 좀 더 자세한 내용이 필요할거같아요
Jimmy Kim
작성자
프로페셔널어쿠스틱스 임베디드 개발자 • 2024년 02월 07일
PC영 어플이면 ini 화일에 뭔가를 쓰기도 하고 실행 초기에 읽기도 하고 하는데 그걸 안드로이드에서 하고 싶은겁니다. 개발은 Flutter 로 하고요. ini 나 Jason등 상관없는데, 일단 경로와 Permission등에 문제가 있는거 같아요. Write_externnal_storage permission은 정상으로 나옵니다. 환경은 Win11, VSCode, Flutter이고 target은 android app입니다.
Jake
Cybozu 안드로이드/플러터 개발자 • 2024년 02월 07일
네, 말씀하신것만 들어서는 딱히 문제가 없는것같아서요. 꼭 파일로 저장해야만 하는 Usecase인가요?
Jimmy Kim
작성자
프로페셔널어쿠스틱스 임베디드 개발자 • 2024년 02월 07일
맞습니다. 변수를 외부에서 받아서 저장하는 부분이 있습니다.
Jake
Cybozu 안드로이드/플러터 개발자 • 2024년 02월 07일
지금 정보로 의심되는건 경로설정밖에 없네요..! 급하시면 챗 주세요!!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 02월 07일
Flutter에서는 환경설정이나 비밀키 같은 정보들을 담기 위해 별도의 패키지를 사용하는 것이 일반적입니다. 별도로 ini 파일을 이용하신다면 경로나 권한 문제가 발생할 수 있습니다. 보다 쉽게 환경설정을 관리하시려면 `flutter_dotenv`라는 패키지를 추천드립니다. 이 패키지를 사용하시면 `.env` 파일로 환경 설정을 관리하실 수 있습니다. 1. 먼저 pubspec.yaml 파일에 의존성으로 flutter_dotenv를 추가합니다. ```yaml dependencies: flutter: sdk: flutter flutter_dotenv: ^4.0.0-nullsafety.0 ``` 2. 그런 다음 프로젝트 루트에 .env라는 이름의 파일을 만듭니다. ```dotenv IP_ADDRESS=your_ip_address ``` 3. 마지막으로, 앱이 시작할 때 해당 설정파일을 load합니다. ```dart void main() async { await dotenv.load(); runApp(MyApp()); } // 이후에 IP 주소를 가져오기 위해서는 dotenv.env['IP_ADDRESS'] 를 사용하시면 됩니다. ``` dotenv.env는 Map 형태로 환경변수들을 저장합니다. 참고하세요, .env 파일은 공개 Repo에 push하지 않도록 .gitignore에 추가해주셔야 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!