UnityAdventCalendar2016今回はUnityを使用したiOS/Androidビルド方法についての簡単な解説と、社内で動いているビルドシステムついて紹介したいと思います。こんにちは、ソーシャルゲーム事業部所属エンジニアのぴーちんです!!宜しくお願いしますヾ(@⌒ー⌒@)ノこの記事はカヤックUnityアドベントカレンダー2016の24日目の記事になります。終わりにplatform毎の基本的なビルド方法についてOSや開発ツールのバージョンが上がる毎に少しずつ変わって行くので、詳細な方法などについては触れずに基本的な事だけ書いていきます。カヤックで運用してる自動ビルドシステムを後ほど紹介するので、まずは事前知識を以下に簡単に書いていきます。iOSビルドの準備iOSアプリをビルドする為には、以下の準備が必要です。)をXcodeからビルドする必要があります。Unityが生成するXcodeProjectについては公式マニュアルで詳しく説明されています。けとAppStore用の証明書があります。それぞれ役割が違いますが、社内向けは開発用でAppStore用は本番用の証明書と覚えておくと良いでしょう。ちなみにそれぞれの証明書には有効期限があり、証明書が期限切れになる事があります。その場合、期限が切れてしまった証明書でビルドしたアプリに以下の様な異なる挙動が出ます。アプリは起動できるが、期限切れの状態でアプリをバージョンアップする事が出来ない基本的に証明書の有効期限が近づくと、社内ではAdmin権限を持った人がアナウンスしてくれますが、証明書が必要になった時に期限切れしていると予想外のタスクが増えます。覚えておくと良いでしょう。iOSの開発には複数の証明書が必要になります。詳細はAppleの開発社サポートを読むと良いでしょう。Developerコード署名に使う開発用証明書iOSのビルドを作って公開するには、開発用証明書で署名を行わなければなりません。署名をする目的は、アプリの安全性を担保する事です。アプリの署名をすると、このアプリが特定の開発元から提供されていて、最後に署名を行った時点から改変されてない事を保証できます。コード署名を行わないとiOSデバイス上で動作しません。いった理由もあるのでゲームの開発時からiOSビルドをしたい場合に、この証明書は必要です。詳細は公式の解説をお読みください。DeveloperAndroidビルドの準備Androidアプリをビルドする為には、以下の準備が必要です。AndroidSDKアプリへ署名する為の証明書AndroidSDKandroidアプリをビルドするには、開発者サイトで公開してるAndroidSDKやantなどのビルドツールが必要ですどちらもAndroidの開発者サイトにて公開されているのでDLできます。現在SDKはAndroudStudioからinstallする様になっています。最新のAndroidSDKを入手した場合には、AndroidStudioからinstallしましょう。install方法はも開発者サイトにチュートリアル動画があるのでご覧ください。StudioAndroidSDKやantを使用した詳細なビルド方法については、公式のマニュアルのAndroidのビルドプロセスをご覧ください。docs.unity3d.comアプリへ署名する為の証明書AndroidもiOSと同様にアプリに署名を行わないとアプリをinstallする事ができないので、証明書が必要です。署名をする理由もiOSと同じですが、証明書をplatformが管理せずに開発者が自由に発行可能な事はiOSと違う点です。CLIから証明書を作成する手順は、開発者サイトのアプリケーションへの署名のページに説明があるのでご覧ください。developer.android.comまた、UnityではEditorのGUIを利用して証明書を作る事が可能です。Settingsの項目で紹介されています。とコメントをするだけでビルドを開始して、ビルドURLをコメントしてくれる様になっています。githubのwebhookとjenkinsとalphawingを使って実現しています。ちなみにalphawingとは、社内で使ってるアプリ配信サービスです。以下の記事で紹介されています。(『Android向け』とありますが、社内ではiOSAppの配信にも使用しています。pull−requestにコメントするとjenkinsのビルドがUnityEditorを起動してコンパイルチェックをしてpull−requestにチェック結果を通知してくれます。.slnファイルを更新して、Xamarinを起動してコンパイルのチェックをしています。このプロセスを、チェックしたいScriptingDefineSymbolsのパターンの数だけ実行します。ファイルを最新の状態に更新します。}}そのあとで、Xamarinを起動してコンパイルを実行します。buildバッチモードUnityはCLIから起動して、特定の関数を実行したりできる機能が提供されています。実行するには以下の様に書きます。バッチモード中にクラッシュしてもエラーレポートのWindowを出さないで終了する詳細は公式マニュアルをご覧ください。docs.unity3d.comScriptingDefineSymbolsC#にはプリプロセッサディレクティブという、コンパイル前にコンパイラなどに特別な命令を出す事ができる機能があります。ScriptingDesineSymbolsは、その中でも条件付きコンパイルの機能で扱うシンボルの事を指します。C』にて、とても分かりやすく解説されているのでオススメです。ufcpp.netUnityはScriptDefineSymbolにシンボルを追加する事で、そのシンボルをプロジェクト全体に反映してくれます。platform毎にPlayerSettingsのGUIから設定が可能です。コードから設定する場合にはPlayerSettings.SetScriptingDefineSymbolsForGroupのAPIをご活用ください。使用例ScriptingDefineSymbolsについて更に詳しく知りたい場合には、公式マニュアルに設定例なども書いてありますのでご覧ください。docs.unity3d.comちなみに過去にリリースしたプロジェクトでは、以下の様なScriptingDefineSymbolsを使用していました。3rd-party製SDKの有効設定(SDKをコンパイルするかの設定)USE_GOOGLEANALYTICS...などプッシュ通知機能の有効設定PUSH_NTF_ENABLEDデバッグビルドか?(デバッグ用の機能もコンパイルするかの設定)IS_DEBUG3rd-party製SDKの有効設定(SDKをコンパイルするかの設定)基本的に外部の機能はゲームと疎結合にしています。理由は、以下の通りです。3rd-party製SDKの内容はサービス提供者のサーバーやDLLコードに隠蔽されてる場合が多いので、バグがあった場合にすぐ取り外したいAppleやGoogleなどのplatformでアプリ内のルールや禁止事項が変更されて、禁止された処理をSDKで行っていた場合にすぐ取り外せないとアプリをアップデートできない終わりに如何でしたでしょうか?ゲーム事業部のビルドシステムは基本的に技術基盤チームがメンテナンスしていますが、実際にビルドを動かしてるのはゲームタイトル毎なのでビルド処理のチューニングをしたり、ビルドが失敗した場合のログから問題を調査する能力はエンジニアとして働いていたら必ず役に立つと思います!さて、本日でカヤックUnityアドベントカレンダー2016は終了ですが、また来年も引き続き技術ブログを更新していきたいと思います。ソーシャルゲーム事業部所属では中途でも新卒でもエンジニアを募集していますので、今回のAdventCalenderを見て興味を持っていただけたら是非来てみてください、一緒にゲーム開発しましょう!www.kayac.comwww.kayac.comでは、みなさん良いお年を!メリークリスマス☆*:.。ソーシャルゲーム事業部のこみやです。(1)月別アーカイブ検索スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。