(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

C#だけで簡単にXcodeプロジェクトの自動設定【Unity】【XcodeAPI】【エディタ拡張】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 5.1.0f3 Personal

はじめに

UnityからXcodeのプロジェクトを書き出す後に、Frameworkの追加やURLスキームの設定など

手動でやるのが面倒な事ってありますよね。


んで自動化しようという話になるんですけど、

なんとXcode5からXcodeAPIというXcodeの設定を出来るAPIが追加されたそうな。

また、Xcode4でもここから落としてくればXcodeAPIを使う事ができます。


今回はそのXcodeAPIを使って諸々の設定をするXcodeProjectUpdaterを作ったのでそれのご紹介です!

これを使うと以下のようにInspectorでXcodeの設定を指定出来るようになります。


f:id:kan_kikuchi:20151212225116p:plain


現在、設定出来る項目は

  • URL Scheme設定
  • Frameworkの追加
  • Linker Flag設定
  • Frameworkのパス設定
  • 任意のファイルへのCompiler Flagの設定
  • Bit Codeの有効無効設定
  • デフォルトで設定されているスプラッシュ画像の設定を消す
  • ATSの有効無効設定 2015.10.29追加
  • ApplicationQueriesSchemesの設定 2015.11.06追加
  • ステータスバーの表示設定 2015.12.24追加


です。

さらに任意のディレクトリ&ファイルをXcodeプロジェクトにコピーし、

フレームワークやアーカイブならそのパスを設定する機能も付いています。


導入

まず、ここからXcodeAPIをダウンロードしてきます。


Xcode5では最初からXcodeAPIが入っているのですが、

諸事情でデフォルトのXcodeAPIは使いませんので、Xcode5でも新たなにXcodeAPIを導入します。


諸事情と導入の方法については以下の記事をどうぞ。

導入の際にいくつか修正しなければいけない点があるので注意してください。



次に以下からXcodeProjectUpdaterを取得します。




右側のDownload ZIPからダウンロード出来ます。

このzipを解凍し、Editorディレクトリを突っ込みます。


f:id:kan_kikuchi:20151006134513p:plain


XcodeProjectUpdater-Editor-Scriptsみたいな構成でも大丈夫です。


最後にXcodeへコピーするディレクトリを作成します。これは無くても問題ありません。

機能としてはPlugins/iOSディレクトリに入れるとほぼ同じです。


例えばUnity上にCopyToXcodeというディレクトリを作成すると、

Xcodeには以下のようにコピーされます。


f:id:kan_kikuchi:20151007133637p:plain
f:id:kan_kikuchi:20151007133647j:plain


以下のようにAssetsと同階層にあっても問題ありません。

この場合はUnityエディタ上からは見え無くなります


f:id:kan_kikuchi:20151007134636p:plain


広告とか実装する時に「これをXcodeに入れてください」みたいなファイルや

一度Xcodeプロジェクトを作った後にImage.assetとか入れておくと便利です。


設定

設定内容はXcodeProjectSettingに書いてあり、

XcodeProjectSettingが無いとXcodeProjectUpdatersは動作しないので注意してください。

XcodeProjectSettingは初期状態ではResourcesディレクトリあります。


XcodeProjectSettingがなかったり、新規に作成したい場合は

ProjectのCreate-XcodeProjectSettingで作成できます。


f:id:kan_kikuchi:20151007134851p:plain


新規作成した場合、初期パラメータが設定されていますが、

このパラメータはXcodeProjectSetting.cs内に記載されています。


では、次項から各設定項目を説明していきます。


Copy Directory Path

導入で出てきた、Xcodeへコピーするディレクトリへのパス設定です。

Assets/CopyToXcodeだとAssets直下、つまりProjectウィンドウ上で一番上の

CopyToXcodeというディレクトリをコピーする、という設定になります。


f:id:kan_kikuchi:20151007133637p:plain


Assetsと同階層でも問題ありません。


URL Identifier URL Scheme List


URL IdentifierはSchemeを登録する時に一緒に登録するIdentifierです。


f:id:kan_kikuchi:20151008133246p:plain


Appendで書き出し際は、既に設定されているURL Schemeは残ったままになります。

ただし、Schemeの重複はしません。


Framework List

追加する既存のフレームワークを設定します。

Xcodeで言うとLink Binary With Librariesで設定する項目です。


f:id:kan_kikuchi:20151008133435p:plain


Unity5だと.mmファイル等を選択した時にInspectorからも設定できるので、

そちらの方が楽かもしれません。


f:id:kan_kikuchi:20151012080630j:plain


これだと何を選択したか分からなくなるかもしれませんが……。


Linker Flag Array

Linker Flagを設定する項目です。

Xcodeで言うとBuild Setting - Linking - Other Linker Flagsです。


f:id:kan_kikuchi:20151008134533p:plain


特に指定が無ければ無記入で問題ありません。


Framework Search Path Array

Frameworkがどこにあるかパスを設定する項目です。

Xcodeで言うとBuild Setting - Search Paths - Framework Search Pathsです。


f:id:kan_kikuchi:20151008134141p:plain


特に指定が無ければデフォルトのままで。


Compiler Flags Set List

各ファイルに指定するCompiler Flagを設定する項目です。

Flagsに追加したいCompiler Flagを記入、

その下のTarget Path ListにFlagを追加したいファイルのパスを設定します。

パスはXcodeプロジェクト上でのパスになります


例えば以下の画像だと、Pluginというディレクトリに入っているPlugin.mm

-fno-objc-arcというFlagを指定するという具合です。


f:id:kan_kikuchi:20151012080712p:plain


Xcodeで言うとBuild Phases - Compile Sourcesで設定する項目です。


f:id:kan_kikuchi:20151012080740p:plain


これもUnity5だと対象ファイルを選択した時にInspectorからも設定できるので、

そちらの方が楽かもしれません。


f:id:kan_kikuchi:20151012080727j:plain


これまた何を設定したか分からなくなるかもしれませんが……。


Enable Bit Code

iOS9から追加されたBitCodeを有効にするか否かにするかの設定です。

チェックが付いてる時が有効になります。


BitCodeについては以下の記事がおすすめです。



Xcodeで言うとBuild Setting - Build Options - Enable Bitcodeです。


f:id:kan_kikuchi:20151008135706p:plain


Xcodeプロジェクトのデフォルトは有効ですが、

SDKとかもほとんど対応してないと思うので、今は基本的に無効で大丈夫だと思います。


Need To Delete Launchi Images Key

Xcode側でのスプラッシュ自動設定を消すか否かという項目です。

チェックが付いてる時に削除されます。

Xcodeで言うとInfo.plistのUILaunchImagesを消すか否かになります。


f:id:kan_kikuchi:20151009133438p:plain


この項目は以前、以下のような問題があったために作成しました。

Xcode側で生成されるデフォルトのスプラッシュ画像が

Unityから生成されたものより優先されている


現在もこの問題があるかは分かりませんが、Unity5系で消しても

動作的に問題なかったので基本的に有効で良いと思います。

ただし、一回消すとAppendでは復活しないので注意が必要です。


ATSの有効無効設定 2015.10.29追加

ATS(App Transport Security)を有効にするか否かにするかの設定です。

チェックが付いてる時が有効になります。


ATSについては以下の記事をどうぞ。



Xcodeで言うとInfo.plist-NSAppTransportSecurity -NSAllowsArbitraryLoads -Allows Arbitrary Loadsです。


f:id:kan_kikuchi:20151026134453p:plain


Info.plistにデフォルトでは設定されていませんが、設定されていないとATSは有効になります。

上記記事にもある通り、今は基本的に無効で大丈夫だと思います。


ApplicationQueriesSchemesの設定 2015.11.06追加

特定のスキームのcanOpenURLを有効にする設定です。


ApplicationQueriesSchemesについては以下の記事をどうぞ。



登録したいスキームの数をSizeで指定し、その下のElementにスキームを登録します。


f:id:kan_kikuchi:20151112200756p:plain


Xcodeで言うとInfo.plist-LSApplicationQueriesSchemesです。


f:id:kan_kikuchi:20151111135621p:plain


特に指定したいものが無ければ空欄で問題ありません。


ステータスバーの表示設定 2015.12.24追加

ステータスバーを表示するか否かの設定です。

チェックが付いてる時はステータスバーが表示されます。


f:id:kan_kikuchi:20151210134406j:plain


一応Playser SettingsにStatus Bar Hiddenという項目があるのですが、

これだけだとステータスバーが表示されてしまう場合があるので作った項目です。


詳細については以下の記事をどうぞ。





終わりに

以上で設定は終わりです。あとは普通にビルドするだけで諸々の設定がされているはずです。

これだけで結構楽になった気がしますが、最も有効なのはUnity Cloud Buildを使う時ですね。

Unity Cloud BuildはXcodeプロジェクト書き出し後の手動設定が出来ないので。


予定ではプログラムの説明まで書こうと思ったんですが、

長くなりすぎたので次回記事に持ち越しという事で(:3っ)∋〜


追記 2015.10.19

書きました。



追記終わり