iOS requirements and compatibility
How Unity builds iOS applications
Unity uses Xcode to build iOS applications. You can use iOS Player settings to configure most aspects of the final build. However, for more granular control, building an Xcode project allows you to directly modify Xcode project files.
The build process
- Unity collects project resources, code libraries, and plug-ins from your Unity project and uses them to create a valid Xcode project.
- Unity updates the Xcode project based on the Unity project’s Player settings and build settings. Depending on whether you use replace or append mode, Unity replaces or preserves previous changes you made. Append mode preserves changes you previously made and only overwrites certain values. Replace mode creates a new project which overwrites any changes you previously made.
- Unity generates C++ source files based on your C# scripts and places them in the generated Xcode project. Xcode then invokes the IL2CPPA Unity-developed scripting back-end which you can use as an alternative to Mono when building projects for some platforms. More info
See in Glossary program which compiles the C++ source files into libraries called libGameAssembly.a and il2cpp.a.
- Xcode builds the project into a standalone application and deploys and launches it on a connected device or the Xcode simulator.
Incremental build pipeline
Unity uses the incremental build pipeline when it generates the Xcode project for iOS. This means that Unity incrementally builds and generates files such as Information Property List (plist) files and Entitlement files. If you implement callbacks that modify or move any iOS file or asset that the incremental build pipeline uses, refer to Creating clean builds.
Additional resources
iOS requirements and compatibility