Upgrade to Pro — share decks privately, control downloads, hide ads and more …

About triangle

Smith
February 21, 2017

About triangle

This slide presents processes inside of triangle (build button) focused on Unity and Xcode.

Smith

February 21, 2017
Tweet

More Decks by Smith

Other Decks in Programming

Transcript

  1. Introduce.rs Individual name smith age 33 Employee since 2011 division

    Client Architect group Game Architect occupation Engineer rust Beginner // trait は割愛 struct Smith; impl for Smith { fn (&self) -> &'static str { ” " } fn (&self) -> i32 { } } impl for Smith { fn (&self) -> WorkInfo { WorkInfo::Since( ) } fn (&self) -> WorkInfo { WorkInfo::Division(” ") } fn (&self) -> WorkInfo { WorkInfo::Group(” ") } fn (&self) -> WorkInfo { WorkInfo::Occupation(” ") } fn (&self) -> WorkInfo { WorkInfo::Rust(” ") } }
  2. Agenda -  Notice -  What is Build ? -  Inside

    Build -  Our Build Problem -  Solution -  Conclusion
  3. App Store Review Guidelines 2.5 Software Requirements 2.5.2 Apps should

    be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code, including other iOS, watchOS, macOS, or tvOS apps. ☓ JIT ✓ AOT
  4. C# DLL Executable IL C++ object Unity Editor Xcode compile

    dis- assemble convert compile link Runtime AOT ▶ ▶
  5. C# DLL Javascript IL C++ LLVM- IR Unity Editor emscripten

    compile dis- assemble convert compile convert ▶ ▶
  6. Build Target -  app name -  icons -  bundle ID

    -  provisioning profile -  versions -  run scripts -  define symbols 開発用の リリース用の 外部会社に見せる用の 実験的機能開発用の 定期配信する安定版用の
  7. Unity build flow ▶ convert setting dto template Setting files

    apply Preprocess load setting dto Postprocess apply modify modify Customized
  8. Conclusion -  コンパイルに関するメンテは稀 -  ターゲットビルドの需要が多い -  Unity はターゲットビルドに対応していない -  Unity

    の API で ある程度は対応できる -  ビルドスクリプトを作成する必要がある -  Android は大変
  9.   Copy resources   Compile xib   Compile asset catalogs

      Process package info   Precompile Prefix.pch   Compile sources   Link   Process product packaging   Sign app   Validate app Things under ▶
  10. Things under   Initialize mono   Load Unity   Define

    symbols   Compile sources   Build Player   Compile Assets   Process IL2CPP   Export Xcode project   Post process ▶
  11. Points   Linker Flags SDK インストール時に要求されることがある   Architectures サポート機種 (iPhone

    5s 以上など) によって不要なものを削る Xcode environment variables dSYM を外したりなど   C++ settings 他 PF 向けビルド設定と合わせるなど   Run Script ビルド後の任意スクリプト処理
  12. Solution   実機ビルドを行う場合は設定範囲が Xcode で完結しない → Apple Developer Member Center

    に関わる設定を   PJ 発足初期に出来る限り固めておく  ワイルドカードの App ID は非推奨   ほとんどの項目が project.pbxproj で管理されている → 局所的な設定の変更はPJの問題と割り切り汎用化を避ける   Provisioning Profile の差し替えなどは対応する
  13. Points   Plugins プラグインのビルド設定   Define Symbols Release / Develop

    等のビルドターゲット毎に変更する   Scripting backend (mono / il2cpp) 開発時はビルドの速い mono にしたい、など   External Project Android は Unity のサポートがほぼ皆無   Build Target ターゲット毎のビルド設定変更
  14. Problems   ビルドターゲット Xcode 新規バージョン追従   Third party SDK  

    Android gradle project (外部プロジェクト書き出し)
  15. Solution   ビルドターゲット → batchmode でビルドを行う際のパラメータで補完 Xcode 新規バージョン追従 → 待つしかない

      どうしても対応が必要な場合は、PJ 個別で該当箇所のみ対応   Third party SDK → 外部プロジェクトからの Java/Obj-C SDK の利用を推奨   Android gradle project (外部プロジェクト書き出し) → Gradle プロジェクトテンプレートを作成した   テンプレート上でアプリ固有の設定を編集するように統一