web-dev-qa-db-fra.com

Les écrans de démarrage Apache Cordova ne s'affichent pas dans Android

Je suis Apache Cordova 3.6.3-0.2.13. Et j'essaie de faire fonctionner les écrans de démarrage. J'ai suivi la documentation sur http://cordova.Apache.org/docs/fr/3.6.0/config_ref_images.md.html#Icons%20and%20Splash%20Screens . Et les icônes fonctionnent, mais aucun succès pour les écrans de démarrage. Nous utilisons également le framework Ionic (version 1.2.8) au-dessus de Cordova.

Ce que j'ai fait:

Ajout d'icônes et d'écrans de démarrage dans le fichier config.xml à la racine du projet:

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

Bien sûr, le répertoire icons existe et les fichiers sont en place. Quand je construis le projet avec ionic run Android ou cordova run Android. Le processus de construction crée également les icônes et les écrans de démarrage dans le répertoire platforms/Android/res/drawable!

De plus, le fichier de configuration situé à platforms/Android/res/xml/config.xml est correctement mis à jour et les éléments <preference> et <icon> et <splash> sont en place.

J'ai aussi essayé avec le plugin org.Apache.cordova.splashscreen et aussi sans succès. J'ai ajouté le plugin avec ionic plugin add org.Apache.cordova.splashscreen et ajouté aussi onDeviceReady le code navigator.splashscreen.show();. Mais cela ne montre rien non plus.

Qu'est-ce que j'oublie ici?

26
Mark Veenstra

Juste eu ce problème moi-même. Change ça

<preference name="SplashScreen" value="splash"/>

à

<preference name="SplashScreen" value="screen"/>

Cela l'a corrigé.

source: http://forum.ionicframework.com/t/need-help-with-displaying-splash-screen-on-Android-cordova-3-6/10436/12

52
Filipe Silva

J'ai dû installer le plugin splash screen pour le faire fonctionner

cordova plugin add cordova-plugin-splashscreen

ainsi que l'ajout

<preference name="SplashScreen" value="screen" />

<preference name="SplashScreenDelay" value="2000" />

14
kentrh

Pour les nouveaux arrivants et ceux qui sont toujours confrontés à ce problème

1) Ajouter les préférences pour l’écran Splash dans 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) Déclarez vos écrans de démarrage dans 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) Enfin, ajoutez cette classe dans la structure de votre projet Android dans le package org.Apache.cordova.splashscreen

ou 

installez-le en tant que plugin Cordova.

10
Hitesh Sahu

J'ai eu un problème similaire sur Android, j'ai placé l'écran de démarrage directement dans res/drawable-hdpi et j'ai obtenu l'erreur suivante lors de la construction de Cordova.

res/drawable-hdpi-v4/DocBackground.png: Invalid file name: must contain only [a-z0-9_.]

Quand j'ai décapitalisé le nom du fichier, dans ~project/icons, la compilation de Cordova les a copiés dans le dossier res/drawable et l'écran de démarrage ont fonctionné. 

2
user3094755

Après avoir suivi attentivement les instructions de l'écran de démarrage de PhoneGap CLI, mon écran de démarrage Android ne s'affiche toujours pas. J'ai ensuite examiné build.gradle sous plates-formes/Android et constaté que les modifications apportées au bloc defaultConfig entraînaient des modifications du fichier AndroidManifest.xml qui empêchaient en définitive le fonctionnement de l'écran de démarrage. Ci-dessous, le bloc defaultConfig que j'utilisais:

defaultConfig {
    applicationId "com.leadingedje"
    minSdkVersion 17
    targetSdkVersion 21
    versionCode getAppVersionCode()
    versionName getAppVersionName()
}

Lorsque j'ai supprimé ce bloc de build.gradle, l'écran de démarrage a recommencé à fonctionner.

1
jkwuc89

Intégration Splashscreen:

Android

  1. Ajoutez les images Splashscreen aux dossiers comme ci-dessous:

    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
    
  2. Ajouter le plug-in Splash Screen au projet Android . (Git: git: //git.Apache.org/cordova-plugin-splashscreen.git)

    src/org/Apache/cordova/splashscreen/SplashScreen.Java
    
  3. Ajouter le fichier javascript du plugin dans actifs/www/js/lib/Android/plugins/cordova-plugin-splashscreen/www / (Git: https://github.com/Apache/cordova-plugin-splashscreen/blob /master/www/splashscreen.js )

  4. Ajouter le plugin entery dans 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",..   
    
  5. Ajouter le code suivant dans 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>
    
  6. construisez maintenant le projet Android.

1
Atif Hussain

Fin février 2019:

Seulement deux choses que j'ai faites et cela a fonctionné:

  • Installer le plugin:

    cordova plugin add cordova-plugin-splashscreen

  • Ajouter ci-dessous à config.xml, avoir les images correspondantes

(La 1ère ligne de départ est une taille d'écran générique, si vous voulez)

<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>
0
Manohar Reddy Poreddy

J'ai résolu le problème en ajoutant une balise splash par défaut

Ajoutez ceci à config.xml dans la destination racine ou dans www/config.xml

<gap:splash src="splash.png" />
0
Dev

J'avais le même problème et je l'ai corrigé en utilisant la configuration suivante: -

installer le plugin splash screen

cordova plugin add cordova-plugin-splashscreen

Ensuite, nous devons ajouter la préférence suivante dans config.xml,

<preference name="SplashScreenDelay" value="3000" />
<preference name="SplashMaintainAspectRatio" value="true" />

Ajoutez les images Splashscreen aux dossiers comme ci-dessous

<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 n'est pas une densité mais un qualificatif

Par conséquent, corrigez chaque étiquette de démarrage comme ci-dessous:

<splash qualifier="land-ldpi" src="res/screen/Android/splash-land-ldpi.png" />

Après la configuration ci-dessus, l'étape ci-dessous est très importante,

<platform name="Android">
   <preference name="SplashScreen" value="screen" />
</platform>
0
Nimesh khatri