Flutter

[Flutter] Firebase 셋팅 (다수 에러 해결 과정)

hminor 2023. 8. 15. 17:13

Firebase 셋팅 (다수 에러 해결 과정)

  • 설치하기
    • pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.4
  image_picker: ^0.8.4+4
  shared_preferences: ^2.0.11
  provider: ^6.0.1
  flutter_local_notifications: ^9.1.5

  # firebase
  firebase_core: ^1.10.6
  firebase_auth: ^3.3.4
  cloud_firestore: ^3.1.5
  • firebase console 검색 → 프로젝트 생성
    • IOS 앱 추가
      • 앱 등록
        • Apple 번들: android → app → build.gradle 파일의 하단에 defaultConfig 부분에 applicationId 라고 값이 있는데 해당 값을 추가해주면 됨.
          • 여기서 보통 com.회사명.프로젝트명 으로 작명하게 되니 편하게 작성하면 될 듯.
          defaultConfig {
                  // TODO: Specify your own unique Application ID (<https://developer.android.com/studio/build/application-id.html>).
                  applicationId "com.example.instagram"
                  // You can update the following values to match your application needs.
                  // For more information, see: <https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration>.
                  minSdkVersion flutter.minSdkVersion
                  targetSdkVersion flutter.targetSdkVersion
                  versionCode flutterVersionCode.toInteger()
                  versionName flutterVersionName
              }
          • 만약 프로젝트 생성시 회사명을 작성하지 않아 example로 기입되어 있을 경우 변경하는 방법
            • 터미널 창을 열어서 (View → Tool Windows → Terminal)
              • dart pub global activate rename (rename 설치)
              • dart pub global run rename --bundleId com.회사명.instagram
            • 위와 같은 과정을 거치면 작성한 대로 변경되는 것을 확인할 수 있다.
          • 해당 ID를 Apple 번들 ID에 기입하기
        • 앱 닉네임
          • 원하는 대로 기입
        • App Store ID
          • 있다면 기업 없다면 그냥 나와있는 대로 작성하면 됨.
      • 구성 파일 다운로드
        • 그냥 다음 계속 누르면서 진행하면 됨 (요즘은 해당 방식대로 안한다고 함)
      • 다음 단계
        • 콘솔로 이동 클릭
    • Android 앱 추가
      • 앱 등록
        • Android 패키지 이름
          • 아까 변경한 ID 기입
        • 앱 닉네임
          • 원하는 대로
        • 디버그 서명 인증서
          • 모르겠으면 그냥 그대로 두기
      • 이후 그냥 다음 클릭
    • 웹 등록
      • 앱 닉네임 기입 후 다음 클릭하기
  • 사용하기
    • Flutter에 Firebase 셋팅 과정이 조금 복잡해서 쉽게 해주는 패키지를 설치
      • 터미널 → dart pub global activate flutterfire_cli
    • 이후 Warning에 나오는 Pub installs executables into 경로, which is not on your path.에서
      • 경로를 환경변수에 등록하기
        • (윈도우)
          • Window → 시스템 환경 변수 편집 → 환경 변수 → user에 대한 사용자 변수 → Path 더블 클릭 → 새로 만들기 → 경로 붙여넣기 → 확인
        • (맥)
          • terminal → open ~/.zshrc or open ~/.bash_profile → 생성된 곳에 경로를 붙여넣기 → 저장
    • android Studio 재시작
    • 다시 터미널을 켜고 flutterfire configure 입력
      • 여기서 에러가 계속 발생하는 경우
        • 확인할 것!
          1. NodeJS가 설치 되어있는지 확인
            • 안되어 있다면 nodeJS 페이지에서 LTS 버전 설치
            • 설치 이후 윈도우 → cmd → npm install -g firebase-tools 입력 후 설치
          2. 이후 다시 flutterfire configure 입력
            • 에러 발생하고 firebase login 라는 문구가 있다면
              • firebase login 입력
                • firebase: 이 시스템에서 스크립트를 실행할 수 없으므로 라는 에러가 발생한다면
                • 윈도우 → PowerShell (관리자권한) → get-ExecutionPolicy 실행
                • Restricted 가 나온다면 아래의 코드로 권한 변경 (현재는 권한이 제한 되어있어서 실행 불가 에러 발생)
                • Set-ExecutionPolicy RemoteSigned 입력 후 y 입력
                • 다시 get-ExecutionPolicy 실행 후 확인
              • 위의 과정을 거친 후 다시 firebase login 입력
                • Firebase에서 권한 확인 후 완료
          • 이후 다시 flutterfire configure 입력 (끝)
    • 이후 원하는 거 선택 후 완료가 되면 아래의 코드를 main.dart의 import 부분과 main()함수 내에 추가하기
// firebase
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

void main() async{

  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  • 이후 사용하기 위해 minSdkVersion을 올리기 위해 android → app → build.gradle의 defaultConfig를 아래처럼 수정하기
    • 21 → Android 5.0 Lollipop 버전을 의미한다고 함.
    defaultConfig {
            applicationId "com.작명.instagram"
            minSdkVersion 21 // 19 or 21
            targetSdkVersion flutter.targetSdkVersion
            versionCode flutterVersionCode.toInteger()
            versionName flutterVersionName
        }
    
    • 만약 맥북으로 한다면 ios → Podfile의 상단에 있는 platform을 수정하기
    • platform: ios, '10.0'
  • 이제 휴대폰으로 실행하게 되면 됨.
    • 근데 여기서 엄청나게 많은 에러들이 발생하게 되는데
      • 대부분 구글링 하면 잘 해결이 된다.
      • 다만 내가 겪은 에러들을 나열하자면 아래와 같다.
        • 첫째
        FirebaseAppPlatform.verifyExtends(_delegate);
                                ^^^^^^^^^^^^^
        
        • 위와 같은 에러가 발생하게 되면 터미널에 아래의 코드를 입력
          • flutter pub upgrade --major-versions
        • 둘째
        Method not found: 'IOSInitializationSettings'. var iosSetting = IOSInitializationSettings
        
        • 위와 같은 에러가 발생하게 되면 기존에는 문제 없었던 알림에 해당하는 코드를 아래와 같이 수정해야함
          • IOSInitializationSettings() ⇒ DarwinInitializationSettings()
          • IOSNotificationDetails() ⇒ DarwinNotificationDetails()
          • 이후 다른 빨간 줄로 되어 있는 부분은 우선 임시로 주석 처리했음.
        • 셋째
        AndroidManifest.xml Error:
        
        • 위의 경우엔 기존에 변경했었던 android → app → build.gradle의 minSdkVersion 변경 코드를 저장하지 않아서 발생하게 된 점으로
        • 아래와 같이 변경
defaultConfig {
        applicationId "com.작명.instagram"
        minSdkVersion 21
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }