毎度毎度のことですが、iOS版をリリースするにあたっていつもXcodeには苦しめられます(自分のケアレスミスも多々ありますが・・・)。
半年に一度くらいしかリリースしていないので、次にリリースするときにまた忘れてしまったり、環境などが変化していることがあるので、毎回詰まったところをまとめてブログに書いておこうと思います。
Xcodeでビルドする際に事前にやっておくこと
これ毎回調べてるんでメモっておきます。
でも、Xcodeのビルドはわずらわしい作業が減って改善されていってるので助かります。
Teamの選択
まあ、ここでつまずく人はあまりいないと思いますが、いちおうメモしておきます。ビルドを実行するまえにTeamを選択しておきましょう。もちろん、事前にIDなどを取得してプロビジョニングファイルを更新しておく必要があります。
ちなみに、Unity側で先に設定しておけばXcodeに書き出した時にいちいちTeamを選択する必要がないので楽です。
Admobに必要なフレームワークを追加する
FrameWorkフォルダからGoogleMobileAdsのフレームワークを追加します。
これをしなくてもビルドは通るのですが、どうも広告が表示されないようです。でもインタースティシャルは表示されるんですよね・・・。
2021/6/11追記:UnityのGoogleMobileAds5.4.0ではわざわざフレームワークを追加する必要がなくなりました(ありがたや)。
Admobなどに必要な他のフレームワークを追加する
Linkerエラーが出たらだいたいフレームワーク関係じゃないかと思ってます。Admobなどの広告を入れた時にいつも調べ直しが必要になるので、必要なフレームワークを列挙しておきます。
「Build Phases」の項目にある「Link Binary Width Libraries」から追加できます。
AdSupport.frameworkAudioToolbox.frameworkAVFoundation.frameworkCoreGraphics.frameworkCoreTelephony.frameworkEventKit.frameworkEventKitUI.frameworkMessageUI.frameworkStoreKit.frameworkSystemConfiguration.framework
2018/2/27追記:上記のフレームワークはわざわざ追加しなくてもビルドできました。CocoaPodsとかのおかげなかな?
Enable BitcodeをNoにする
「Build Settings」の項目にある「enable bitcode」を「No」にします。詳細はよくわかりません・・・。
2018/2/27追記:これも特にいじる必要がなくなったみたいです。
フレームワークを追加したのにLinkerエラーが出る
Xcodeのエラーの詳細を見ると以下のようなエラーが表示されていました。
ld: library not found for -lPods
すでにプロジェクト名での同様のライブラリがあるのに、「LibPods-Unity-iPhone.a」という存在しないPodsライブラリが改めて指定されているのがエラーの原因のようです。「-」をクリックして削除しましょう。
2021/6/11追記:これも出なくなりました。
実機にインストールしようとしたらCPUに対応していないといわれた
ビルドまで無事に完了したかと思いきや、実機にインストールしようとしたら
App installation failed This application does not support this device's CPU type.
というエラーダイアログが表示されました。
なんかインストールしようとしている実機のCPUに対応していないという意味っぽいエラーです。そんな古いiPhoneじゃないのにそれはないでしょうと、思って調べたら「Build Settings」の設定がおかしいようでした。
「Build Settings」の「Architectures」を「Standard architectures」に変更するとエラーがなくなります。
2021/6/11追記:これも出なくなりました。
実機にインストールしたが広告が表示されない
考えられる可能性を以下のとおり列挙します
必要なフレームワークが追加されていない- 広告IDが間違っている
- Admobのユニットを作成したばかりで反映されていない
- Admobのアプリが制限されている(2021/6/11追記)
また、実機を一度再起動してみると表示されることもありました。
こういうときはとにもかくにもAdmobのテストIDで表示されるか試してみましょう。テストIDで表示されれば、本番IDでもしばらく時間がたてば表示されることが多いです。
参考サイト:
https://unity3d.sakura.ne.jp/unity/unity-iphone-admob.html
https://qiita.com/shishimo@github/items/af18f5e057d206f051b6