ブログ記事一覧

Unity Cloud BuildでiOSビルド時にCocoaPodsを利用する(ワイルドカード証明書)

2020-02-19

Unity Cloud BuildでiOSビルド時にCocoaPodsを利用する(ワイルドカード証明書利用)

概要

この記事では、Unity Cloud BuildでiOSのビルドにCocoaPodsを利用する方法をまとめます。またビルドにはワイルドカード証明書を利用します。
本記事中で利用しているファイルは以下よりダウンロードできます。こちらを参考にして下さい。
XcodeFiles.zip
BuildPostProcess.zip

経緯

普段はWindowsで開発→Gitでソース共有→MacbookProでiOS用のビルドをしています。
Macbook Proが2012(late)と古くなってきたこともあり、いままで試していなかったUnityCloudBuildにチャレンジしました。

Google先生で調べたところ、以前はUnityCloudBuildでCocoaPodsが使えなかったようです。さすがにCocoaPodsが使えないと面倒です。
海外のフォーラム等ではCocoaPodsが使えるようになったよ!と記載があるのですが、UnityCloudBuild上で実行する方法がなかなか見つからず苦労しました。
なにかの参考になればと思いまとめています。

参考

CocoaPodsをUnity Cloud Buildで利用するに当たり、以下のBlog記事を大いに参考にさせて頂きました。
Automating Unity iOS builds
上記は、実際にUnity Cloud BuildでCocoaPodsを利用するに当たりありがたかったです。ファイルもZipでダウンロード可能です。
Unity Cloud BuildでiOSビルドに必要なMobile Provision Fileとp12 Fileを用意する
naichi’s labさんのblogでは、Unity Cloud Buildの設定で参考にさせて頂きました。

Unity Cloud Buildの設定

CocoaPodを使用するにあたり、UnityCloudBuildの設定は直接影響しません。
ビルドエラーが起きたりした場合の参考にして下さい。

  • 使用するUnityバージョン:Latest 2018.x
  • Xcodeバージョン:Xcode10.3

Unityバージョンは2019だとまだ不安があるので今回は2018です。
Xcodeはバージョン11だとIAPのCapabilityがどうのとエラーがでました。ワイルドカード証明書を利用しているため回避方法がわかりません。
Store提出用の証明書を利用している場合は、適切に権限を付与することでエラーは発生しないかと思います。
今回はワイルドカード証明書でとりあえずビルド確認を行いたいのでXcode10.3としています。

AdvancedOptionsですが、CompressionをLZ4HCにしています。ビルドサイズがが小さくなりますがその分時間はかかるかと思います。
テストではCompressionを設定しなくても良いかと思います。
また、はじめは「Custom Fastlane configuration Path」でFastlaneの設定を指定していました。FastlaneからCocoaPodsを利用しようと企んでいたためです。
実際にはうまくできずにやめました。
Unity Cloud Build側の設定は以上です。

PodFileの準備

PodFileとPodFileを実行するためのスクリプトファイルを準備します。
ファイルはこちらからダウンロードできます。
XcodeFiles.zip
今回は、プロジェクト直下(Assetsと同じ階層)に、XcodeFiles/Podディレクトリを作成します。

ポイントは、XcodeFilesディレクトリをプロジェクトのルート(Assets)と同じ階層に配置することです。

pods.commandの内容

open_pods.commandの内容

PodFileの内容

長いPodfileで汚いですが参考までに記載します。

OnPostprocessBuildのEditorスクリプトファイル準備

ファイルはこちらからダウンロードできます。
BuildPostProcess.zip
zipを展開し、BuildPostProcess.csをEditorフォルダーに格納して下さい。

ポイントはOnPostProcessBuild()の以下の部分です(参考Blogそのまま利用させて頂きました!感謝)
(BuildPostProcess.csにはCocoaPodを利用しないframeworks追加方法も記載してあります)

CopyAndReplaceFileとStartPodProcessはどちらも内部でメソッドとして定義してあります。
処理としては、PodfileをUnity Cloud Build上で利用可能な場所にコピーし、pod installを実行しています。

フォルダーの階層設定などおかしい場合は、File Not Found系のエラーがUnity Cloud Buildで発生します。
以降にBuildPostProcess.csの全文を掲載します。直接今回の設定とは関係の無い部分もありますのでご参考までに。

まとめ

Cocoapodsを利用しなくても、記載したファイルの様に直接Frameworkを追加することも出来ます。
今回利用しているPodfileもそうですが、利用しているSDKが増えてくると手動で管理するのも大変です。
実際普段からCocoaPodsを利用していると、Unity Cloud Buildでも使えないと辛いです。

日本語はともかく英語サイトでもあまり情報がでてこず、本当に使えるのか疑ってすみませんでした。
また、今回のBuildPostProcessはほとんど参考ブログからの丸パクリで成り立っています。
感謝しかありません。