Sto eseguendo Apache Cordova 3.6.3-0.2.13. E provo a far funzionare gli splash screen. Ho seguito la documentazione su http://cordova.Apache.org/docs/en/3.6.0/config_ref_images.md.html#Icons%20and%20Splash%20Screens . E le icone stanno funzionando, ma nessun successo per gli splash screen. Stiamo anche utilizzando il framework Ionic (versione 1.2.8) in cima a Cordova.
Cosa ho fatto:
Aggiunte icone e schermate iniziali a config.xml dalla radice del progetto:
<preference name="SplashScreen" value="splash"/>
<preference name="SplashScreenDelay" value="10000"/>
<platform name="Android">
<icon src="icons/icon.png"/>
<!-- you can use any density that exists in the Android project -->
<splash src="icons/Android-splash-land-hdpi.png" density="land-hdpi"/>
<splash src="icons/Android-splash-land-ldpi.png" density="land-ldpi"/>
<splash src="icons/Android-splash-land-mdpi.png" density="land-mdpi"/>
<splash src="icons/Android-splash-land-xhdpi.png" density="land-xhdpi"/>
<splash src="icons/Android-splash-port-hdpi.png" density="port-hdpi"/>
<splash src="icons/Android-splash-port-ldpi.png" density="port-ldpi"/>
<splash src="icons/Android-splash-port-mdpi.png" density="port-mdpi"/>
<splash src="icons/Android-splash-port-xhdpi.png" density="port-xhdpi"/>
</platform>
Ovviamente esiste la directory icons
e anche i file sono a posto. Quando costruisco il progetto con ionic run Android
o cordova run Android
. Il processo di compilazione crea anche le icone e gli splash screen nella directory platforms/Android/res/drawable
!
Anche il file di configurazione che si trova su platforms/Android/res/xml/config.xml
è correttamente aggiornato e gli elementi <preference>
e <icon>
e <splash>
sono installati.
Ho anche provato con il plugin org.Apache.cordova.splashscreen
e anche senza successo. Ho aggiunto il plugin con ionic plugin add org.Apache.cordova.splashscreen
e ho anche aggiunto onDeviceReady
al codice navigator.splashscreen.show();
. Ma questo mostra anche nulla.
Cosa mi manca qui?
Ho avuto questo problema da solo. Cambia questo
<preference name="SplashScreen" value="splash"/>
a
<preference name="SplashScreen" value="screen"/>
Questo l'ha risolto.
Ho dovuto installare il plug-in di splash screen per farlo funzionare
cordova plugin add cordova-plugin-splashscreen
così come l'aggiunta
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="2000" />
Per i nuovi arrivati e coloro che stanno ancora affrontando questo problema
1) Aggiungi la preferenza della schermata Splash in config.xml
<preference
name="SplashScreen"
value="screen" />
<preference
name="AutoHideSplashScreen"
value="true" />
<preference
name="SplashScreenDelay"
value="5000" />
<feature name="SplashScreen" >
<param
name="Android-package"
value="org.Apache.cordova.splashscreen.SplashScreen" />
<param
name="onload"
value="true" />
</feature>
2) Dichiarare le schermate iniziali in config.xml
<!-- you can use any density that exists in the Android project -->
<splash
density="land-hdpi"
src="res/drawable-land-hdpi/splash.png" />
<splash
density="land-ldpi"
src="res/drawable-land-ldpi/splash.png" />
<splash
density="land-mdpi"
src="res/drawable-land-mdpi/splash.png" />
<splash
density="land-xhdpi"
src="res/drawable-land-xhdpi/splash.png" />
<splash
density="port-hdpi"
src="res/drawable-hdpi/splash.png" />
<splash
density="port-ldpi"
src="res/drawable-ldpi/splash.png" />
<splash
density="port-mdpi"
src="res/drawable-mdpi/splash.png" />
<splash
density="port-xhdpi"
src="res/drawable-xhdpi/splash.png" />
</platform>
3) Infine aggiungi questa classe nella tua struttura di progetto Android sotto il pacchetto org.Apache.cordova.splashscreen
o
installalo come plugin Cordova.
Ho avuto un problema simile su Android, ho inserito lo Splash Screen direttamente in res/drawable-hdpi
e ho ottenuto il seguente errore durante la creazione di cordova.
res/drawable-hdpi-v4/DocBackground.png: Invalid file name: must contain only [a-z0-9_.]
Quando ho decapitato il nome del file, in ~project/icons
, cordova build li ha copiati nella cartella res/drawable
e la schermata di avvio funzionava.
Dopo aver seguito attentamente le istruzioni della schermata iniziale di PhoneGap CLI, la schermata iniziale di Android non veniva ancora visualizzata. Ho quindi esaminato build.gradle sotto piattaforme/Android e ho notato che le modifiche apportate al blocco defaultConfig stavano causando modifiche a AndroidManifest.xml che alla fine impedivano il funzionamento della schermata iniziale. Di seguito è riportato il blocco predefinitoConfig che stavo usando:
defaultConfig {
applicationId "com.leadingedje"
minSdkVersion 17
targetSdkVersion 21
versionCode getAppVersionCode()
versionName getAppVersionName()
}
Quando ho rimosso questo blocco da build.gradle, la schermata iniziale ha iniziato a funzionare di nuovo.
Aggiungi le immagini di Splashscreen alle cartelle come di seguito:
root/res/drawable-land-hdpi/screen.png
root/res/drawable-land-ldpi/screen.png
root/res/drawable-land-mdpi/screen.png
root/res/drawable-land-xdpi/screen.png
root/res/drawable-port-hdpi/screen.png
root/res/drawable-port-ldpi/screen.png
root/res/drawable-port-mdpi/screen.png
root/res/drawable-port-xdpi/screen.png
Aggiungi il plug-in splash screen al progetto Android . (Git: git: //git.Apache.org/cordova-plugin-splashscreen.git)
src/org/Apache/cordova/splashscreen/SplashScreen.Java
Aggiungi il plugin javascript file in assets/www/js/lib/Android/plugins/cordova-plugin-splashscreen/www / (Git: https://github.com/Apache/cordova-plugin-splashscreen/blob /master/www/splashscreen.js )
Aggiungi enteria plugin in cordova_plugins.js
{
"file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
"id": "cordova-plugin-splashscreen.SplashScreen",
"clobbers": [
"navigator.splashscreen"
]
},
"cordova-plugin-splashscreen": "3.1.0",..
Aggiungi il seguente codice in config.xml
<preference name="SplashScreen" value="screen"/>
<preference name="SplashScreenDelay" value="5000" />
<feature name="SplashScreen">
<param name="Android-package" value="org.Apache.cordova.splashscreen.SplashScreen" />
<param name="onload" value="true" />
</feature>
ora costruisci il progetto Android.
Fine febbraio 2019:
Solo due cose che ho fatto e ha funzionato:
Installa plugin:
cordova plugin add cordova-plugin-splashscreen
Aggiungi sotto a config.xml, hai immagini corrispondenti
(La prima linea splash è una dimensione generica dello schermo, se lo desideri)
<platform name="Android">
<splash src="res/screen/Android/splash-2732x2732.png" />
<splash density="land-ldpi" src="res/screen/Android/splash-land-320x200-ldpi.png" />
<splash density="land-mdpi" src="res/screen/Android/splash-land-480x320-mdpi.png" />
<splash density="land-hdpi" src="res/screen/Android/splash-land-800x480-hdpi.png" />
<splash density="land-xhdpi" src="res/screen/Android/splash-land-1280x720-xhdpi.png" />
<splash density="land-xxhdpi" src="res/screen/Android/splash-land-1600x960-xxhdpi.png" />
<splash density="land-xxxhdpi" src="res/screen/Android/splash-land-1920x1280-xxxhdpi.png" />
<splash density="port-ldpi" src="res/screen/Android/splash-port-200x320-ldpi.png" />
<splash density="port-mdpi" src="res/screen/Android/splash-port-320x480-mdpi.png" />
<splash density="port-hdpi" src="res/screen/Android/splash-port-480x800-hdpi.png" />
<splash density="port-xhdpi" src="res/screen/Android/splash-port-720x1280-xhdpi.png" />
<splash density="port-xxhdpi" src="res/screen/Android/splash-port-960x1600-xxhdpi.png" />
<splash density="port-xxxhdpi" src="res/screen/Android/splash-port-1280x1920-xxxhdpi.png" />
</platform>
Ho risolto il problema aggiungendo il tag splash predefinito
Aggiungi questo a config.xml nella destinazione principale o in www/config.xml
<gap:splash src="splash.png" />
Avevo affrontato lo stesso problema e l'ho risolto utilizzando la seguente configurazione: -
installa il plug-in dello splash screen
cordova plugin add cordova-plugin-splashscreen
Successivamente dobbiamo aggiungere le seguenti preferenze in config.xml,
<preference name="SplashScreenDelay" value="3000" />
<preference name="SplashMaintainAspectRatio" value="true" />
Aggiungi le immagini di Splashscreen alle cartelle come sotto
<platform name="Android">
<splash qualifier="land-hdpi" src="res/screen/Android/splash-land-hdpi.png" />
<splash qualifier="land-ldpi" src="res/screen/Android/splash-land-ldpi.png" />
<splash qualifier="land-mdpi" src="res/screen/Android/splash-land-mdpi.png" />
<splash qualifier="land-xhdpi" src="res/screen/Android/splash-land-xhdpi.png" />
<splash qualifier="land-xxhdpi" src="res/screen/Android/splash-land-xxhdpi.png" />
<splash qualifier="land-xxxhdpi" src="res/screen/Android/splash-land-xxxhdpi.png" />
<splash qualifier="port-hdpi" src="res/screen/Android/splash-port-hdpi.png" />
<splash qualifier="port-ldpi" src="res/screen/Android/splash-port-ldpi.png" />
<splash qualifier="port-mdpi" src="res/screen/Android/splash-port-mdpi.png" />
<splash qualifier="port-xhdpi" src="res/screen/Android/splash-port-xhdpi.png" />
<splash qualifier="port-xxhdpi" src="res/screen/Android/splash-port-xxhdpi.png" />
<splash qualifier="port-xxxhdpi" src="res/screen/Android/splash-port-xxxhdpi.png" />
</platform>
land-ldpi non è una densità ma un qualificatore
Pertanto, il corretto ogni tag splash come di seguito:
<splash qualifier="land-ldpi" src="res/screen/Android/splash-land-ldpi.png" />
Dopo la precedente configurazione, il passaggio sotto è molto importante,
<platform name="Android">
<preference name="SplashScreen" value="screen" />
</platform>