この記事でのバージョン
Unity 5.1.0f3 Personal
はじめに
UnityからXcodeのプロジェクトを書き出す後に、Frameworkの追加やURLスキームの設定など
手動でやるのが面倒な事ってありますよね。
んで自動化しようという話になるんですけど、
なんとXcode5からXcodeAPIというXcodeの設定を出来るAPIが追加されたそうな。
また、Xcode4でもここから落としてくればXcodeAPIを使う事ができます。
今回はそのXcodeAPIを使って諸々の設定をするXcodeProjectUpdaterを作ったのでそれのご紹介です!
これを使うと以下のようにInspectorでXcodeの設定を指定出来るようになります。
現在、設定出来る項目は
- 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ディレクトリを突っ込みます。
XcodeProjectUpdater-Editor-Scriptsみたいな構成でも大丈夫です。
最後にXcodeへコピーするディレクトリを作成します。これは無くても問題ありません。
機能としてはPlugins/iOSディレクトリに入れるとほぼ同じです。
例えばUnity上にCopyToXcodeというディレクトリを作成すると、
Xcodeには以下のようにコピーされます。
以下のようにAssetsと同階層にあっても問題ありません。
この場合はUnityエディタ上からは見え無くなります。
広告とか実装する時に「これをXcodeに入れてください」みたいなファイルや
一度Xcodeプロジェクトを作った後にImage.assetとか入れておくと便利です。
設定
設定内容はXcodeProjectSettingに書いてあり、
XcodeProjectSettingが無いとXcodeProjectUpdatersは動作しないので注意してください。
XcodeProjectSettingは初期状態ではResourcesディレクトリあります。
XcodeProjectSettingがなかったり、新規に作成したい場合は
ProjectのCreate-XcodeProjectSettingで作成できます。
新規作成した場合、初期パラメータが設定されていますが、
このパラメータはXcodeProjectSetting.cs内に記載されています。
では、次項から各設定項目を説明していきます。
Copy Directory Path
導入で出てきた、Xcodeへコピーするディレクトリへのパス設定です。
Assets/CopyToXcodeだとAssets直下、つまりProjectウィンドウ上で一番上の
CopyToXcodeというディレクトリをコピーする、という設定になります。
Assetsと同階層でも問題ありません。
URL Identifier URL Scheme List
URL IdentifierはSchemeを登録する時に一緒に登録するIdentifierです。
Appendで書き出し際は、既に設定されているURL Schemeは残ったままになります。
ただし、Schemeの重複はしません。
Framework List
追加する既存のフレームワークを設定します。
Xcodeで言うとLink Binary With Librariesで設定する項目です。
Unity5だと.mmファイル等を選択した時にInspectorからも設定できるので、
そちらの方が楽かもしれません。
これだと何を選択したか分からなくなるかもしれませんが……。
Linker Flag Array
Linker Flagを設定する項目です。
Xcodeで言うとBuild Setting - Linking - Other Linker Flagsです。
特に指定が無ければ無記入で問題ありません。
Framework Search Path Array
Frameworkがどこにあるかパスを設定する項目です。
Xcodeで言うとBuild Setting - Search Paths - Framework Search Pathsです。
特に指定が無ければデフォルトのままで。
Compiler Flags Set List
各ファイルに指定するCompiler Flagを設定する項目です。
Flagsに追加したいCompiler Flagを記入、
その下のTarget Path ListにFlagを追加したいファイルのパスを設定します。
パスはXcodeプロジェクト上でのパスになります
例えば以下の画像だと、Pluginというディレクトリに入っているPlugin.mmに
-fno-objc-arcというFlagを指定するという具合です。
Xcodeで言うとBuild Phases - Compile Sourcesで設定する項目です。
これもUnity5だと対象ファイルを選択した時にInspectorからも設定できるので、
そちらの方が楽かもしれません。
これまた何を設定したか分からなくなるかもしれませんが……。
Enable Bit Code
iOS9から追加されたBitCodeを有効にするか否かにするかの設定です。
チェックが付いてる時が有効になります。
BitCodeについては以下の記事がおすすめです。
Xcodeで言うとBuild Setting - Build Options - Enable Bitcodeです。
Xcodeプロジェクトのデフォルトは有効ですが、
SDKとかもほとんど対応してないと思うので、今は基本的に無効で大丈夫だと思います。
Need To Delete Launchi Images Key
Xcode側でのスプラッシュ自動設定を消すか否かという項目です。
チェックが付いてる時に削除されます。
Xcodeで言うとInfo.plistのUILaunchImagesを消すか否かになります。
この項目は以前、以下のような問題があったために作成しました。
Xcode側で生成されるデフォルトのスプラッシュ画像が
Unityから生成されたものより優先されている
現在もこの問題があるかは分かりませんが、Unity5系で消しても
動作的に問題なかったので基本的に有効で良いと思います。
ただし、一回消すとAppendでは復活しないので注意が必要です。
ATSの有効無効設定 2015.10.29追加
ATS(App Transport Security)を有効にするか否かにするかの設定です。
チェックが付いてる時が有効になります。
ATSについては以下の記事をどうぞ。
Xcodeで言うとInfo.plist-NSAppTransportSecurity -NSAllowsArbitraryLoads -Allows Arbitrary Loadsです。
Info.plistにデフォルトでは設定されていませんが、設定されていないとATSは有効になります。
上記記事にもある通り、今は基本的に無効で大丈夫だと思います。
ApplicationQueriesSchemesの設定 2015.11.06追加
特定のスキームのcanOpenURLを有効にする設定です。
ApplicationQueriesSchemesについては以下の記事をどうぞ。
登録したいスキームの数をSizeで指定し、その下のElementにスキームを登録します。
Xcodeで言うとInfo.plist-LSApplicationQueriesSchemesです。
特に指定したいものが無ければ空欄で問題ありません。
ステータスバーの表示設定 2015.12.24追加
ステータスバーを表示するか否かの設定です。
チェックが付いてる時はステータスバーが表示されます。
一応Playser SettingsにStatus Bar Hiddenという項目があるのですが、
これだけだとステータスバーが表示されてしまう場合があるので作った項目です。
詳細については以下の記事をどうぞ。
終わりに
以上で設定は終わりです。あとは普通にビルドするだけで諸々の設定がされているはずです。
これだけで結構楽になった気がしますが、最も有効なのはUnity Cloud Buildを使う時ですね。
Unity Cloud BuildはXcodeプロジェクト書き出し後の手動設定が出来ないので。
予定ではプログラムの説明まで書こうと思ったんですが、
長くなりすぎたので次回記事に持ち越しという事で(:3っ)∋〜
追記 2015.10.19
書きました。
追記終わり