Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
About triangle
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Smith
February 21, 2017
Programming
74
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
About triangle
This slide presents processes inside of triangle (build button) focused on Unity and Xcode.
Smith
February 21, 2017
More Decks by Smith
See All by Smith
Zig なんもわからん 〜あるいは学びのモチベーション〜
dolow
0
380
Go に Generics がやってきた
dolow
0
600
NFT つくってみた
dolow
0
260
プロのエンジニアが1人日を捻出してレトロJRPGっぽいゲームを本気で作った
dolow
0
850
技術中間組織はじめました
dolow
0
100
Cipher.Mobile
dolow
0
94
Develop::Client::Game
dolow
1
44
Other Decks in Programming
See All in Programming
AHC070解法紹介
eijirou
0
150
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
110
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
20k
Are APIs Still Relevant in the AI Era?
soyuka
0
390
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
32
14k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
430
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Heart of Swift Concurrency
koher
0
1.1k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
580
mrbgem 三角測量 開発
ogom
0
170
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
460
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
The browser strikes back
jonoalderson
0
1.7k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
600
Making the Leap to Tech Lead
cromwellryan
135
10k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Transcript
▶ About
fn main { = Smith; me. (); } let me
introduce
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(” ") } }
Introduce.rs 自己紹介の安定版 https://github.com/dolow/rust-helloworld
No more Rust today. (ごめんね)
Organization Client Architect Div. Game Architect Group smith
Agenda - Notice - What is Build ? - Inside
Build - Our Build Problem - Solution - Conclusion
Notice 当該資料では C# (Unity) での iOS/Android 向け開発を 前提として進行します
What is Build ? ビルドってなに?
Engineers does build
Engineers does maintain
Why ?
Inside Build 見てみよう
▶
C/C++ /Obj-C object Executable Runtime link compile ▶ Script
.ipa ▶ App
▶
Build for Editor
C# DLL Executable Runtime JIT ▶ compile compile Script
Editor Player DLL ▶ App
Build for iOS
Restriction iOS は厳しい
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
C# DLL Executable IL C++ object Unity Editor Xcode compile
dis- assemble convert compile link Runtime AOT ▶ ▶
iOS C# スクリプト上も Reflection.Emit などの JIT に依存する API は利用できない 実際には書けてビルドも出来るけど
実行時にエラーを吐く
Build for WebGL おまけ
C# DLL Javascript IL C++ LLVM- IR Unity Editor emscripten
compile dis- assemble convert compile convert ▶ ▶
▶ いろいろやってる
1 is enough
Our Build Problem ▶ ▶ それでも困ること
Build Target
“What’s that ?” “I know !”
Build Target - app name - icons - bundle ID
- provisioning profile - versions - run scripts - define symbols 開発用の リリース用の 外部会社に見せる用の 実験的機能開発用の 定期配信する安定版用の
Build Target ☓ ✓ compile option project settings
Solution どうすればいいの?
Solution 1. Knowing Xcode settings 2. Knowing Unity build
Knowing Xcode settings 1. Unity API 2. Info.plist (xml) 3.
project.pbxproj 3 things
Knowing Unity build 1. Preprocess / Postprocess 2. Unity Build
API 3. Applying timing 3 things
Unity build flow ▶ convert setting dto template setting files
apply Default
Unity build flow ▶ convert setting dto template Setting files
apply Preprocess load setting dto Postprocess apply modify modify Customized
iOS is OK ワタシ アイオーエス ビルド チョト デキル
More problems
To be continued…
Conclusion まとめ
Conclusion - コンパイルに関するメンテは稀 - ターゲットビルドの需要が多い - Unity はターゲットビルドに対応していない - Unity
の API で ある程度は対応できる - ビルドスクリプトを作成する必要がある - Android は大変
Enjoy Building ! Thank you !
None
Appendix
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 ▶
Things under Initialize mono Load Unity Define
symbols Compile sources Build Player Compile Assets Process IL2CPP Export Xcode project Post process ▶
Points Linker Flags SDK インストール時に要求されることがある Architectures サポート機種 (iPhone
5s 以上など) によって不要なものを削る Xcode environment variables dSYM を外したりなど C++ settings 他 PF 向けビルド設定と合わせるなど Run Script ビルド後の任意スクリプト処理
Problems 実機ビルドを行う場合は設定範囲が Xcode で完結しない ほとんどの項目が project.pbxproj で管理されている
Solution 実機ビルドを行う場合は設定範囲が Xcode で完結しない → Apple Developer Member Center
に関わる設定を PJ 発足初期に出来る限り固めておく ワイルドカードの App ID は非推奨 ほとんどの項目が project.pbxproj で管理されている → 局所的な設定の変更はPJの問題と割り切り汎用化を避ける Provisioning Profile の差し替えなどは対応する
Points Plugins プラグインのビルド設定 Define Symbols Release / Develop
等のビルドターゲット毎に変更する Scripting backend (mono / il2cpp) 開発時はビルドの速い mono にしたい、など External Project Android は Unity のサポートがほぼ皆無 Build Target ターゲット毎のビルド設定変更
Problems ビルドターゲット Xcode 新規バージョン追従 Third party SDK
Android gradle project (外部プロジェクト書き出し)
Solution ビルドターゲット → batchmode でビルドを行う際のパラメータで補完 Xcode 新規バージョン追従 → 待つしかない
どうしても対応が必要な場合は、PJ 個別で該当箇所のみ対応 Third party SDK → 外部プロジェクトからの Java/Obj-C SDK の利用を推奨 Android gradle project (外部プロジェクト書き出し) → Gradle プロジェクトテンプレートを作成した テンプレート上でアプリ固有の設定を編集するように統一