FlutterでiOSアプリを開発していると、特にFirebaseを導入した際にビルド時間が長くなるがあります。
この記事では、ぼくがビルド時間を劇的に短縮することができた方法について具体的に解説します。
Contents
なぜFlutterのiOSビルドが遅くなるのか
FlutterプロジェクトにFirebaseを導入すると、特にiOSのビルド時間が大幅に増加します。この主な原因は以下の2点です:
- FirebaseのSDKが大規模で、特にFirestoreのコンパイルに時間がかかる
- デフォルトの設定では、ビルド時に毎回SDKの再コンパイルが発生する
解決方法:Podfileの最適化設定
この問題は、事前にビルドされたFirestoreフレームワークを使用することで解決できます。具体的には、ios/Podfileに以下の1行を追加します:
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.25.0'
この設定により、ぼくはビルド時間を10分から2分半ほどまで短くすることができました。
具体的な設定手順
具体的な設定手順は以下です。
- プロジェクトのios/Podfileを開く
- 以下の完全な設定例を参考に、必要な設定を追加する
pod install
を実行して変更を反映する
以下がPodfileの例となります。
platform :ios, '17.0'
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
target 'Runner' do
use_frameworks!
use_modular_headers!
# Firebase関連の最適化設定
pod 'Firebase/Analytics', :modular_headers => true
pod 'Firebase/Auth', :modular_headers => true
pod 'Firebase/Core', :modular_headers => true
pod 'Firebase/Firestore', :modular_headers => true
# ビルド時間を短縮するための設定コード
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.25.0'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
# 警告設定の最適化
if target.name == 'BoringSSL-GRPC'
target.source_build_phase.files.each do |file|
if file.settings && file.settings['COMPILER_FLAGS']
flags = file.settings['COMPILER_FLAGS'].split
flags.reject! { |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }
file.settings['COMPILER_FLAGS'] = flags.join(' ')
end
end
end
end
end
詳細な設定解説
1. 基本設定
platform :ios, '17.0'
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
- iOSのターゲットバージョンを設定
- CocoaPodsの統計情報収集を無効化してインストール速度を改善
2. Firebase関連の設定
pod 'Firebase/Analytics', :modular_headers => true
pod 'Firebase/Auth', :modular_headers => true
pod 'Firebase/Core', :modular_headers => true
pod 'Firebase/Firestore', :modular_headers => true
- モジュラーヘッダーを使用して、コンパイル時間を短縮
- 必要なFirebaseモジュールを明示的に指定
3. Firestoreの最適化設定
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.25.0'
- 事前ビルドされたFirestoreフレームワークを使用
- バージョン指定で安定性を確保
導入時の注意点
- バージョン管理
- FirebaseSDKのバージョン(例:10.25.0)は、プロジェクトで使用しているバージョンに合わせて変更してください
- 定期的なアップデート確認を推奨します
- 既存の設定との整合性
- 既存のFirebase関連の設定を確認してから追加してください
- 競合する設定がないか注意深く確認が必要です
- 反映手順
- 設定変更後は必ずpod installを実行
- 場合によってはpod repo updateも必要になることがあります
まとめ
FlutterプロジェクトでFirebaseを使用する際のiOSビルド時間の問題は、適切なPodfile設定により大幅に改善できます。
この記事で紹介した設定を導入することで、開発効率を向上させることができます。
特に以下の点が重要です:
- 事前ビルドされたFirestoreフレームワークの使用
- モジュラーヘッダーの活用
- 適切なバージョン管理
なお、この最適化方法はコミュニティによって提供されている解決策であり、プロジェクトの要件に応じて適切に判断して使用してください。