앱 개발 시 다양한 환경이 필요합니다
dev - 개발
staging - 테스트
production - 배포
아니 할게 얼마나 많은데 이런것 까지 하나요?
노우노우 앱이 배포되면 프로덕션에서 뭘하기 힘듭니다. 미래의 나를 위해서 하면 좋습니다.
환경마다 api 엔드포인트가 다르고, 앱아이콘을 다르게해서 구분이 편하게 할 수 있습니다.
flutter build --flavor development
저는 좀더 편한 방법을 사용해보겠습니다.
해외 Flutter 개발팀 Very good ventures 에서 이를 편리하게 할 수 있는 패키지를 제공합니다.
쑤아리
패키지 설치
dart pub global activate very_good_cli
프로젝트생성
very_good create --org-name com.example my_app_name
번들아이디는 com.example.my_app_name 으로 생성됩니다.
프로젝트 생성 후 lib 폴더를 보시면
lib/
main_development.dart
main_production.dart
main_staging.dart
이렇게 메인 파일이 3개가 생성됩니다.
이제 프로젝트 시작시에
# Run development
flutter run --flavor development --target lib/main_development.dart
# Run staging
flutter run --flavor staging --target lib/main_staging.dart
# Run production
flutter run --flavor production --target lib/main_production.dart
이렇게 다른 메인 파일을 실행하는 것입니다.
ide로 실행하시는 분들도 많죠?
vscode 는 설정이 되어있습니다.
안드로이드 스튜디오 & 인텔리 제이는 구성편집에서 run command를 직접 설정해주세요
이거 환경 설정 정보는 어디서 보나요?
android - android/app/build.gradle
ios - xcode
에서 확인가능합니다.
flutterfire cli 를 사용하여 각 환경에 파이어베이스를 관리할수있습니다.
# dev (다른 환경도 동일)
flutterfire config \
--out=lib/firebase_options_dev.dart \ 파이어 베이스 옵션 파일의 이름
--ios-bundle-id=com.example.my_app_name.dev \
--android-app-id=com.example.my_app_name.dev
각 환경마다 변수를 다르게 하고 싶으면 run 커맨드 옵션에서 dart-define 옵션을 사용하세요
# Run dev
flutter run --flavor development --target lib/main_development.dart --dart-define base_url=https://dev.velog_server.com
void main() {
const baseUrl = String.fromEnvironment('base_url');
log(baseUrl)
}