Swiftでタイピングアプリ制作(4)〜Firebaseを導入する②〜
前回の記事では、Firebaseのために必要なファイルを導入させるところまで記事にしました。ターミナルその他の使い方がわからないと若干厳しくもありましたが、ひとまず、必要なファイルは入れられたはずです。
さて、前回実はインストールできていたようで、エラーメッセージが出ており、インストールはできていませんでした。
XCode 10, iOS 12.2, Swift 5で開発していますが、
下のようなエラーコードを吐いていたので、修正をしました。
[!] The platform of the target `typelab macOS` (macOS 10.14) is not compatible with `Firebase/Core (6.0.0)`, which does not support `osx`.
[!] Automatically assigning platform `ios` with version `12.2` on target `typelab iOS` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
[!] Automatically assigning platform `osx` with version `10.14` on target `typelab macOS` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
ということで、macOSには対応していないとのこと。macOSのFirebaseインストールをPodfileから取り除いて下記のようにしたら、無事、インストールが始まりました。
target 'typelab iOS' do
platform :ios, '12.2'
use_frameworks!
pod 'Firebase/Core'
end
target 'typelab macOS' do
use_frameworks!
end
インストールが完了!!
macOS用のアプリは別途考えます。ひとまず、Swift x Firebaseが動くか検証します。
installation complete!と出たので、これでひと安心、なはずです。
初期化コードの追加
Firebaseのチュートリアルを進めると、下記のように出てきます。
太字になっている行をクリックすると、勝手にコピーされるので、AppDelegate.swiftのファイルに入れていきましょう。
入れて実行!!!!となったのですが・・・
早速エラーを返されてしまいました。
Objective-Cのモジュール、Firebaseは使えないよーとのことです。
残念。このインストールの仕方では上手く行かなかったようです。
原因を突き止める(1)
原因は「Swiftのバージョンが5である」という仮説を立てました。
4.2のSwiftバージョンであれば、5でも活用できるようで、それがQiitaの記事に書かれているのを発見しました。
この方法を実行してみました。下のコードでPodsをインストールし直しましたが、動作はしませんでした。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.2'
end
end
end
target 'typelab iOS' do
use_frameworks!
pod 'Firebase/Core'
end
target 'typelab macOS' do
use_frameworks!
end
結果:動きませんでした。Swiftのバージョンが5だからといって、関係がないようです。
原因を突き止める(2)
原因を「Firebaseのバージョンが6.0.0はSwiftをサポートしていない」という仮説を立てました。Firebaseのリリースノートをみると、6.0.0の前のバージョンは、5.19.0なので、そのバージョンをインストールします。
Podfileはこんな感じ。
target 'typelab iOS' do
use_frameworks!
pod 'Firebase/Core', '5.19.0'
end
target 'typelab macOS' do
use_frameworks!
end
結果:また同じエラーがでました。バージョンが問題ではないようです。
原因を突き止める(3)
今までのFirebase v6.0.0も、v5.19.0もいずれも、podでインストールされるファイルには、「Firebase.h」のファイルしかできませんでした。
そして、これは「Objective-C」で活用するコンパイルされたファイルなので、そこに問題があるかもしれません。つまりエラーメッセージを読見とくとこんなふうになっていることに気づきます。
Could not build Objective-C module 'Firebase'
Objective-C言語のモジュールFirebaseは使えないよ。
ここに活路がありそうです。つまりpodで何らかのオプションが足りておらず、Swift用のモジュールではなく、Objective-C用のモジュールが作られてしまっている。
という仮説を立てることができるではありませんか!
ということで、cocoapodsのドキュメントを見てみます。すると、
こんな記事に出会いました。私はxcodeprojを開いてしまっていましたが、開くべきは、「typelab.xcworkspace」だったのです!!
無事ビルドも、アプリとの接続も成功しました!!!やったー!!
ということで、紆余曲折ありましたが、Firebaseとの接続はこれで成功です。
次回はデータベースにキーのログを保存するプログラムを書きたいと思います。