flutter with firebase cli
flutter firebase cli 설정하여 쉽게 연결할 수 있다.
- 안내말 입니다.
- 개인적으로 남기는 글입니다. 아래의 경우를 미리 공지합니다.
- 높임말은 없는 경우가 있습니다.
- 영어, 일본어, 베트남어를 공부하고 있습니다. 경우에 따라서 사용됩니다.
- 보기 거북하다면 뒤로가기 해주세요.
이야기 시작-
- 1.firebase 에 접속해서 프로젝트를 1개 만든다.
- 다시 flutter 로 넘어와서 터미널에서 cli 관련 설정을 하자.
- flutter firebase core package 를 install 합시다.
https://pub.dev/packages/firebase_core
dependencies:
firebase_core: ^3.7.0
(This code is effective as of 09.Nov.2024)
npm install -g firebase-tools
dart pub global activate flutterfire_cli
firebase login
혹시 다른 아이디로 로그인 하고 싶으면,firebase login --reauth
flutterfire configure
에서 1에서 만든 프로젝트를 선택합니다.- 뒤에 어디에 사용할 os를 선택하고, 팩키지 이름을 타이핑 합니다. 예를 들어
com.abcdef
- firebase 콘솔에서 확인하면 자신이 선택한 platforms 에 앱이 추가 된것을 확인할 수 있다.
- Enabling use of Firebase Emulator Suite
위치 ios/Runner/Info.plist
>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
- ios > Podfile.lock 파일이 있다면, 삭제
- ios > Podfile 안에서
# platform: ios, '12.0'
앞에 # 을 지우고, 뒤에 12.0 을 13.0 으로 변경 - ios > flutter>
Release.xcconfig
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"
#include "Generated.xcconfig"
- 다시 프로젝트 터미널로 와서, cd ios >
pod install
12번 작업을 해주는 것은 firebasecore 팩키지를 사용하기 때문에 관련 기능?을 설치해주는 걸로 알고 있다.
13번 작업을 해주는 것은 아래 에러를 해결하기 위함 이다.
- 위 작업을 다 하면 Podfile.lock 파일이 다시 생성된다.
이후, android 도 여러 에러가 발생할 수 도 있다. 그건 상황 보면서 해결하면된다.
- main.dart에 firebase core 연동에 관한 기능을 추가한다.
아래 코드는 예시 입니다. 각자에 상황에 맞도록 변경하세요.
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(const MyApp());
}
.gitignore에 중요점은 다들 아실거라 생각됩니다. 내용에 firebase options 관련 파일은 github에 올리기 못하도록 설정해두었습니다. 필요에 따라 추가 삭제 하셔서 사용하시기 바랍니다.
.gitignore関連
(This code is effective as of 09.Nov.2024)
# Created by https://www.toptal.com/developers/gitignore/api/dart,flutter,firebase
# Edit at https://www.toptal.com/developers/gitignore?templates=dart,flutter,firebase
### Dart ###
# See https://www.dartlang.org/guides/libraries/private-files
# Files and directories created by pub
.dart_tool/
.packages
build/
# If you're building an application, you may want to check-in your pubspec.lock
pubspec.lock
# Directory created by dartdoc
# If you don't generate documentation locally you can remove this line.
doc/api/
# dotenv environment variables file
.env*
# Avoid committing generated Javascript files:
*.dart.js
*.info.json # Produced by the --dump-info flag.
*.js # When generated by dart2js. Don't specify *.js if your
# project includes source files written in JavaScript.
*.js_
*.js.deps
*.js.map
.flutter-plugins
.flutter-plugins-dependencies
### Dart Patch ###
# dotenv environment variables file
.env
### Firebase ###
.idea
**/node_modules/*
**/.firebaserc
### Firebase Patch ###
.runtimeconfig.json
.firebase/
### Flutter ###
# Flutter/Dart/Pub related
**/doc/api/
.fvm/flutter_sdk
.pub-cache/
.pub/
coverage/
lib/generated_plugin_registrant.dart
# For library packages, don’t commit the pubspec.lock file.
# Regenerating the pubspec.lock file lets you test your package against the latest compatible versions of its dependencies.
# See https://dart.dev/guides/libraries/private-files#pubspeclock
#pubspec.lock
# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/key.properties
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/.last_build_id
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
# End of https://www.toptal.com/developers/gitignore/api/dart,flutter,firebase
# FlutterFire Congigure
lib/firebase_options.dart
ios/Runner/GoogleService-Info.plist
ios/firebase_app_id_file.json
macos/Runner/GoogleService-Info.plist
macos/firebase_app_id_file.json
android/app/google-services.json
# Google Services (e.g. APIs or Firebase)
google-services.json
GoogleService-Info.plist
# Plugins (already resolved through pubspec.yaml)
.flutter-plugins