Version: 2021.1
Unity Remote
Android Keystore Manager

Android Player settings

This page details the Player settings specific to the Android platform. For a description of the general Player settings, see the Player settings.

Android Player settings
Android Player settings

Documentation for the properties is grouped according to their respective sections in the Player UI(User Interface) Allows a user to interact with your application. Unity currently supports three UI systems. More info
See in Glossary
:

Icon

The Icon section of the Android Player settings
The Icon section of the Android Player settings
Property Function
Adaptive Set up textures for the Android Adaptive icons in your app.
Round Set up textures for the Android Round icons in your app.
Legacy Set up textures for the Android Legacy icons in your app.
Enable Android Banner Enables a custom banner for Android TV builds.

Resolution and Presentation

Use the Resolution and Presentation section to customize aspects of the screen’s appearance.

Resolution and Presentation settings for the Android platform - Full Screen
Resolution and Presentation settings for the Android platform - Full Screen
Resolution and Presentation settings for the Android platform - Windowed
Resolution and Presentation settings for the Android platform - Windowed
Setting Function
Fullscreen Mode Choose the full-screen mode. This defines the default window mode at startup.
Fullscreen Window Set your app window to the full-screen native resolution of the display. Unity renders app content at the resolution set by script (or by user selection when the built application launches), but scales it to fill the window. When scaling, Unity adds black bars to the rendered output to match the aspect ratio chosen in the Player Settings, so that the content isn’t stretched. This process is called letterboxing.
In this mode the navigation bar is always hidden. This replaces the Start in fullscreen mode option.
Windowed Set your app to a standard, non-full-screen, movable window, the size of which is dependent on the app resolution. In this mode, the window is resizable by default. To disable this, disable the Resizable Window setting.
Default Window Width Set the default width of the application window in pixelsThe smallest unit in a computer image. Pixel size depends on your screen resolution. Pixel lighting is calculated at every screen pixel. More info
See in Glossary
. This option is only available if the Fullscreen Mode is set to Windowed.
Default Window Height Set the default height of the application window in pixels. This option is only available if the Fullscreen Mode is set to Windowed.
Minimum Window Width Set the minimum width of the application window in pixels. This option is only available if the Fullscreen Mode is set to Windowed.
Minimum Window Height Set the minimum height of the application window in pixels. This option is only available if the Fullscreen Mode is set to Windowed.
Resizable Window Enable this option to allow the user to resize the player window.
This option also enables multi-window capabilities in your application on Android phones and tablets. For more information, see Google’s developer documentation.
Render outside safe area Enable this option to allow rendering using all available screen space, including the display cutout (notch) area. For more information, see the display cutout support documentation on the Android developer website.
Optimized Frame Pacing Enable this option to allow Unity to evenly distribute frames for less variance in framerate, creating a smoother gameplay.

Other Resolution and Presentation properties are grouped under these sections:

Resolution Scaling

Resolution Scaling settings for the Android platform
Resolution Scaling settings for the Android platform
Setting Function
Resolution Scaling Mode Allows you to set the scaling to be equal to or below the native screen resolution.
FixedDPI Allows you to scale the device’s screen resolution below its native resolution and show the Target DPI property. Use this to optimize performance and battery life or target a specific DPI setting.
Disabled Ensures that scaling is not applied and the game renders to its native screen resolution.
Target DPI Set the resolution of the game screen. Unity downscales the game screen to match this setting if the device’s native screen DPI is higher than this value. The scale is calculated as min(Target DPI * Factor / Screen DPI, 1). The Factor is controlled by the Resolution Scaling Fixed DPI Factor on the Quality settings.
Note: This option only appears when the Resolution Scaling Mode is set to Fixed DPI.
Blit Type Controls whether a blitA shorthand term for “bit block transfer”. A blit operation is the process of transferring blocks of data from one place in memory to another.
See in Glossary
is used to render the final image to the screen.
Always (Always blit) Make Unity render to an offscreen buffer and then copy to the system framebuffer. This is compatible with most devices, but is usually slower than Never blitting.
Never (Never blit) Make Unity render to the framebuffer provided by the OS. If a condition arises during application run time that causes this to fail, the application will print a one-time warning to the device log. Never blitting is usually faster than Always blitting, but it’s not compatible with all devices.
Auto Make Unity render to the framebuffer provided by the OS, if possible. If a condition is met that prevents your application from rendering to the system framebuffer, the application switches to offscreen rendering and issues a warning to the device console.

Supported Aspect Ratio

Aspect Ratio Mode setting for the Android platform
Aspect Ratio Mode setting for the Android platform

Set the Aspect Ratio Mode for the device. You can choose from Legacy Wide Screen (1.86), Native Aspect Ratio, and Custom. When you choose Custom, the Up To field appears.

Set a custom maximum screen width with the Up To property. This property is only available when Aspect Ratio Mode is set to Custom.

Orientation

Default Orientation setting for the Android platform
Default Orientation setting for the Android platform

Choose the game’s screen orientation from the Default Orientation drop-down menu:

Setting Function
Portrait Home button appears at the bottom.
Portrait Upside Down Home button appears at the top.
Landscape Left Home button appears on the right side.
Landscape Right Home button appears on the left side.
Auto Rotation Allow the screen to automatically rotate to any of the orientations specified by the Allowed Orientations for Auto Rotation settings. This is the default.

Note: This setting is shared between iOSApple’s mobile operating system. More info
See in Glossary
and Android devices.

When you set the orientation to Auto Rotation, the Allowed Orientations for Auto Rotation section appears.

Allowed Orientations for Auto Rotation

This section is only visible when Default Orientation is set to Auto Rotation.

Allowed Orientations for Auto Rotation Player settings for the Android platform
Allowed Orientations for Auto Rotation Player settings for the Android platform

Because Auto Rotation changes screen orientation to match the device, you may want to limit the screen orientations allowed (for example, locking a device to landscape).

Enable each orientation you want to allow by checking its box in this section:

Setting Function
Portrait Allow portrait orientation.
Portrait Upside Down Allow portrait upside-down orientation.
Landscape Right Allow landscape right orientation (home button on the left side).
Landscape Left Allow landscape left orientation (home button is on the right side).

Other

Other Resolution and Presentation settings for the Android platform
Other Resolution and Presentation settings for the Android platform
Setting Function
Use 32-bit Display Buffer Enable this option to create a Display Buffer to hold 32-bit color values (16-bit by default). Use it if you see banding, or need alpha in your post-processed effects, because they create Render TexturesA special type of Texture that is created and updated at runtime. To use them, first create a new Render Texture and designate one of your Cameras to render into it. Then you can use the Render Texture in a Material just like a regular Texture. More info
See in Glossary
in the same format as the Display Buffer.
Disable Depth and Stencil Enable this option to disable the depth and stencil buffersA memory store that holds an 8-bit per-pixel value. In Unity, you can use a stencil buffer to flag pixels, and then only render to pixels that pass the stencil operation. More info
See in Glossary
.
Render Over Native UI Enable this option if you want Unity to render on top of native UI on Android or iOS. The cameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary
’s Clear Flags have to be set to Solid color with an alpha less than 1 for this to have any effect.
Show Loading Indicator Select how the loading indicator should appear. The options are Don’t Show, Large, Inversed Large, Small and Inversed Small.

Splash Image

Above the common Splash Screen settings, you can use the Virtual Reality Splash Image setting to specify a custom splash image for Virtual RealityA system that immerses users in an artificial 3D world of realistic images and sounds, using a headset and motion tracking. More info
See in Glossary
displays.

Splash Settings for the Android platform Player
Splash Settings for the Android platform Player

Below the common Splash Screen settings, you can set up an Android-specific Static Splash Image.

Use Storyboard for Launch Screen on the Android Player platform
Use Storyboard for Launch Screen on the Android Player platform

Use the Android Splash Screen property to specify the texture that should be used for the Android splash screen. The standard size for the splash screen image is 320x480.

Choose how you want Unity to scale the splash image to fit the device’s screen from the Splash Scaling drop-down menu. The options are:

  • Center (only scale down)
  • Scale to Fit (letter-boxed)
  • Scale to Fill (cropped)

Other Settings

This section allows you to customize a range of options organized into the following groups:

Rendering

Use these settings to customize how Unity renders your game for the Android platform.

Rendering settings for the Android platform
Rendering settings for the Android platform
Property Function
Color Space Choose which color space should be used for rendering: Gamma or Linear.
See the Linear rendering overview for an explanation of the difference between the two.
Auto Graphics API Disable this option to manually pick and reorder the graphics APIs. (OpenGL). By default this option is enabled, and Unity tries GLES3.2. If the device doesn’t support GLES3.2, Unity falls back to GLES3.1, GLES3 or GLES2. If only GLES3 is in the list, additional checkboxes appear: Require ES3.1, Require ES3.1+AEP and Require ES3.2. These allow you to force the corresponding graphics API.
Important: Unity adds the GLES3/GLES3.1/AEP/3.2 requirement to your Android manifest only if GLES2 is not in the list and the Minimum API Level is set to JellyBean (API level 18) or higher. In this case only, your application does not appear on unsupported devices in the Google Play Store.
Color Gamut You can add or remove color gamuts for the Android platform to use for rendering. Click the plus (+) icon to see a list of available gamuts. A color gamut defines a possible range of colors available for a given device (such as a monitor or screen). The sRGB gamut is the default (and required) gamut. When targeting devices with wide color gamut displays, use DisplayP3 to utilize full display capabilities.
Multithreaded Rendering Enable this option to move graphics API calls from Unity’s main thread to a separate worker thread. This can help to improve performance in applications that have high CPU usage on the main thread.
Static BatchingA technique Unity uses to draw GameObjects on the screen that combines static (non-moving) GameObjects into big Meshes, and renders them in a faster way. More info
See in Glossary
Enable this option to use Static batching on your build (enabled by default).
Dynamic BatchingAn automatic Unity process which attempts to render multiple meshes as if they were a single mesh for optimized graphics performance. The technique transforms all of the GameObject vertices on the CPU and groups many similar vertices together. More info
See in Glossary
Enable this option to use Dynamic Batching on your build (enabled by default).
Note: Dynamic batching has no effect when a Scriptable Render Pipeline is active, so this setting is visible only when no Scriptable Render Pipeline asset is set in Graphics Settings.
Compute Skinning Enable this option to use GPU compute skinningThe process of binding bone joints to the vertices of a character’s mesh or ‘skin’. Performed with an external tool, such as Blender or Autodesk Maya. More info
See in Glossary
, which frees up CPU resources. Compute Skinning is supported on devices that support OpenGL ES 3.1 or Vulkan. To learn more about GPU compute skinning, see the Wikipedia page on skeletal animation.
Graphics Jobs Enable this option to instruct Unity to offload graphics tasks (render loops) to worker threads running on other CPU cores. This reduces the time spent in Camera.Render on the main thread, which is often a bottleneck.
Note: Unity currently only supports Graphics Jobs when using Vulkan and this setting has no effect when using OpenGL ES.
Normal Map Encoding Choose XYZ or DXT5nm-style to set the normal mapA type of Bump Map texture that allows you to add surface detail such as bumps, grooves, and scratches to a model which catch the light as if they are represented by real geometry.
See in Glossary
encoding. This affects the encoding scheme and compressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression, Animation Compression, Audio Compression, Build Compression.
See in Glossary
format used for normal maps. DXT5nm-style normal maps are of higher quality, but more expensive to decode in shadersA program that runs on the GPU. More info
See in Glossary
.
Lightmap Encoding Choose Low Quality, Normal Quality, or High Quality to set the lightmap encoding. This setting affects the encoding scheme and compression format of the lightmapsA pre-rendered texture that contains the effects of light sources on static objects in the scene. Lightmaps are overlaid on top of scene geometry to create the effect of lighting. More info
See in Glossary
.
Lightmap Streaming Enabled Enable this option to load only the lightmap mipmaps when needed. To render the current game Cameras, Unity applies this value to the lightmap textures when it generates the textures.
Note: To use this value, enable the Texture Streaming Quality setting.
Streaming Priority Define the lightmap mipmap streaming priority when there’s contention for resources. The valid range is –127 to 128, where a positive number represents higher priority. This setting is only available when Lightmap Streaming Enabled is checked. To use this value, enable the Texture Streaming Quality setting.
Protect Graphics Memory Check this box to force the graphics buffer to be displayed only through a hardware-protected path. Works only on devices which support it.
Enable Frame Timing Stats Gather statistics on how much time a frame takes on the CPU and GPU.

Vulkan Settings

Vulkan Player settings for the Android platform
Vulkan Player settings for the Android platform
Property Function
SRGB Write Mode Enable this option to allow Graphics.SetSRGBWrite() on Vulkan renderer to toggle the sRGB write mode during the frame. Enabling this has a negative impact on performance.
Number of swapchain buffers Set this option to 2 for double-bufferin, or 3 for triple-buffering. Double-buffering might have a negative impact on performance.
Acquire swaichain image late as possible Enable this option to acquire the backbuffer image right before the image is presented. This might improve performance if double-buffering is selected, but should otherwise be avoided on Android because it introduces additional memory bandwidth costs.
Apply display rotation during rendering Enable this to perform all rendering in the native orientation of the display. This has a performance benefit on many devices. For more information, see documentation on Vulkan swapchain pre-rotation.

Identification

Identification settings for the Android platform
Identification settings for the Android platform
Property Function
Package Name Set the application ID, which uniquely identifies your app on the device and in Google Play Store. The basic structure of the identifier is com.CompanyName.AppName, and can be chosen arbitrarily. This setting is shared between iOS and Android.
Version Enter the build version number of the bundle, which identifies an iteration (released or unreleased) of the bundle. The version is specified in the common format of a string containing numbers separated by dots (eg, 4.3.2). (Shared between iOS and Android.)
Bundle Version Code An internal version number. This number is used only to determine whether one version is more recent than another, with higher numbers indicating more recent versions. This is not the version number shown to users; that number is set by the versionName attribute. The value must be set as an integer, such as “100”. You can define it however you want, as long as each successive version has a higher number.

For example, it could be a build number. Or you could translate a version number in “x.y” format to an integer by encoding the “x” and “y” separately in the lower and upper 16 bits. Or you could simply increase the number by one each time a new version is released.

Keep this number under 100000 if Split APKs by target architecture is enabled. Each APK must have a unique version code so Unity adds 100000 to the number for ARMv7, and 200000 for ARM64.
Minimum API Level Minimum Android version (API level) required to run the application.
Target API Level Target Android version (API level) against which to compile the application.

Configuration

Configuration settings for the Android platform
Configuration settings for the Android platform
Setting Function
Scripting BackendA framework that powers scripting in Unity. Unity supports three different scripting backends depending on target platform: Mono, .NET and IL2CPP. Universal Windows Platform, however, supports only two: .NET and IL2CPP. More info
See in Glossary
Choose the scripting backend you want to use. The scripting backend determines how Unity compiles and executes C# code in your Project.
Mono Compiles C# code into .NET Common Intermediate Language (CIL) and executes that CIL using a Common Language Runtime. See the Mono Project website for more information.
IL2CPP Compiles C# code into CIL, converts the CIL to C++ and then compiles that C++ into native machine code, which executes directly at run time. See 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
for more information.
API Compatibility Level Choose which .NET APIs can be used in your project. This setting can affect compatibility with 3rd-party libraries.
Tip: If you are having problems with a third-party assembly, you can try the suggestion in the API Compatibility Level section below.
.Net 2.0 .Net 2.0 libraries. Maximum .net compatibility, biggest file sizes. Part of the deprecated .NET 3.5 runtime.
.Net 2.0 Subset Subset of full .net compatibility, smaller file sizes. Part of the deprecated .NET 3.5 runtime.
.Net Standard 2.0 Compatible with .NET Standard 2.0. Produces smaller builds and has full cross-platform support.
.Net 4.x Compatible with the .NET Framework 4 (which includes everything in the .NET Standard 2.0 profile as well as additional APIs). Choose this option when using libraries that access APIs not included in .NET Standard 2.0. Produces larger builds and any additional APIs available are not necessarily supported on all platforms. See Referencing additional class library assemblies for more information.
C++ Compiler Configuration Choose the C++ compiler configuration used when compiling IL2CPP generated code.
Note: This property is disabled unless Scripting Backend is set to IL2CPP.
Use incremental GC Use the incremental garbage collector, which spreads garbage collection over several frames to reduce gc-related spikes in frame duration.
Mute Other Audio Sources Enable this option if you want your Unity application to stop Audio from applications running in the background. Otherwise, Audio from background applications continues to play alongside your Unity application.
Target Architectures Select which CPUs you want to allow the application to run on (32-bit ARM, 64-bit ARM, 32-bit x86, and 64-bit x86–64).
Note: Running Android apps in a 64-bit environment has performance benefits and 64-bit apps can address more than 4 GB of memory space.
Split APKs__ by target architecture (Experimental)__ Enable this option to create a separate APK for each CPU architecture selected in Target Architectures. This makes download size smaller for Google Play Store users. This is primarily a Google Play store feature and may not work in other stores. For more details, refer to Multiple APK Support.
Target Devices Specifies the target devices on which the APK is allowed to run.
All Devices The APK is allowed to run on all Android and Chrome OS devices.
Phones and Tablets Only The APK is allowed to run on Android phones and tablets, but not on Chrome OS devices.
Chrome OS Devices Only The APK is allowed to run on Chrome OS devices, but not on Android phones or tablets.
Install Location Specifies application install location on the device (for detailed information, refer to Android Developer documentation on install locations.
Automatic Let the operating system decide. User will be able to move the app back and forth.
Prefer External Install the application to external storage (SD card) if possible. The operating system doesn’t guarantee it; if not possible, the app will be installed to internal memory.
Force Internal Force the application to be installed to internal memory. The user will be unable to move the app to external storage.
Internet Access Choose whether to always add the networkingThe Unity system that enables multiplayer gaming across a computer network. More info
See in Glossary
(INTERNET) permission to the Android manifest, even if you are not using any networking APIs. Set to Require by default for development buildsA development build includes debug symbols and enables the Profiler. More info
See in Glossary
.
Auto Only add the internet access permission if you are using a networking API.
Require Always add the internet access permission.
Write Permission Choose whether to enable write access to the external storage (such as the SD card) and add a corresponding permission to the Android manifest. Set to External(SDCard) by default for development builds.
Internal Only grant write permission to internal storage.
External(SDCard) Enable write permission to external storage.
Filter Touches When Obscured Enable this option to discard touches received when another visible window is covering the Unity application. This is to prevent tapjacking.
Sustained Performance Mode Enable this option to set a predictable and consistent level of device performance over longer periods of time, without thermal throttling. Overall performance might be lower when this setting is enabled. Based on the Android Sustained Performance API.
Maximum Java Heap Size Set the maximum Java heap size to user for building (in megabytes). Defaults to 4096.
Low Accuracy Location Enable this option to use low accuracy values with Android location APIs instead.
Android TV Compatibility Enable this option to mark the application as Android TV compatible.
Android Game Enable this option to mark the output package (APK) as a game rather than a regular application.
Android Gamepad Support Level Choose the level of support your application offers for a gamepad. The options are Works with D-Pad, Supports Gamepad, and Requires Gamepad.
Chrome OS Input Emulation Chrome OS’s default behaviour is to convert mouse and touchpad input events into touchscreen input events. Un-check this setting to disable the default behavior.
Warn about App Bundle size Enable this option to receive a warning when the size of the Android App Bundle exceeds a certain threshold. This option is selected by default and you can only configure it if you enable the Build App Bundle (Google Play) option in the Build settings.
App Bundle size threshold Enter a size in Mb. When your App Bundle exceeds this size, Unity will display a warning.
Input Manager Use the traditional Input settings.
Input System (Preview) Use the newer Input system. The Input System is provided as a preview packageA preview package is in development and not yet ready for production. A package in preview might be at any stage of development, from the initial stages to near completion.
See in Glossary
for this release. To try a preview of the Input System, install the InputSystem package.
Both Use both systems side by side.

API Compatibility Level

You can choose your mono API compatibility level for all targets. Sometimes a 3rd-party .NET library uses functionality that is outside of your .NET compatibility level. In order to understand what is going on in such cases, and how to best fix it, try following these suggestions:

  1. Install Reflector for Windows.
  2. Drag the .NET assemblies for the API compatibility level you are having issues with into Reflector. You can find these under Frameworks/Mono/lib/mono/YOURSUBSET/.
  3. Drag in your 3rd-party assembly.
  4. Right-click your 3rd-party assembly and select Analyze.
  5. In the analysis report, inspect the Depends on section. The report highlights anything that the 3rd-party assembly depends on, but that is not available in the .NET compatibility level of your choice in red.

Script Compilation

Script compilation settings for the Android platform
Script compilation settings for the Android platform
Setting Function
Scripting Define Symbols Set custom compilation flags. For more details, see the documentation on Platform dependent compilation.
Additional Compiler Arguments Add entries to this list to pass additional arguments to the Roslyn compiler. Use one new entry for each additional argument.
To create a new entry, press the ‘+’ button. To remove an entry, press the ‘-’ button.
When you have added all desired arguments, click the Apply button to include your additional arguments in future compilations.The Revert button resets this list to the most recent applied state.
Suppress Common Warnings Disable this setting to display the C# warnings CS0169 and CS0649.
Allow ‘unsafe’ Code Enable support for compiling ‘unsafe’ C# code in a pre-defined assembly (for example, Assembly-CSharp.dll).
For Assembly Definition Files (.asmdef), click on one of your .asmdef files and enable the option in the Inspector window that appears.
Use Deterministic Compilation Disable this setting to prevent compilation with the -deterministic C# flag. With this setting enabled, compiled assemblies are byte-for-byte identical each time they are compiled.
For more information, see Microsoft’s deterministic compiler option documentation.
Enable Roslyn Analyzers Disable this setting to compile user-written 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
without Roslyn analyzer DLLs that might be present in your project.
Use Roslyn Reference Assemblies Disable this setting to the compiler not to skip compilation reference assemblies when the metadata of the assembly does not change.

Optimization

Optimization settings for the Android platform
Optimization settings for the Android platform
Setting Function
Prebake CollisionA collision occurs when the physics engine detects that the colliders of two GameObjects make contact or overlap, when at least one has a Rigidbody component and is in motion. More info
See in Glossary
Meshes
Enable this option to add collision data to Meshes at build time.
Keep Loaded Shaders Alive Enable this option to prevent shaders from being unloaded.
Preloaded Assets Set an array of Assets for the player to load on startup.
To add new Assets, increase the value of the Size property and then set a reference to the Asset to load in the new Element box that appears.
Strip Engine Code (IL2CPP only) Specify whether the Unity Linker tool removes code for Unity Engine features that your Project doesn’t use.
Managed Stripping Level Defines how aggressively Unity strips unused managed (C#) code.
When Unity builds your game or application, the Unity Linker process can strip unused code from the managed dynamically linked libraries used in the project. Stripping code can make the resulting executable significantly smaller, but can sometimes mistakenly remove code that is actually used. This setting allows you to choose how aggressively Unity should remove unused code.
Disabled (Mono only) Do not strip any code. (Managed code stripping is always enabled when using IL2CPP.)
Normal Remove unreachable managed code to reduce build size and Mono/IL2CPP build times.
Aggressive (Experimental) Remove code more aggressively than under the Normal option. Code size is further reduced, but this additional reduction may have side effects. For example, some methods may no longer be visible in the debugger and code accessed through reflection can be stripped. You can create a custom link.xml file to preserve specific classes and methods. See Managed bytecode stripping with IL2CPP for more information.
Enable Internal profilerA window that helps you to optimize your game. It shows how much time is spent in the various areas of your game. For example, it can report the percentage of time spent rendering, animating, or in your game logic. More info
See in Glossary (Deprecated)
Enable this option to get the profiler data from your device in the Android SDK’s adblogcat output while testing your projects. This is only available in development builds.
Script Call Optimization Choose how to optionally disable exception handling for a speed boost at runtime. See iOS Optimization for details.
Slow and Safe Use full exception handling (with some performance impact on the device when using the Mono scripting backend).
Fast but no Exceptions No data provided for exceptions on the device (the game runs faster when using the Mono scripting backend).
Note: If you use this option with the IL2CPP Scripting Backend it won’t impact performance; however, using it can avoid undefined behavior on release builds.
Vertex Compression Set vertex compression per channel. For example, you can enable compression for everything except positions and lightmap UVs. Whole MeshThe main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info
See in Glossary
compression set per imported object overrides where vertex compression is set on objects. Everything else obeys these vertex compression settings.
Optimize Mesh Data Enable this option to remove any data from Meshes that is not required by the Material applied to them (such as tangents, normals, colors, and UVs).

Logging

Select what type of logging to allow in specific contexts.

Logging settings for Android platform
Logging settings for Android platform

Check one box that corresponds to each Log Type (Error, Assert, Warning, Log, and Exception) when running scripts (ScriptOnly) , all the time (Full), or never (None).

Legacy

Enable the Clamp BlendShapes (Deprecated) option to clamp the range of blend shape weights in SkinnedMeshRenderers.

Legacy settings for the Android platform
Legacy settings for the Android platform

Publishing Settings

Use the Publishing Settings to configure how Unity builds your Android app. To open the Publishing Settings, go to Edit > Project Settings, select Player, select the Android icon, and open the Publishing Settings panel.

This section describes the different parts of the Publishing Settings panel and what they do. These include:

Project Keystore
Project Key
BuildThe process of compiling your project into a format that is ready to run on a specific platform or platforms. More info
See in Glossary

Minify
Split Application Binary

Android publishing panel
Android publishing panel

Note: For security reasons, Unity doesn’t save your KeystoreAn Android system that lets you store cryptographic key entries for enhanced device security. More info
See in Glossary
or Project Key passwords.

Use the Keystore Manager window to create, configure and load your keys and keystores. You can load existing keystores and keys from either the Keystore Manager or the main Android Publishing panel. If you choose to load these from inside the Keystore Manager, Unity automatically fills the Project Keystore and Project Key fields.
For further information see documentation on the Keystore Manager.

Project Keystore

A keystore is a container that holds signing keys for application security. For details, see Android developer documentation: Android keystore system.

Use the Project Keystore settings to choose which keystore to use for the open project. When you load a keystore, Unity loads all of the keys in that keystore. To load and use an existing keystore in your open project:

  1. Enable Custom Keystore.
  2. Open the Select dropdown, select Browse, and choose a keystore from your file system.
  3. Enter your Keystore password.

If you don’t have an existing keystore, leave Custom Keystore disabled.

Unity uses a debug keystore to sign your application. A debug keystore is a working keystore. It allows you to sign the application and to test it locally. However, the app store will decline apps signed in this way. This is because the app store is unable to verify the validity and ownership of the application using a debug keystore.

Property Description
Custom Keystore Enable Custom Keystore to load and use an existing Keystore.
Select When Custom Keystore is enabled, use this to select the keystore you want to use. The keystores below the partition in the Select dropdown are stored in a predefined dedicated location. For more details, see Choosing your keystore location.
Path You do not need to enter your keystore path. Unity provides this based on the keystore you choose.
Password Enter your keystore password to load your chosen keystore.

Project Key

When you load a keystore, Unity loads all of the keys in that keystore. Use the Project Key settings to choose one key from that keystore to use as the active key for the open project.

Property Description
Alias Select the key you want to use for the open project.
Password Enter your key Password.

Build

By default, Unity builds your application with the Android manifests, GradleAn Android build system that automates several build processes. This automation means that many common build errors are less likely to occur. More info
See in Glossary
templates and Proguard files provided with the Unity installation. Use the Build section of the Android Publishing Settings to change these.

To use a custom Android manifest, Gradle template or Proguard file:

  1. Enable the appropriate checkbox. Unity creates a default file in your project, and the file location appears below the checkbox.
  2. Open the new file and make your changes.
  3. Save your changes to this file. Unity automatically uses the changes saved to this file next time it builds the application.

The settings in the Build section only apply to the build process for the current project.

Property Description
Custom Main Manifest Customisable version of the Android LibraryManifest.xml file. This file contains important metadata about your Android application. For further information about the responsibilities of the Main/Library Manifest see documentation on Android Manifest.
Custom Launcher Manifest Customisable version of the Android LauncherManifest.xml file. This file contains important metadata about your Android application’s launcher. For further information about the responsibilities of the Launcher Manifest see documentation on Android Manifest.
Custom Main Gradle Template Customisable version of the mainTemplate.gradle file. This file contains information on how to build your Android application as a library. For further information see documentation on Providing a custom Gradle Template.
Custom Launcher Gradle Template Customisable version of the launcherTemplate.gradle_ file. This file contains instructions on how to build your Android application. For further information see documentation on build.gradle templates.
Custom Base Gradle Template Customisable version of the baseProjectTemplate.gradle file. This file contains configuration that is shared between all other templates and Gradle projects. For further information see documentation on build.gradle templates.
Custom Gradle Properties Template Customisable version of the gradle.properties file. This file contains configuration settings for the Gradle build environment. This includes:
- The JVM (Java Virtual Machine) memory configuration.
- A property to allow Gradle to build using multiple JVMs.
- A property for choosing the tool to do the minification.
- A property to not compress native libs when building an app bundle.
Custom Proguard File Customisable version of the proguard.txt file. This file contains configuration settings for the minification process. If minification removes some Java code which should be kept, you should add a rule to keep that code in this file. For further information see documentation on Minification.

Minify

Minification is a process which shrinks, obfuscates and optimises the code in your application. It can reduce the code size and make the code harder to disassemble. Use the Minify settings to define when and how Unity should apply minification to your build.

In most cases, it’s good practice to only apply minification to release builds, and not debug builds. This is because minification takes time, and can make the builds slower. It can also make debugging more complicated due to the optimisation that the code undergoes.

The settings in the Minify section only apply to the build process for the current project.

Property Description
Use R8 By default, Unity uses Proguard for minification. Enable this checkbox to use R8 instead.
Release Enable this checkbox if you want Unity to minify your application’s code in release builds.
Debug Enable this checkbox if you want Unity to minify your application’s code in debug builds.

Split Application Binary

Enable the Split Application Binary option to split your output package into main (APK) and expansion (OBB) packages. The Google Play Store requires this if you want to publish applications larger than 100 MB.

XR Settings

Note: Built-in support for XRAn umbrella term encompassing Virtual Reality (VR), Augmented Reality (AR) and Mixed Reality (MR) applications. Devices supporting these forms of interactive applications can be referred to as XR devices. More info
See in Glossary
SDKs is deprecated and will be retired in a future version of Unity. Use the Unity XR Plug-inA 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
System instead. For more information, see XR Plug-in Architecture.

XR Settings for the Android Player
XR Settings for the Android Player
Setting Function
Virtual Reality Supported Enable this if your application is a virtual reality application, then add the required VR SDKs to the list.
Virtual Reality SDKs Add and remove Virtual Reality SDKs from the list. This list is only available when the Virtual Reality Supported is enabled.
To add an SDK to the list, click the plus (+) button.
To remove an SDK from the list, select it and then click the minus (-) button.
Some of the SDKs provide extra settings that appear here. For details, see XR SDKs.
Stereo Rendering Mode Choose how you want to render for a virtual reality device.
Multi Pass This is the normal rendering mode. Unity renders the SceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
twice: first to render the left-eye image; and then again for the right-eye image.
Single Pass Multiview or Instanced (Preview) Render both eye images at the same time into one packed Render Texture. This means that the whole Scene is only rendered once, which significantly reduces CPU processing time.



  • Updated features in 5.5
  • Sustained Performance Mode added in 2017.3
  • .NET 4.x runtime added in 2018.1
  • Android Multiple APK features added in 2018.2
  • OpenGL ES 3.2 support for Android added in 2019.1 NewIn20191
  • Input System preview added in Unity 2019.1
  • Render outside safe area added in Unity 2019.1
  • Warn about App Bundle size option added in Unity 2019.2
  • GPU Skinning renamed to Compute Skinning in Unity 2019.3
  • Vuforia removed in Unity 2019.3
  • Support for built-in XR SDKs deprecated in Unity 2019.3.NewIn20193
Unity Remote
Android Keystore Manager