Android compatibility issues (double splash screen)

During internal testing, the google play console reports the following warning:

The crawler detected a blank loading screen or a custom splash screen that is shown in your app after the system splash screen. Users launching your app on Android 12 or higher will see 2 splash screens. To fix this issue, update your app to use the SplashScreen API.

The video provided by google console from pixel 7 shows that it first launches the app logo as the first splash screen and after that it is redrawn with my own.

I implemented the splash screen according to this tutorial: Solar2D Documentation — Plugins | Splash Screen Control

Does anyone have a solution for this problem?

I would also like to ask if the number of warnings determines “visibility” on google play?

Have you tried disabling it?

I don’t think I understand. What exactly do you mean?

If I set “enable = false”, then my splash screen would not be displayed. I attach a visualization of my build.settings

settings =
{
	splashScreen =
	{
			enable = true,
			image = "splash.png"
	},

This splash screen in build.settings is from solar2D and you should leave it false and disable it, then in your main you would call the first screen of your app which would be a splash screen that you create yourself.

Thank you both for your replies.

I followed jdsmedeirosbr instructions and set “enable = false” in build setting and created new scene with my splash screen image. I’ve tried uploading it to Google Play and there is no problem with it, however the double splah screen image on new devices remains (android>=12). For others I attach my implementation:

local composer = require( "composer" )

local scene = composer.newScene()

local function goToMenuScreen()
	composer.gotoScene( "menu", {time=250, effect="fade"} )
end

function scene:create( event )
    local sceneGroup = self.view
		local background = display.newImageRect(sceneGroup, "splash.png",320,480)
		background.x = display.contentCenterX
		background.y = display.contentCenterY
end
function scene:show( event )
    local sceneGroup = self.view
    local phase = event.phase
    if ( phase == "will" ) then
    elseif ( phase == "did" ) then
				timer.performWithDelay( 2000, goToMenuScreen )
    end
end

scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )

return scene

No… disable the splash screen (terrible implementation)… in main display your own splash screen whilst your app loads… once loaded, transition out your splash screen and transition in your main scene.

1 Like

Hello Dumbotwo,

Here is what I do when I need to have my own splash screen, similar to what SGS has suggested. Please feel free to modify it for your needs. Hope this helps.

  1. disable splashScreen in “build.settings”,
	splashScreen = {
		--	disable splash screen 
		enable = false
	},
  1. in my “main.lua” (some codes not displayed here),
-- default to top-left anchor point
display.setDefault( "anchorX", 0.0 )
display.setDefault( "anchorY", 0.0 )

-- show splash image during start 
local splashImg = display.newImageRect( "splash.jpg", 960, 640 )
splashImg.x = 0
splashImg.y = 0

-- start scene here, after splash image displayed for certain time,
timer.performWithDelay( 1500, function()
	-- starts menu scene 	
	composer.gotoScene( "scenes.menu", {
		effect = "fade",
		time = 200
	} )
	-- remove splash image 
	display.remove( splashImg )
	splashImg = nil 
end )
2 Likes