Version: 2021.3
Language : English
iOS requirements and compatibility
Structure of a Unity Xcode project

How Unity builds iOS applications

Unity uses Xcode to build iOSApple’s mobile operating system. More info
See in Glossary
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

  1. Unity collects project resources, code libraries, and plug-insA set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More info
    See in Glossary
    from your Unity project and uses them to create a valid Xcode project.
  2. Unity updates the Xcode project based on the Unity project’s Player settingsSettings that let you set various player-specific options for the final game built by Unity. More info
    See in Glossary
    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.
  3. Unity generates C++ source files based on your C# scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
    See in Glossary
    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.
  4. 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 non-incremental builds.

Additional resources

iOS requirements and compatibility
Structure of a Unity Xcode project