毎度毎度のことですが、iOS版をリリースするにあたっていつもXcodeには苦しめられます(自分のケアレスミスも多々ありますが・・・)。
半年に一度くらいしかリリースしていないので、次にリリースするときにまた忘れてしまったり、環境などが変化していることがあるので、毎回詰まったところをまとめてブログに書いておこうと思います。
Xcodeでビルドする際に事前にやっておくこと
これ毎回調べてるんでメモっておきます。
Teamの選択
まあ、ここでつまずく人はあまりいないと思いますが、いちおうメモしておきます。ビルドを実行するまえにTeamを選択しておきましょう。もちろん、事前にIDなどを取得してプロビジョニングファイルを更新しておく必要があります。
Admobに必要なフレームワークを追加する
FrameWorkフォルダからGoogleMobileAdsのフレームワークを追加します。
これをしなくてもビルドは通るのですが、どうも広告が表示されないようです。でもインタースティシャルは表示されるんですよね・・・。
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追記:これも特にいじる必要がないみたいです。
Xcodeのイレギュラーなエラー
Xcodeで出会うエラーは毎回違うものもあるのでここにメモっておきます。
UnityからXcodeへの書き出しで失敗する
UnityからXcodeへ書き出しを行おうとすると
iOS framework addition failed due to a Cocoapods installation failure. This will will likely result in an non-functional Xcode project.
というエラーが出る現象がありました。
これ、相当悪戦苦闘したのですが、結果的にはMacのOSを最新バージョンにアップデートしたら解決しました。でも、他にも調べてやってみたことがあるので記しておきます。
- Unityの最小iOSターゲットを8.0にする
- ターミナルで~/.bash_profileを編集し、export LC_ALL="en_US.UTF-8"を追加、そしてsource ~/.bash_profileを実行する。
ちなみにCocoapodsというのはiOS/Mac向けのアプリを作成する際のライブラリ管理をしてくれるものらしいです。
フレームワークを追加したのにLinkerエラーが出る
Xcodeのエラーの詳細を見ると以下のようなエラーが表示されていました。
ld: library not found for -lPods
すでにプロジェクト名での同様のライブラリがあるのに、「LibPods-Unity-iPhone.a」という存在しないPodsライブラリが改めて指定されているのがエラーの原因のようです。「-」をクリックして削除しましょう。
デバイスにインストールしようとしたらCPUに対応していないといわれた
ビルドまで無事に完了したかと思いきや、実機にインストールしようとしたら
App installation failed This application does not support this device's CPU type.
というエラーダイアログが表示されました。
なんかインストールしようとしている実機のCPUに対応していないという意味っぽいエラーです。そんな古いiPhoneじゃないのにそれはないでしょうと、思って調べたら「Build Settings」の設定がおかしいようでした。
「Build Settings」の「Architectures」を「Standard architectures」に変更するとエラーがなくなります。
実機にインストールしたが広告が表示されない
考えられる可能性を以下のとおり列挙します
- 必要なフレームワークが追加されていないことです。
- 広告IDが間違っている
- Admobのユニットを作成したばかりで反映されていない
また、実機を一度再起動してみると表示されることもありました。
参考サイト:
https://unity3d.sakura.ne.jp/unity/unity-iphone-admob.html
https://qiita.com/shishimo@github/items/af18f5e057d206f051b6