From dcab8a721e1070556499e3b593d91a1cf6120834 Mon Sep 17 00:00:00 2001 From: Anish Mishra Date: Sat, 14 Jun 2025 15:51:08 +0530 Subject: [PATCH] Revert "Add support for exporting to Google Play Instant" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 12ad9ed4e0b199ac637c3c7b0b8a8dd4f901e1f1. Shortly after the feature was merged, we received news that Google will shut down Instant Apps in December 2025. Since this feature is being discontinued soon, there’s no value in keeping it for just a few months. --- .../EditorExportPlatformAndroid.xml | 5 ---- platform/android/export/export_plugin.cpp | 28 +------------------ .../android/export/gradle_export_util.cpp | 6 ---- platform/android/java/app/build.gradle | 6 +--- platform/android/java/app/config.gradle | 8 +----- 5 files changed, 3 insertions(+), 50 deletions(-) diff --git a/platform/android/doc_classes/EditorExportPlatformAndroid.xml b/platform/android/doc_classes/EditorExportPlatformAndroid.xml index 2c99a3c5344..b9840154e08 100644 --- a/platform/android/doc_classes/EditorExportPlatformAndroid.xml +++ b/platform/android/doc_classes/EditorExportPlatformAndroid.xml @@ -61,11 +61,6 @@ Application export format (*.apk or *.aab). - - If [code]true[/code], configures the exported project for Play Instant Build. - Use this option when targeting Play Instant to allow users to launch the app without installation. See [url=https://developer.android.com/topic/google-play-instant/overview]Google Play Instant[/url]. - [b]Note:[/b] Instant play games also need to be optimized for size. See [url=https://docs.godotengine.org/en/stable/contributing/development/compiling/optimizing_for_size.html]Optimizing a build for size[/url]. - Path to the Gradle build directory. If left empty, then [code]res://android[/code] will be used. diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp index b3f2327a607..55b09feb9a9 100644 --- a/platform/android/export/export_plugin.cpp +++ b/platform/android/export/export_plugin.cpp @@ -280,7 +280,6 @@ static const int EXPORT_FORMAT_AAB = 1; static const char *APK_ASSETS_DIRECTORY = "assets"; static const char *AAB_ASSETS_DIRECTORY = "assetPackInstallTime/src/main/assets"; -static const char *INSTANT_APP_ASSETS_DIRECTORY = "assets"; // instant build doesn't support installTime assetspacks, so using the same directory as APK static const int DEFAULT_MIN_SDK_VERSION = 24; // Should match the value in 'platform/android/java/app/config.gradle#minSdk' static const int DEFAULT_TARGET_SDK_VERSION = 35; // Should match the value in 'platform/android/java/app/config.gradle#targetSdk' @@ -525,12 +524,6 @@ String EditorExportPlatformAndroid::get_valid_basename(const Ref &p_preset, int p_export_format) const { String gradle_build_directory = ExportTemplateManager::get_android_build_directory(p_preset); - - bool google_play_instant_build = p_preset->get("gradle_build/google_play_instant"); - if (google_play_instant_build) { - return gradle_build_directory.path_join(INSTANT_APP_ASSETS_DIRECTORY); // Always use base APK asset format - } - return gradle_build_directory.path_join(p_export_format == EXPORT_FORMAT_AAB ? AAB_ASSETS_DIRECTORY : APK_ASSETS_DIRECTORY); } @@ -1001,19 +994,10 @@ void EditorExportPlatformAndroid::_get_manifest_info(const Ref &p_preset, bool p_give_internet, bool p_debug) { print_verbose("Building temporary manifest..."); - - bool google_play_instant_build = (bool)p_preset->get("gradle_build/google_play_instant"); - String manifest_text = "\n" "\n"; manifest_text += _get_screen_sizes_tag(p_preset); manifest_text += _get_gles_tag(); @@ -1047,7 +1031,6 @@ void EditorExportPlatformAndroid::_write_tmp_manifest(const Ref(this), p_preset, _has_read_write_storage_permission(perms), p_debug, manifest_metadata); - manifest_text += "\n"; String manifest_path = ExportTemplateManager::get_android_build_directory(p_preset).path_join(vformat("src/%s/AndroidManifest.xml", (p_debug ? "debug" : "release"))); @@ -2036,12 +2019,6 @@ String EditorExportPlatformAndroid::get_export_option_warning(const EditorExport if (int(p_preset->get("gradle_build/export_format")) == EXPORT_FORMAT_AAB && !gradle_build_enabled) { return TTR("\"Export AAB\" is only valid when \"Use Gradle Build\" is enabled."); } - } else if (p_name == "gradle_build/google_play_instant") { - bool instant_enabled = p_preset->get("gradle_build/google_play_instant"); - bool gradle_build_enabled = p_preset->get("gradle_build/use_gradle_build"); - if (instant_enabled && !gradle_build_enabled) { - return TTR("\"Instant Build\" is only valid when \"Use Gradle Build\" is enabled."); - } } else if (p_name == "gradle_build/min_sdk") { String min_sdk_str = p_preset->get("gradle_build/min_sdk"); bool gradle_build_enabled = p_preset->get("gradle_build/use_gradle_build"); @@ -2121,7 +2098,6 @@ void EditorExportPlatformAndroid::get_export_options(List *r_optio r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "gradle_build/gradle_build_directory", PROPERTY_HINT_PLACEHOLDER_TEXT, "res://android"), "", false, false)); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "gradle_build/android_source_template", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "gradle_build/export_format", PROPERTY_HINT_ENUM, "Export APK,Export AAB"), EXPORT_FORMAT_APK, false, true)); - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "gradle_build/google_play_instant"), false, true, true)); // Using String instead of int to default to an empty string (no override) with placeholder for instructions (see GH-62465). // This implies doing validation that the string is a proper int. r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "gradle_build/min_sdk", PROPERTY_HINT_PLACEHOLDER_TEXT, vformat("%d (default)", DEFAULT_MIN_SDK_VERSION)), "", false, true)); @@ -3606,7 +3582,6 @@ Error EditorExportPlatformAndroid::export_project_helper(const Refget("gradle_build/google_play_instant")); Vector android_libraries; Vector android_dependencies; @@ -3681,7 +3656,6 @@ Error EditorExportPlatformAndroid::export_project_helper(const Refget("gradle_build/google_play_instant"); - String manifest_application_text = vformat( " &p_export_platform, } manifest_application_text += " tools:ignore=\"GoogleAppIndexingWarning\">\n\n"; - if (google_play_instant_build) { - manifest_application_text += " \n"; - } - for (int i = 0; i < p_metadata.size(); i++) { manifest_application_text += vformat(" \n", p_metadata[i].name, p_metadata[i].value); } diff --git a/platform/android/java/app/build.gradle b/platform/android/java/app/build.gradle index a3a2b9a4ce7..658144eaa2f 100644 --- a/platform/android/java/app/build.gradle +++ b/platform/android/java/app/build.gradle @@ -37,10 +37,6 @@ dependencies { implementation "androidx.fragment:fragment:$versions.fragmentVersion" implementation "androidx.core:core-splashscreen:$versions.splashscreenVersion" - if (isInstantApp()) { - implementation "com.google.android.gms:play-services-instantapps:$versions.instantAppsVersion" - } - if (rootProject.findProject(":lib")) { implementation project(":lib") } else if (rootProject.findProject(":godot:lib")) { @@ -94,7 +90,7 @@ android { jvmTarget = versions.javaVersion } - assetPacks = isInstantApp() ? [] : [":assetPackInstallTime"] + assetPacks = [":assetPackInstallTime"] namespace = 'com.godot.game' diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle index acee899f2a1..bcb362e1db7 100644 --- a/platform/android/java/app/config.gradle +++ b/platform/android/java/app/config.gradle @@ -15,8 +15,7 @@ ext.versions = [ // Also update 'platform/android/detect.py#get_ndk_version()' when this is updated. ndkVersion : '28.1.13356709', splashscreenVersion: '1.0.1', - openxrVendorsVersion: '4.0.0-stable', - instantAppsVersion: '17.0.0' + openxrVendorsVersion: '4.0.0-stable' ] @@ -380,8 +379,3 @@ ext.getAddonsDirectory = { -> String addonsDirectory = project.hasProperty("addons_directory") ? project.property("addons_directory") : "" return addonsDirectory } - -ext.isInstantApp = { -> - String instantApp = project.hasProperty("play_instant_app") ? project.property("play_instant_app") : "" - return Boolean.parseBoolean(instantApp) -}