Google Play closed testing for Godot games
Godot doesn't change Google's rule. If your Play Console account is a personal account created after November 13, 2023, you must run a closed test with at least 12 testers opted in for 14 continuous days before you can apply for production access (Play Console Help).
What Godot changes is how you get a bundle Google accepts. An AAB needs the Gradle build template, the target SDK depends on your exact Godot version, the release keystore has a password quirk, and a permission that debug exports add for you disappears in release. For the rule and every Play Console screen, start with the Google Play closed testing guide.
Step 1: Check what your Godot version targets
Since August 31, 2026, new apps and app updates must target Android 16 (API level 36) or higher. Wear OS and Android Automotive OS apps need API 35, Android TV and Android XR apps API 34 (Play Console Help).
Godot's default target SDK lives in the engine's Android template. Checked in Godot's source on November 9, 2026:
| Godot version | Default target SDK |
|---|---|
| 4.7, 4.7.1, 4.7.2 (latest stable, August 18, 2026) | 36 (source) |
| 4.6.3 | 36 |
| 4.6 to 4.6.2, 4.5.x | 35 (source) |
| 3.6.3 | 36 (source) |
Release dates come from Godot's releases page. The default minimum SDK is 24 from Godot 4.5 to 4.7.
If you're on a version that defaults to 35, upgrade. You can also type 36 in the export preset's Target SDK field (gradle_build/target_sdk), but Godot only accepts that override with the Gradle build, and warns when the value is higher than the version it was tested with (source). The target API 36 guide lists what to retest after the bump.
Step 2: Set up the Android SDK and the editor
Godot's docs ask for OpenJDK 17 and the Android SDK with Platform-Tools, Build-Tools, an SDK Platform, the command-line tools, CMake and the NDK. Then, in Editor Settings, set Java SDK Path and Android SDK Path (Godot docs).
One mismatch to know: the docs page, checked on November 9, 2026, still lists SDK Platform 35 and Build-Tools 35.0.1, while the 4.7.2 template compiles against SDK 36 with Build-Tools 36.1.0 (source). Install the 36 packages in Android Studio's SDK Manager as well.
Step 3: Install the Gradle build template
Godot's docs are direct: all new apps uploaded to Google Play after August 2021 must be AABs, and "to export an AAB file you need to set up Gradle builds for Android" (Godot docs).
- Download the export templates for your exact Godot version.
- In the Project menu, install the Android build template. Godot creates a Gradle project under
res://android/build(Godot docs). - In Project > Export, select your Android preset and enable Use Gradle Build.
- Set Export Format to Export AAB.
Godot blocks the export if you pick AAB without the Gradle build: "Export AAB" is only valid when "Use Gradle Build" is enabled (source).
After every Godot upgrade, reinstall the template. Otherwise the export stops with "Android build version mismatch", followed by the installed and requested versions and "Please reinstall Android build template from 'Project' menu" (same source). When the Target SDK field is empty, the value comes from that installed template, so an old template keeps an old target.
Watch your folder names: with the Gradle build, assets inside a folder whose name starts with an underscore aren't included (Godot docs).
Step 4: Create a release keystore
Google Play needs a non-debug keystore. Godot's docs give the command (Godot docs):
keytool -v -genkey -keystore mygame.keystore -alias mygame -keyalg RSA -validity 10000Then, in the Android export preset:
- Release: path to the keystore.
- Release User: the key alias.
- Release Password: the key password. Godot's docs say the keystore password and the key password "currently have to be the same". They also suggest letters and numbers only, because special characters may cause errors.
Uncheck Export With Debug before exporting. For CI, Godot reads GODOT_ANDROID_KEYSTORE_RELEASE_PATH, GODOT_ANDROID_KEYSTORE_RELEASE_USER and GODOT_ANDROID_KEYSTORE_RELEASE_PASSWORD, so the password stays out of export_presets.cfg.
Back up the keystore and its password. With Play App Signing, Google can reset a lost upload key, but an app signing key you manage yourself can't be reset (Play Console Help).
Step 5: Package name and version code
Package > Unique Name is your package name. Godot's class reference notes that on Google Play it must be globally unique, and that changing it creates a new package that can't update existing installations (Godot docs). Don't ship with the $genname placeholder unless you're happy with the result.
Version > Code "must be incremented for every new release pushed to the Play Store". It starts at 1. Version > Name is the string players see, and falls back to your project's version setting if empty (Godot docs). Google Play's maximum is 2,100,000,000 (Play Console Help). You'll ship fixes during the 14 days, so raise it each time.
Step 6: Architectures and 16 KB pages
In Godot 4.7.2, only arm64-v8a is enabled by default in a new Android preset (source). Keep it on: it's the 64-bit build Google Play needs. Add armeabi-v7a if you want older 32-bit phones.
Google says apps targeting API 35 or higher must support 16 KB memory page sizes on 64-bit devices, and from February 1, 2027, updates that don't can't be released. Google also says NDK r28 and higher compile 16 KB-aligned by default, and asks for 16 KB-compatible prebuilt dependencies (Android Developers). Godot 4.7.2's template uses NDK 29 (source). Check any GDExtension or Android plugin that ships its own native library.
Step 7: Tick INTERNET yourself
This one is easy to miss. In Godot's export code, the INTERNET permission is added automatically only for debug exports that use remote debugging or the file system over network (source). So a debug run from the editor can reach the network while the release AAB your testers install can't.
If your game talks to any server (leaderboards, ads, analytics, saves), tick permissions/internet in the export preset.
Review the rest of the list too. Every permission you tick, and every one an Android plugin adds, ends up in the manifest. Google evaluates high-risk ones such as SMS or Call Log on test tracks too, and an undeclared one on an active closed release blocks you from publishing changes (Play Console Help).
Step 8: Release on the closed testing track
In Play Console, go to Test and release > Testing > Closed testing, then Manage track. Create a release, upload the .aab, add testers in the Testers tab, pick countries, and send the changes for review.
The opt-in link only appears once the app status is Published, and the first time it can take several hours to work (Play Console Help). If it isn't there, see where to find the opt-in link. Keep your 12 closed testers off the internal track: Google says a user who opts into your internal test can't receive your closed test.
What testers hit with Godot builds
- "Could not install" on your own phone. Godot's docs say an app with the same package name signed with a different key must be uninstalled first. Remove your debug build before you install the closed test from Google Play.
- Game offline in release only. Step 7.
- Missing assets. Step 3, folders starting with
_.
How long it really takes
- First AAB from a working Godot project: plan an afternoon (SDK packages, build template, keystore, a full run on a phone).
- First closed release: Google can take up to seven days, longer in exceptional cases, for some accounts (Play Console Help).
- The test: 14 continuous days with at least 12 testers opted in.
- Production access review: usually seven days or less (Play Console Help).
Count on three to four weeks between your first closed upload and a production release.
Frequently asked questions
Does a Godot game need 12 testers for 14 days on Google Play?
Yes, if your Play Console account is a personal account created after November 13, 2023. The engine doesn't matter: you run a closed test with at least 12 testers opted in for 14 continuous days, then apply for production access.
Which Godot version targets API level 36?
In Godot's source, checked on November 9, 2026, 4.6.3, 4.7 and 4.7.2 (the latest stable release) default to target SDK 36, as does 3.6.3. Godot 4.5.x and 4.6 up to 4.6.2 default to 35.
How do I export an AAB from Godot?
Install the Android build template from the Project menu, enable Use Gradle Build in your Android export preset, and set the export format to AAB. Godot refuses to export an AAB without the Gradle build.
Why doesn't my Godot game connect to the internet on Google Play?
Godot only adds the INTERNET permission automatically for debug exports with remote debugging or the file system over network. Tick permissions/internet in your Android export preset for the release build.
Can my keystore and key passwords be different in Godot?
No. Godot's Android export docs say the keystore password and the key password currently have to be the same.
Sources
- support.google.com/googleplay/android-developer/answer/14151465
- support.google.com/googleplay/android-developer/answer/11926878
- support.google.com/googleplay/android-developer/answer/9845334
- support.google.com/googleplay/android-developer/answer/9842756
- support.google.com/googleplay/android-developer/answer/17367361
- support.google.com/googleplay/android-developer/answer/9214102
- support.google.com/googleplay/android-developer/answer/9859751
- developer.android.com/guide/practices/page-sizes
- docs.godotengine.org/en/stable/tutorials/export/exporting_for_android.html
- docs.godotengine.org/en/stable/tutorials/export/android_gradle_build.html
- docs.godotengine.org/en/stable/classes/class_editorexportplatformandroid.html
- github.com/godotengine/godot/releases
- github.com/godotengine/godot/blob/4.7.2-stable/platform/android/java/app/config.gradle
- github.com/godotengine/godot/blob/4.6.2-stable/platform/android/java/app/config.gradle
- github.com/godotengine/godot/blob/3.6.3-stable/platform/android/java/app/config.gradle
- github.com/godotengine/godot/blob/4.7.2-stable/platform/android/export/export_plugin.cpp