diff --git a/main/main.cpp b/main/main.cpp index 44201522af1..1cbd732747b 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -2896,7 +2896,7 @@ Error Main::setup2() { MAIN_PRINT("Main: Setup Logo"); -#if !defined(TOOLS_ENABLED) && (defined(WEB_ENABLED) || defined(ANDROID_ENABLED)) +#if !defined(TOOLS_ENABLED) && defined(WEB_ENABLED) bool show_logo = false; #else bool show_logo = true; diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp index eebef3f9691..ad00659257d 100644 --- a/platform/android/export/export_plugin.cpp +++ b/platform/android/export/export_plugin.cpp @@ -212,11 +212,6 @@ static const char *android_perms[] = { static const char *MISMATCHED_VERSIONS_MESSAGE = "Android build version mismatch:\n| Template installed: %s\n| Requested version: %s\nPlease reinstall Android build template from 'Project' menu."; -static const char *SPLASH_IMAGE_EXPORT_PATH = "res/drawable-nodpi/splash.png"; -static const char *LEGACY_BUILD_SPLASH_IMAGE_EXPORT_PATH = "res/drawable-nodpi-v4/splash.png"; -static const char *SPLASH_BG_COLOR_PATH = "res/drawable-nodpi/splash_bg_color.png"; -static const char *LEGACY_BUILD_SPLASH_BG_COLOR_PATH = "res/drawable-nodpi-v4/splash_bg_color.png"; -static const char *SPLASH_CONFIG_PATH = "res/drawable/splash_drawable.xml"; static const char *GDEXTENSION_LIBS_PATH = "libs/gdextensionlibs.json"; static const int icon_densities_count = 6; @@ -1642,67 +1637,6 @@ void EditorExportPlatformAndroid::_process_launcher_icons(const String &p_file_n } } -String EditorExportPlatformAndroid::load_splash_refs(Ref &splash_image, Ref &splash_bg_color_image) { - bool scale_splash = GLOBAL_GET("application/boot_splash/fullsize"); - bool apply_filter = GLOBAL_GET("application/boot_splash/use_filter"); - bool show_splash_image = GLOBAL_GET("application/boot_splash/show_image"); - String project_splash_path = GLOBAL_GET("application/boot_splash/image"); - - // Setup the splash bg color. - bool bg_color_valid = false; - Color bg_color = ProjectSettings::get_singleton()->get("application/boot_splash/bg_color", &bg_color_valid); - if (!bg_color_valid) { - bg_color = boot_splash_bg_color; - } - - if (show_splash_image) { - if (!project_splash_path.is_empty()) { - splash_image.instantiate(); - print_verbose("Loading splash image: " + project_splash_path); - const Error err = ImageLoader::load_image(project_splash_path, splash_image); - if (err) { - if (OS::get_singleton()->is_stdout_verbose()) { - print_error("- unable to load splash image from " + project_splash_path + " (" + itos(err) + ")"); - } - splash_image.unref(); - } - } - } else { - splash_image.instantiate(); - splash_image->initialize_data(1, 1, false, Image::FORMAT_RGBA8); - splash_image->set_pixel(0, 0, bg_color); - } - - if (splash_image.is_null()) { - // Use the default - print_verbose("Using default splash image."); - splash_image = Ref(memnew(Image(boot_splash_png))); - } - - if (scale_splash) { - Size2 screen_size = Size2(GLOBAL_GET("display/window/size/viewport_width"), GLOBAL_GET("display/window/size/viewport_height")); - int width, height; - if (screen_size.width > screen_size.height) { - // scale horizontally - height = screen_size.height; - width = splash_image->get_width() * screen_size.height / splash_image->get_height(); - } else { - // scale vertically - width = screen_size.width; - height = splash_image->get_height() * screen_size.width / splash_image->get_width(); - } - splash_image->resize(width, height); - } - - print_verbose("Creating splash background color image."); - splash_bg_color_image.instantiate(); - splash_bg_color_image->initialize_data(splash_image->get_width(), splash_image->get_height(), false, splash_image->get_format()); - splash_bg_color_image->fill(bg_color); - - String processed_splash_config_xml = vformat(SPLASH_CONFIG_XML_CONTENT, bool_to_string(apply_filter)); - return processed_splash_config_xml; -} - void EditorExportPlatformAndroid::load_icon_refs(const Ref &p_preset, Ref &icon, Ref &foreground, Ref &background) { String project_icon_path = GLOBAL_GET("application/config/icon"); @@ -1739,61 +1673,34 @@ void EditorExportPlatformAndroid::load_icon_refs(const Ref & } void EditorExportPlatformAndroid::_copy_icons_to_gradle_project(const Ref &p_preset, - const String &processed_splash_config_xml, - const Ref &splash_image, - const Ref &splash_bg_color_image, - const Ref &main_image, - const Ref &foreground, - const Ref &background) { + const Ref &p_main_image, + const Ref &p_foreground, + const Ref &p_background) { String gradle_build_dir = ExportTemplateManager::get_android_build_directory(p_preset); - // Store the splash configuration - if (!processed_splash_config_xml.is_empty()) { - print_verbose("Storing processed splash configuration: " + String("\n") + processed_splash_config_xml); - store_string_at_path(gradle_build_dir.path_join(SPLASH_CONFIG_PATH), processed_splash_config_xml); - } - - // Store the splash image - if (splash_image.is_valid() && !splash_image->is_empty()) { - String splash_export_path = gradle_build_dir.path_join(SPLASH_IMAGE_EXPORT_PATH); - print_verbose("Storing splash image in " + splash_export_path); - Vector data; - _load_image_data(splash_image, data); - store_file_at_path(splash_export_path, data); - } - - // Store the splash bg color image - if (splash_bg_color_image.is_valid() && !splash_bg_color_image->is_empty()) { - String splash_bg_color_path = gradle_build_dir.path_join(SPLASH_BG_COLOR_PATH); - print_verbose("Storing splash background image in " + splash_bg_color_path); - Vector data; - _load_image_data(splash_bg_color_image, data); - store_file_at_path(splash_bg_color_path, data); - } - // Prepare images to be resized for the icons. If some image ends up being uninitialized, // the default image from the export template will be used. for (int i = 0; i < icon_densities_count; ++i) { - if (main_image.is_valid() && !main_image->is_empty()) { + if (p_main_image.is_valid() && !p_main_image->is_empty()) { print_verbose("Processing launcher icon for dimension " + itos(launcher_icons[i].dimensions) + " into " + launcher_icons[i].export_path); Vector data; - _process_launcher_icons(launcher_icons[i].export_path, main_image, launcher_icons[i].dimensions, data); + _process_launcher_icons(launcher_icons[i].export_path, p_main_image, launcher_icons[i].dimensions, data); store_file_at_path(gradle_build_dir.path_join(launcher_icons[i].export_path), data); } - if (foreground.is_valid() && !foreground->is_empty()) { - print_verbose("Processing launcher adaptive icon foreground for dimension " + itos(launcher_adaptive_icon_foregrounds[i].dimensions) + " into " + launcher_adaptive_icon_foregrounds[i].export_path); + if (p_foreground.is_valid() && !p_foreground->is_empty()) { + print_verbose("Processing launcher adaptive icon p_foreground for dimension " + itos(launcher_adaptive_icon_foregrounds[i].dimensions) + " into " + launcher_adaptive_icon_foregrounds[i].export_path); Vector data; - _process_launcher_icons(launcher_adaptive_icon_foregrounds[i].export_path, foreground, + _process_launcher_icons(launcher_adaptive_icon_foregrounds[i].export_path, p_foreground, launcher_adaptive_icon_foregrounds[i].dimensions, data); store_file_at_path(gradle_build_dir.path_join(launcher_adaptive_icon_foregrounds[i].export_path), data); } - if (background.is_valid() && !background->is_empty()) { - print_verbose("Processing launcher adaptive icon background for dimension " + itos(launcher_adaptive_icon_backgrounds[i].dimensions) + " into " + launcher_adaptive_icon_backgrounds[i].export_path); + if (p_background.is_valid() && !p_background->is_empty()) { + print_verbose("Processing launcher adaptive icon p_background for dimension " + itos(launcher_adaptive_icon_backgrounds[i].dimensions) + " into " + launcher_adaptive_icon_backgrounds[i].export_path); Vector data; - _process_launcher_icons(launcher_adaptive_icon_backgrounds[i].export_path, background, + _process_launcher_icons(launcher_adaptive_icon_backgrounds[i].export_path, p_background, launcher_adaptive_icon_backgrounds[i].dimensions, data); store_file_at_path(gradle_build_dir.path_join(launcher_adaptive_icon_backgrounds[i].export_path), data); } @@ -3093,10 +3000,6 @@ Error EditorExportPlatformAndroid::export_project_helper(const Refget_include_filter()); print_verbose("- exclude filter: " + p_preset->get_exclude_filter()); - Ref splash_image; - Ref splash_bg_color_image; - String processed_splash_config_xml = load_splash_refs(splash_image, splash_bg_color_image); - Ref main_image; Ref foreground; Ref background; @@ -3172,7 +3075,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Refis_empty()) { - _load_image_data(splash_image, data); - } - - // Process the splash bg color image - if ((file == SPLASH_BG_COLOR_PATH || file == LEGACY_BUILD_SPLASH_BG_COLOR_PATH) && splash_bg_color_image.is_valid() && !splash_bg_color_image->is_empty()) { - _load_image_data(splash_bg_color_image, data); - } - if (file.ends_with(".png") && file.contains("mipmap")) { for (int i = 0; i < icon_densities_count; ++i) { if (main_image.is_valid() && !main_image->is_empty()) { diff --git a/platform/android/export/export_plugin.h b/platform/android/export/export_plugin.h index 679afdc50f7..97bbd0c7bcc 100644 --- a/platform/android/export/export_plugin.h +++ b/platform/android/export/export_plugin.h @@ -39,18 +39,6 @@ #include "core/os/os.h" #include "editor/export/editor_export_platform.h" -const String SPLASH_CONFIG_XML_CONTENT = R"SPLASH( - - - - - - -)SPLASH"; - // Optional environment variables for defining confidential information. If any // of these is set, they will override the values set in the credentials file. const String ENV_ANDROID_KEYSTORE_DEBUG_PATH = "GODOT_ANDROID_KEYSTORE_DEBUG_PATH"; @@ -179,17 +167,12 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { void _process_launcher_icons(const String &p_file_name, const Ref &p_source_image, int dimension, Vector &p_data); - String load_splash_refs(Ref &splash_image, Ref &splash_bg_color_image); - void load_icon_refs(const Ref &p_preset, Ref &icon, Ref &foreground, Ref &background); void _copy_icons_to_gradle_project(const Ref &p_preset, - const String &processed_splash_config_xml, - const Ref &splash_image, - const Ref &splash_bg_color_image, - const Ref &main_image, - const Ref &foreground, - const Ref &background); + const Ref &p_main_image, + const Ref &p_foreground, + const Ref &p_background); static void _create_editor_debug_keystore_if_needed(); diff --git a/platform/android/java/app/build.gradle b/platform/android/java/app/build.gradle index bde6a93c860..01d5d9ef929 100644 --- a/platform/android/java/app/build.gradle +++ b/platform/android/java/app/build.gradle @@ -32,6 +32,7 @@ configurations { dependencies { implementation "androidx.fragment:fragment:$versions.fragmentVersion" + implementation "androidx.core:core-splashscreen:$versions.splashscreenVersion" if (rootProject.findProject(":lib")) { implementation project(":lib") diff --git a/platform/android/java/app/res/drawable-nodpi/splash.png b/platform/android/java/app/res/drawable-nodpi/splash.png deleted file mode 100644 index 7bddd4325a8..00000000000 Binary files a/platform/android/java/app/res/drawable-nodpi/splash.png and /dev/null differ diff --git a/platform/android/java/app/res/drawable-nodpi/splash_bg_color.png b/platform/android/java/app/res/drawable-nodpi/splash_bg_color.png deleted file mode 100644 index 004b6fd5083..00000000000 Binary files a/platform/android/java/app/res/drawable-nodpi/splash_bg_color.png and /dev/null differ diff --git a/platform/android/java/app/res/drawable/splash_drawable.xml b/platform/android/java/app/res/drawable/splash_drawable.xml deleted file mode 100644 index 30627b998c2..00000000000 --- a/platform/android/java/app/res/drawable/splash_drawable.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/platform/android/java/app/res/values/themes.xml b/platform/android/java/app/res/values/themes.xml index d64b50ca456..3ab84019287 100644 --- a/platform/android/java/app/res/values/themes.xml +++ b/platform/android/java/app/res/values/themes.xml @@ -3,8 +3,17 @@ diff --git a/platform/android/java/app/src/com/godot/game/GodotApp.java b/platform/android/java/app/src/com/godot/game/GodotApp.java index 9142d767b4b..22e617f6e73 100644 --- a/platform/android/java/app/src/com/godot/game/GodotApp.java +++ b/platform/android/java/app/src/com/godot/game/GodotApp.java @@ -34,6 +34,8 @@ import org.godotengine.godot.GodotActivity; import android.os.Bundle; +import androidx.core.splashscreen.SplashScreen; + /** * Template activity for Godot Android builds. * Feel free to extend and modify this class for your custom logic. @@ -41,7 +43,7 @@ import android.os.Bundle; public class GodotApp extends GodotActivity { @Override public void onCreate(Bundle savedInstanceState) { - setTheme(R.style.GodotAppMainTheme); + SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); } }