概要
UnityからFirebase Realtime Databaseを使おうとした際に、iOSビルドが通らない問題が生じたためその備忘録です。
環境
・Unity2018.2.10f1
・Xcode10
・firebase_unity_sdk(5.3.0)
・pod --version
-> 1.5.3
再現方法
下記の手順でFirebaseを導入した際にiOSビルドが通らない問題が生じました。
UnityへFirebaseを導入する方法については、公式の説明を参照して下さい。
Unityプロジェクトを作成し、ビルドプラットフォームをiOSに変更する
公式に従ってFirebaseを導入する
今回はFirebaseDatabase.unitypackageのみインポート-
ビルドすると以下のようなエラーが生じる
iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project. After the failure, "pod repo update" was executed and succeeded. "pod install" was then attempted again, and still failed. This may be due to a broken CocoaPods installation. See: https://guides.cocoapods.org/using/troubleshooting.html for potential solutions. pod install output: Analyzing dependencies [!] CocoaPods could not find compatible versions for pod "GoogleUtilities/MethodSwizzler": In Podfile: Firebase/Core (= 5.6.0) was resolved to 5.6.0, which depends on FirebaseAnalytics (= 5.1.1) was resolved to 5.1.1, which depends on GoogleUtilities/MethodSwizzler (~> 5.2.0) Specs satisfying the `GoogleUtilities/MethodSwizzler (~> 5.2.0)` dependency were found, but they required a higher minimum deployment target. [33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding. Consider adding the following to ~/.profile: export LANG=en_US.UTF-8 [0m pod repo update output: ~ 以下略 ~
ログにはBuild completed with a result of 'Succeeded'とあり、Xcodeプロジェクトも生成されていますが、そちらを開いて実行してもビルドは通りません。
解決方法
どうやら原因はCocoaPodのバグらしく、こちらの通りPodfileを編集して再インストールする事で無事ビルドできました。
- 生成されたプロジェクトフォルダに移動してPodfileを開く
-
下記のように
pod 'GoogleUtilities', '5.2.3'
を追記するPodfilesource 'https://github.com/CocoaPods/Specs.git' platform :ios, '12.0' target 'Unity-iPhone' do pod 'Firebase/Auth', '5.6.0' pod 'Firebase/Core', '5.6.0' pod 'Firebase/Database', '5.6.0' pod 'GoogleUtilities', '5.2.3' end ~
pod install
生成された
Unity-iPhone.xcworkspace
を開いてビルド
上記手順で一度インストールしてしまえば、以降はUnityの[Build And Run]からも実行できるようになります。
ちなみに「iOS framework addition failed」で調べると、~/.profileや~/.bash_profileにexport LANG=en_US.UTF-8
を追記する解決法が散見されますが、今回の問題はこの方法では解決しませんでした。