cocos2d-x : Firebaseの導入(iOS編)

投稿者: | 2018年7月27日

Cocos2d-xにAdmobを導入していきます。私の作業環境はMac(10.13.6)です。Googleでも公式にCocos2d-xへのAdmob導入をサポートしており、日本語でページを用意してくれています。今回はiOSでFirebaseを導入するまでの説明です。
→参考:Firebase(公式) – cocos2d-x

 

CocoaPodsの導入

Admobの導入にはFirebaseが必要になり、そのfirebaseを導入するにはCocoaPods(ライブラリ管理ソフト)が必要になります。ググると丁寧な説明がたくさんでてきますが、pod setupまでで止めて、その先は公式のfirebaseの指示に従いましょう
→参考:google検索「cocoapods インストール」

 

私の場合はwarningが表示されましたが、Setup completedと表示されたのでOKとしました。

昨年CocoaPodsは導入していたのでこの作業は必要なかったかも(warningもそのせい?)。
ともあれ最新版にはアップデートされたと思います。

0727_10
 
 
 

Firebaseの導入

Firebaseのダウンロードは公式ページの「AdMob を含む Firebase C++ SDK を入手する」の項目にリンクがあります。解凍したら利用するプロジェクトフォルダに移動してください。

このフォルダ2.8GBもあり、こんなサイズのデータをプロジェクト毎にコピーするのは不効率なので、あとで共通化できないか挑戦する予定。具体的には1階層上に配置して、各プロジェクトで共通して参照するようにしたい。

DjFjnWmVAAAYa_6

 

1 – GoogleService-Info.plistの取得

公式サイトで「iOS プロジェクトを設定する」の1番目の項目にある「アプリに Firebase を追加する」を参考にFirebaseの管理ページにプロジェクトを登録し、GoogleService-Info.plistをダウンロードしてください。

ダウンロードするだけでOKです。

0727_2

このファイルも先にダウンロードしたFirebase_cpp_sdkとともにプロジェクトのフォルダに移動してください。下図のようになるはずです。これでFirebase導入の準備ができました。

0727_3

2018.9/11追記
GoogleService-Info.plistを間違えた場所に配置、もしくは配置し忘れるとfirebaseを初期化するタイミングで【signal SIGABRT】でアプリがクラッシュする。その後、正しい場所に配置してpod updateしてもGoogleService-Info.plistが認識されなかった。その場合は手動(xcodeにdrag&drop)で登録すると解決できる(下図)。

スクリーンショット-2018-09-11-21.47.25

 

2 – Podfileの作成

次に公式サイト「iOS プロジェクトを設定する」の2番目の項目に従いproj.ios_macフォルダ内にPodfileを作成します。内容は公式からコピペです(画像下)。

0727_4
0727_5

 

3 – pod update の実行

公式サイト「iOS プロジェクトを設定する」の3番目の項目に従いコンソールでpod updateを実行しました。しかしエラーがでて途中で停止してしまいました(下図)。

0727_6
 

xcodeプロジェクトへのパスが見つからないということなので、profileを以下のように修正。
コンソールでxcodeプロジェクトのある階層まで移動してからのupdateなので、パスの必要は無いと思ったのだけど…

0727_7

中途半端に作成されたPodフォルダは削除して再び「pod update」を実行。エラーは表示されずフォルダ内に必要なファイルが作成されました。

0727_8

 

4 – 警告の修正

前段階でコンソールに警告が表示されるので、公式サイト「iOS プロジェクトを設定する」の4番目の項目に従い以下の3箇所に$(inherited) を追加します。

0727_10
 
0727_11
 
0727_12

 

5 – ビルド設定

公式サイト「iOS プロジェクトを設定する」の5番目の項目に従い「Framework Search Paths」と「Header Search Paths」に以下の設定を追加します。

0727_13

0727_14

2018.9/11追記
もしfirebase-sdkをさらに上位の階層に設置した場合は、ここの階層指定を変更します。現在更新中の「弾幕の器」では以下の様に「../」が1つ増えています(以下はHeader Search Pathsだけですが、Framework Search Pathsも同様に階層を変更してください)。

0911

 

6 – ライブラリの追加

公式サイト「iOS プロジェクトを設定する」の6番目の項目に従いライブラリへの参照を設定します。[Copy Items if Needed] チェックボックスをオフにします。フレームワークの場所は、前のステップで追加したビルド設定によって Xcode に知らされます

つまり、そのパスを操作すれば2.8GBもあるfirebaseフォルダをプロジェクト外に配置し共用できるのではないか?Android版を一通り導入し、Androidもパスを変更できそうなら挑戦してみよう!

0727_15

 

7 – GameController.frameworkの追加

公式サイト「iOS プロジェクトを設定する」の7番目の項目に従いGameController.frameworkを追加しました。

0727_16

 

8 – App Transport Securityの設定

公式サイト「iOS プロジェクトを設定する」の8番目の項目に従いApp Transport Securityの設定をします。App Transport Securityの説明は英語しかありませんが、以下のようにiOSフォルダ内のInfo.plistに指示されたテキストをペーストするだけです。これでFirebaseの導入は完了です。

xcode上でも設定できますが、私はテキストエディタで開いてコピペしました。スペルミス怖いし…

0727_20 
 
 

ビルドして起動確認

まだ広告の設定は完了していませんが、導入完了の確認をするためにビルドします。注意するのはxcworkspaceファイルの方をビルドする点です。

0727_17

ちなみにxcodeprojファイルをビルドしようとすると以下のようなエラーとなります。間違えないようにしましょう。

0727_18

そんなこんなで無事iPhoneXのシミュレーターで起動できました。

0727_19

今回はここまで。次回はAndroidへの導入記事になります。

 
 

追記:Linker Command failed with exit code 1

原因が分かりにくいことで有名?なエラー。詳細を表示するためにはエラーを右ボタンクリックして「Reveal in Log」を実行すると詳細が表示されます。
→参考:stack overflow

ojYWj

アプリ更新時にはファイルの登録忘れに注意

古いアプリの更新時にはファイルの登録忘れで発生し、この場合はググっても問題は解決しにくい。私のケースでは以下の様に表示され、RootViewControllerからリンクしているはずのConsentSaverというファイルが足りないことに気がつけた。

linkerError

この記事に掲載する内容ではない気もしますが、少し関連している?ので。

 


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload the CAPTCHA.