- Firebase 계정 및 플랫폼 별 앱 생성
- Firebase 콘솔에서 플랫폼 별 앱 설정
[Android]
[iOS]
3. Firebase sdk 설치 및 설정
플랫폼 별 firebase project 생성 방법이 조금씩 다름
[Android]
아래 세 가지 키 등록
- debug key
- release key
- 마켓 배포용 key
Android 패키지 이름 : 앱 수준의 build.gradle 파일 내 applicationId와 동일하게 입력
앱 닉네임 :
SHA-1 : open API(카카오, 네이버, firebase 등)의 무분별한 트래픽을 방지하기 위해 필요한 인증서 바이너리를 hash한 키 값
SHA-1은 개발을 위해서는 debug key, 배포를 위해서는 release key 등록 필요
debug key는 JDK의 keytool.exe로 command 창에서 아래와 같이 hash 생성
keytool 실행을 위해 해당 폴더로 이동 또는 시스템 환경 변수 path로 설정 필요.
windows에서는 openSSL이 필요하다고 하는데, 아래 명령어로 openSSL 없이도 되는 것 같음
password : android
만약 여러 pc에서 개발하는 경우, 각 pc 별 debug key의 SHA-1 등록 필요
[Windows]
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
[Mac/Linux]
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Release key
- Google Play Console 기타 설정(안드로이드 배포 가이드 참고)
- Google Play Console — 설정 — 앱서명에서 SHA-1 인증서 지문 확인
[Windows]
keytool -list -v -keystore release.keystore -alias androidreleasekey -storepass android -keypass android
다음으로 google-services.json 파일을 app 폴더 내에 복사/붙여넣기
마지막으로 app 폴더 내 build.gradle에서 firebase에서 요구하는 minSdkVersion(2023.03.09에는 19)과 multiDexEnabled true 설정
[Firebase CLI 설정]
node.js가 설치된 환경에서 아래 두 줄을 커맨드 창에 입력
npm install -g firebase-tools // install Firebase CLI
dart pub global activate flutterfire_cli // install FlutterFire CLI
Firebase console에서 firebase 프로젝트를 생성하고, flutter project root 폴더의 command에서 아래 명령어 입력
firebase project와 plaform 선택한 후, lib폴더에 firebase_options.dart 파일 생성
flutterfire configure
[iOS]
아래 명령어로 npm과 firebase-tools 설치
sudo npm install -g npm // install npm
sudo npm install -g firebase-tools // install firebase
dart pub global activate flutterfire_cli // install firebase-cli
만약 매번 npm 명령어에 sudo를 사용하는게 귀찮다면 아래 명령어 입력
sudo chown -R $USER /usr/local/lib/node_modules
firebase-cli가 activate되었지만 아래 warning메세지가 출력되면서 flutterfire 명령어를 찾지 못함
Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path.
You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):
export PATH="$PATH":"$HOME/.pub-cache/bin"
이 경우, 커맨드 창에 아래 명령어 입력하면 flutterfire — version 명령어가 정상 동작함
export PATH="$PATH":"$HOME/.pub-cache/bin"
GoogleService-Info.plist 파일을 firebase project에서 다운로드 후, flutter 프로젝트 iOS 폴더에 복사.
아래 명령어 입력 후, firebase-cli 설정
flutterfire configure
firebase cli 설치 후, 아래의 firebase plugin 추가 시 아래와 같이 수행
flutter pub add [PLUGIN_NAME]
flutterfire configure
flutter run
flutter pub outdated 명령어로 의존성 확인
flutter pub upgrade — major-versions로 의존성 해결
아래와 같이 firestore.indexes.json 파일 수정 후,
{
"indexes": [
{
"collectionGroup": "your_collection_group_name",
"queryScope": "COLLECTION",
"fields": [
{"fieldPath": "field1", "order": "ASCENDING"},
{"fieldPath": "field2", "order": "DESCENDING"}
]
}
]
}
아래와 같이 deploy 하면 firebase console에 반영됨
firebase deploy --only firestore:indexes
firebase 설치 후, iOS 빌드 시 아래 에러 발생
Could not build the precompiled application for the device.
Lexical or Preprocessor Issue (Xcode): Include of non-modular header inside framework module 'firebase_auth....
아래와 같이 xcode — target Runner — Build Setting — Allow Non-modular includes in Framework Modules : Yes로 설정 하면 빌드 성공