Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


GameActivity requirements and compatibility

Understand the system requirements and feature compatibility of the GameActivity application entry point.
Read time 2 minutesLast updated a day ago

Refer to the following system requirements and compatibility information before using the GameActivity application entry point in your Unity Android project.

Unity and GameActivity library version compatibility

The following table lists the recommended GameActivity library version for the latest supported patch release of each Unity version.

Unity version

GameActivity library version

6000.3 and later4.4.0
6000.04.4.2
Important
Do not use GameActivity library versions earlier than 4.4.x, such as 3.0.x and 2.0.x versions. These versions cause critical issues, including application not responding (ANR) errors. To update the GameActivity library, update your Unity Editor to 6000.3.13f1 or later.
Do not use the Update the GameActivity library instructions to update to a newer major version of the GameActivity library manually. Those instructions apply only to updates within the same major version of the GameActivity library. Updating across major versions requires Unity engine changes that you can't perform manually.

Dependencies

GameActivity requires the following dependencies:
  • CMake build system
  • AndroidX

CMake

GameActivity uses CMake to produce the bridge code (
libgame.so
) during the build process.
Note
If you provide a custom Android SDK, be sure the SDK has CMake 3.22.1 included.

AndroidX

GameActivity requires the following AndroidX Gradle dependencies:
  • androidx.appcompat:appcompat
  • androidx.games:games-activity
  • androidx.core:core
  • Androidx.constraintlayout
Gradle installs AndroidX and these dependencies automatically.

Plug-in compatibility

If you use GameActivity, your application player loop runs on a native thread rather than a Java thread. This means that calling Java APIs like myLooper from plug-ins will fail. In the case of
myLooper
it's because there's no Java looper present on the native thread. This also means that any API that uses APIs such as
myLooper
will also fail. For example, registerInputDeviceListener will fail if the handler is null. It's important to understand this limitation when you create Android plug-ins.

Choreographer

If you use GameActivity, Unity tries to use the NDK choreographer to synchronize frame times. If the Device API Level is lower than 24, or your application uses a 32-bit Player and the Device API Level is lower than 29, Unity uses the Java choreographer.

Additional resources