Android 4.1 support

I searched for useful information in the “Editor\Data\PlaybackEngines\AndroidPlayer” files and was able to find files with the following contents:

platforms.mk:

NDK_MIN_PLATFORM_LEVEL := 16
NDK_MAX_PLATFORM_LEVEL := 30
NDK_PLATFORM_ALIAS_20 := android-19
NDK_PLATFORM_ALIAS_25 := android-24
NDK_PLATFORM_ALIAS_J := android-16
NDK_PLATFORM_ALIAS_J-MR1 := android-17
NDK_PLATFORM_ALIAS_J-MR2 := android-18
NDK_PLATFORM_ALIAS_K := android-19
NDK_PLATFORM_ALIAS_L := android-21
NDK_PLATFORM_ALIAS_L-MR1 := android-22
NDK_PLATFORM_ALIAS_M := android-23
NDK_PLATFORM_ALIAS_N := android-24
NDK_PLATFORM_ALIAS_N-MR1 := android-24
NDK_PLATFORM_ALIAS_O := android-26
NDK_PLATFORM_ALIAS_O-MR1 := android-27
NDK_PLATFORM_ALIAS_P := android-28
NDK_PLATFORM_ALIAS_Q := android-29
NDK_PLATFORM_ALIAS_R := android-30

platforms.cmake:

set(NDK_MIN_PLATFORM_LEVEL "16")
set(NDK_MAX_PLATFORM_LEVEL "30")
set(NDK_PLATFORM_ALIAS_20 "android-19")
set(NDK_PLATFORM_ALIAS_25 "android-24")
set(NDK_PLATFORM_ALIAS_J "android-16")
set(NDK_PLATFORM_ALIAS_J-MR1 "android-17")
set(NDK_PLATFORM_ALIAS_J-MR2 "android-18")
set(NDK_PLATFORM_ALIAS_K "android-19")
set(NDK_PLATFORM_ALIAS_L "android-21")
set(NDK_PLATFORM_ALIAS_L-MR1 "android-22")
set(NDK_PLATFORM_ALIAS_M "android-23")
set(NDK_PLATFORM_ALIAS_N "android-24")
set(NDK_PLATFORM_ALIAS_N-MR1 "android-24")
set(NDK_PLATFORM_ALIAS_O "android-26")
set(NDK_PLATFORM_ALIAS_O-MR1 "android-27")
set(NDK_PLATFORM_ALIAS_P "android-28")
set(NDK_PLATFORM_ALIAS_Q "android-29")
set(NDK_PLATFORM_ALIAS_R "android-30")

platforms.json:

{
  "min": 16,
  "max": 30,
  "aliases": {
    "20": 19,
    "25": 24,
    "J": 16,
    "J-MR1": 17,
    "J-MR2": 18,
    "K": 19,
    "L": 21,
    "L-MR1": 22,
    "M": 23,
    "N": 24,
    "N-MR1": 24,
    "O": 26,
    "O-MR1": 27,
    "P": 28,
    "Q": 29,
    "R": 30
  }
}

Also in the “Editor\Data\PlaybackEngines\AndroidPlayer\NDK\platforms” folder I found the corresponding folders. Based on what I found, I can assume that theoretically Unity can support Android API 16, i.e. Android 4.1 Jelly Bean. But in Player Settings there is only a minimum of API 22.

Actually, the question itself: is there any way to activate this API 16?

I realize that many of its users have old smartphones and tablets on Android 4, I myself have a lot of them. I also have a BlackBerry Passport with Android 4.3 support and I would be very interested in running my games on it…
I think for fans of old Android devices this topic might be interesting…

I mean you can export gradle project and change to whatever min api level you like from gradle project, and it might even run on the phone, but:

  • You might get a runtime exception on Android 4.3, where Unity calls Java API level which is available only starting from API 22
  • If your application crashes on Android 4.3, and it’s a Unity bug, Unity won’t be fixing such bugs, since officially we don’t support such API level.