firebase導入時のビルドエラーに対処する

本投稿は TECOTEC Advent Calendar 2021 の9日目の記事です。

はじめに

こんにちは! 次世代デジタル基盤開発事業部の野口です。 弊社では、Flutter案件があるとかないとか、、、、関わってないので詳しいところはわかりませんが、僕は趣味でFlutter触っております。 データベースにfirebaseを導入する際に、毎回のようにビルドエラーに悩まされます。その都度調べれば解決できるもではあるのですが、毎回忘れて1から調べるのは時間の無駄感があるのでエラーの解消方法をまとめたいと思います。

開発環境

1.導入手順

まず、導入手順ですがfirebaseの公式ドキュメントがあるので、こちらを参考に行います。

firebase.google.com

公式ドキュメントの説明はだいぶ簡素なので、以下がとても分かりやすいです。

flutternyumon.com flutternyumon.com

今回は上記の導入ができた前提で話を進めます。

iosのビルドエラー

iosのビルドを行うと全体で以下のエラーが出ます。

error_all.png

1.Podfileの変更

error_1.png Podfileはデフォルトで以下の状態ですが、これを

// ios/Podfile
#platform :ios, '9.0'

以下の状態に変更します。

// ios/Podfile
platform :ios, '10.0'

ちなみに、最新のcloud_firestore(v3.1.1)firebase_core(v1.10.2)では、platformが9.0のままだとエラーが出るので、10.0以上にする必要があります。 error_2.png

2.pod installができない

error_5.png

1.ios/Podfile.lockがある場合は削除する 2.Terminalでios直下に移動し、pod installをする

minpro.net

iosのエラーは以上でなくなると思います。

実際にビルドをしてみましょう。ビルドすると分かるのですが、なかなかビルドが終わりません!! 正確に測ったことはないのですが、10〜20分くらいかかります。気長に待ちましょう、、、

ビルド時間を短縮する

ビルドの時間を短縮するコードはあるのですが、firebase導入後の初回は使えないみたいです。理由はよくわかりません! 2回目以降のビルドでは以下のコードを使えば時間を短縮できます。大体1分くらいになると思います。

// ios/Podfile
# ...
target 'Runner' do
  pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.6.0'
# ...
end

zenn.dev

androidのビルドエラー

続いて、androidをビルドすると以下のエラーが出ます error_4.png

1.multidexを有効化する

対処はシンプルで以下を追加するだけです。

// android/app/build.gradle

android {
    defaultConfig {
        ...
        minSdkVersion 19 //19に変更
        targetSdkVersion 28
        multiDexEnabled true //追加
    }
    ...
}

dependencies {
    implementation "androidx.multidex:multidex:2.0.1" //  追加
}

エラー文の中にある以下に記載してあります。 https://developer.android.com/tools/building/multidex.html

まとめ

ios

  1. Podfileの変更 platform :ios, '10.0'
  2. ios/Podfile.lockがある場合は削除する
  3. Terminalでios直下に移動し、pod installをする

android

  1. multidexを有効化する(以下を追加する)   
  2. minSdkVersion 19
  3. multiDexEnabled true
  4. implementation "androidx.multidex:multidex:2.0.1"

おわりに

firebaseのバージョンが異なったり、大きめのアップデートが来たらまたエラーが変わるかもしれないのでご参考程度に。 今回のブログ作成時もエラー対処に苦戦しましたが、まとめてみるとやってることは簡単でしたね。 まーこれも1か月後くらいには忘れてると思います。悲しいなぁ・・・

ご覧いただきありがとうございます。

www.tecotec.co.jp