1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Revert "Add support for exporting to Google Play Instant"

This reverts commit 12ad9ed4e0.

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.
This commit is contained in:
Anish Mishra
2025-06-14 15:51:08 +05:30
parent 1218a16de5
commit dcab8a721e
5 changed files with 3 additions and 50 deletions

View File

@@ -61,11 +61,6 @@
<member name="gradle_build/export_format" type="int" setter="" getter="">
Application export format (*.apk or *.aab).
</member>
<member name="gradle_build/google_play_instant" type="bool" setter="" getter="">
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].
</member>
<member name="gradle_build/gradle_build_directory" type="String" setter="" getter="">
Path to the Gradle build directory. If left empty, then [code]res://android[/code] will be used.
</member>

View File

@@ -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<EditorExportPre
String EditorExportPlatformAndroid::get_assets_directory(const Ref<EditorExportPreset> &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<EditorExportPrese
void EditorExportPlatformAndroid::_write_tmp_manifest(const Ref<EditorExportPreset> &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 =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
" xmlns:tools=\"http://schemas.android.com/tools\"";
if (google_play_instant_build) {
manifest_text += " android:targetSandboxVersion=\"2\" \n xmlns:dist=\"http://schemas.android.com/apk/distribution\"";
}
manifest_text += ">\n";
" xmlns:tools=\"http://schemas.android.com/tools\">\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<EditorExportPres
}
manifest_text += _get_application_tag(Ref<EditorExportPlatform>(this), p_preset, _has_read_write_storage_permission(perms), p_debug, manifest_metadata);
manifest_text += "</manifest>\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<ExportOption> *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 Ref<EditorExportP
String enabled_abi_string = join_abis(enabled_abis, "|", false);
String sign_flag = should_sign ? "true" : "false";
String zipalign_flag = "true";
String play_instant_flag = bool_to_string(p_preset->get("gradle_build/google_play_instant"));
Vector<String> android_libraries;
Vector<String> android_dependencies;
@@ -3681,7 +3656,6 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
cmdline.push_back("-Pplugins_maven_repos=" + combined_android_dependencies_maven_repos); // argument to specify the list of maven repos for android dependencies provided by plugins.
cmdline.push_back("-Pperform_zipalign=" + zipalign_flag); // argument to specify whether the build should be zipaligned.
cmdline.push_back("-Pperform_signing=" + sign_flag); // argument to specify whether the build should be signed.
cmdline.push_back("-Pplay_instant_app=" + play_instant_flag); // argument to specify whether the build is for Google Play Instant.
// NOTE: The release keystore is not included in the verbose logging
// to avoid accidentally leaking sensitive information when sharing verbose logs for troubleshooting.

View File

@@ -315,8 +315,6 @@ String _get_application_tag(const Ref<EditorExportPlatform> &p_export_platform,
int app_category_index = (int)(p_preset->get("package/app_category"));
bool is_game = app_category_index == APP_CATEGORY_GAME;
bool google_play_instant_build = (bool)p_preset->get("gradle_build/google_play_instant");
String manifest_application_text = vformat(
" <application android:label=\"@string/godot_project_name_string\"\n"
" android:allowBackup=\"%s\"\n"
@@ -337,10 +335,6 @@ String _get_application_tag(const Ref<EditorExportPlatform> &p_export_platform,
}
manifest_application_text += " tools:ignore=\"GoogleAppIndexingWarning\">\n\n";
if (google_play_instant_build) {
manifest_application_text += " <dist:module dist:instant=\"true\" />\n";
}
for (int i = 0; i < p_metadata.size(); i++) {
manifest_application_text += vformat(" <meta-data tools:node=\"replace\" android:name=\"%s\" android:value=\"%s\" />\n", p_metadata[i].name, p_metadata[i].value);
}

View File

@@ -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'

View File

@@ -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)
}