Getting started with Android
How Unity builds Android applications
Unity uses Gradle to build Android applications so it is useful to understand the build process and how Unity interacts with Gradle. Gradle lets you use Player Settings and other Unity windows to configure most aspects of the final build, however for more control, you must overwrite manifest and template files, or export your project and edit it in Android Studio.
The build process
To build Android applications:
- Unity collects project resources, code libraries, plug-ins, Gradle templates, and manifest templates from your Unity project and uses them to create a valid Gradle project.
- Unity adds and updates values inside Gradle templates and manifest files based on the Unity project’s Player Settings and Build Settings.
- If you chose to export the project and not build it, and use the IL2CPP scripting backend, Unity places C++ source files produced from your C# scripts into the Gradle project. Otherwise, if you chose to build the project, Unity places the
libil2cpp.so
library into the Gradle project.
- Unity calls OnPostGenerateGradleAndroidProject for all IPostGenerateGradleAndroidProject interfaces. You can use this callback to modify or move files before Gradle builds the application.
- Unity runs Gradle to build the application from the Gradle project. Gradle merges the Unity Library Manifest, Unity Launcher Manifest, and plug-in manifests into one Android App Manifest file.
Incremental build pipeline
Unity uses the incremental build pipeline when it builds the Player for Android. See the following Android-specific incremental build pipeline behaviors:
- Unity incrementally builds/generates:
- Unity incrementally copies:
- Player binaries
- Gradle resources
- The last step in the build process is to run Gradle. From this point, the build process doesn’t use the incremental build pipeline and it’s up to Gradle to track dependencies.
If you implement callbacks that modify or move any Android file or asset that the incremental build pipeline uses, see Creating non-incremental builds.
Getting started with Android