web-dev-qa-db-fra.com

cordova run Android s'exécute bien. Mais Android 4.1.2 ne démarre pas l'application

Je commence à développer une application Android avec Cordova 5.0.0 (cordova -v prints 5.0.0) et à la tester sur un Moto Razr D1 avec Android 4.1.2 . Sous Windows 7, d'ailleurs.

cordova build 

et copier manuellement les plates-formes/Android/build/output/apk/Android-degug.apk sur le SD et l’installation fonctionne correctement.

cordova emulate Android 

fonctionne bien sur l'émulateur avec la version Android> 4.1.2

cordova run Android 

construit avec succès, dit en utilisant apk plates-formes/Android/build/sortie/apk/Android-debugger.apk, qui semble ok, installation de l'application, lancement et LAUNCH SUCCESS. Cependant, comme vous pouvez le voir sur cette capture d'écran 

Capture d'écran de Razr

Cette chose "WALLPAPER/MANAGE/SETTINGS" arrive, et c'est tout.

Si j'exécute:

cordova emulate Android

Sur un émulateur avec Android 4.1.2 Jelly, une sortie égale

BUILD SUCCESSFUL

Total time: 6.352 secs
Built the following apk(s):
    C:\Android\Some\platforms\Android\build\outputs\apk\Android-debug.apk
Installing app on emulator...
Using apk: C:\Android\Some\platforms\Android\build\outputs\apk\Android-debug.apk
Launching application...
LAUNCH SUCCESS

même "WALLPAPAER/MANAGE/SETTINGS", voici une autre capture d'écran Emulator Screenshot

Des idées comment résoudre ce problème? Merci d'avance...

PS: Si j'ai déjà installé l'apk auparavant, le Razr démarrera l'ancienne version au lieu de la fonction WALLPAPER/MANAGE/SETTINGS. Je dois donc le désinstaller avant d'essayer d'exécuter les commandes cordova run.

28
gerumato

J'ai rencontré le même problème ( L'application "hello world" de Cordova ne s'affichera pas ) et j'ai trouvé un moyen de le traverser (mais je ne comprends pas vraiment les causes sous-jacentes).

Problème semblait se produire lors de l'installation de l'apk. Sur Cordova 5.0.0, les commandes adb permettant d’installer l’apk se trouvent à la ligne 101 du fichier plates-formes\Android\cordova\lib\device.js (et à la ligne 311 de plates-formes\Android\cordova\lib\emulator.js pour cordova imiter Android):

adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"

La commande en cours me renvoie: "Erreur: option inconnue -d"!

Si vous supprimez simplement l'option "-d", les applications fonctionnent normalement avec cordova sous Android. 

MODIFIER

Le -d est censé venir directement après adb (comme dans --device) au lieu d’après installation. Vous pouvez donc simplement le déplacer là-bas au lieu de le supprimer.

De plus, voici le numéro ouvert sur Apache Cordova Issue Tracker

44
proprit

Voici quelques points à vérifier et à prendre en compte, au cas où vous ne le sauriez pas:

  • Votre version de la CLI cordova -v ne correspond pas nécessairement à la version de la plate-forme cordova platform
  • Vos versions de plate-forme entre les différentes plates-formes (si vous en avez) peuvent ne pas correspondre. Par exemple, Android peut avoir une version de plate-forme différente de celle d'iOS.

Si vous avez mis à jour cordova-Android sdk à la dernière version, veillez à lire attentivement le releasenotes.md: https://github.com/Apache/cordova-Android/blob/master/RELEASENOTES.md

Je ne sais pas ce qu'est la carte SD, mais j'ai installé mes applications via 

adb install <path_to_apk>

Après avoir comparé et vérifié votre apk transféré sur votre appareil, qu'il est plus facile de déboguer que l'émulateur, lancez Android Debug Bridge with logcat :

adb -d logcat

Si vous préférez déboguer avec logcat via émulateur, alors:

adb -e logcat

Il existe des indicateurs de débogage supplémentaires pour réduire la verbosité ici: http://developer.Android.com/tools/debugging/debugging-log.html . Vous devrez ajuster les spécifications du filtre à votre guise, par exemple: adb logcat ActivityManager:I MyApp:D *:S. Je préfère utiliser adb logcat *:D pour capturer presque tous les messages de débogage tout en réduisant légèrement la verbosité.

Espérons que lors de la connexion et du démarrage de logcat, vous serez en mesure de détecter les erreurs susceptibles de causer votre problème.

EDIT: Voici une autre méthode de débogage de périphérique via les outils de développement du navigateur Chrome: https://developer.chrome.com/devtools/docs/remote-debugging

En général, voici les étapes à partir du lien ci-dessus:

Conditions requises: Chrome 32 ou version ultérieure, câble USB pour la connexion à un appareil Android, le débogage du navigateur nécessite Android 4.0+, le débogage des applications nécessite Android 4.4+

  1. Activez le débogage USB sur le périphérique: Paramètres> Options du développeur. Si vous possédez un appareil Android 4.2+, les options de développement sont masquées par défaut. Cliquez sur Paramètres> À propos du téléphone et appuyez sept fois sur Numéro de build.
  2. Dans "Options pour les développeurs", cochez la case Débogage USB.
  3. Cliquez sur OK pour confirmer que vous activez le débogage USB.
  4. Connectez votre appareil à votre ordinateur à l’aide du câble USB.
  5. Ouvrez le navigateur Chrome et dans la barre de recherche/adresse, tapez chrome: // inspect.
  6. Cliquez sur la case à cocher pour Découvrir les périphériques USB.
  7. Sur votre appareil, un message d’alerte apparaît. Cliquez sur OK.
  8. La page chrome: // inspect devrait maintenant afficher votre périphérique connecté. Cliquez sur le lien "inspecter" du périphérique. Les outils de développement Chrome devraient apparaître.

Le lien de débogage à distance ci-dessus contient davantage d'informations sur le screencasting en direct, la configuration du proxy, la redirection de port et le mappage d'hôte virtuel.

11
jojo

Pour ceux qui utilisent Cordova 6.1.1 et qui ont le même problème de ne pas ouvrir/installer l'application, ce qui a fonctionné pour moi a été d'exécuter ionic emulate Android une fois pour ouvrir l'émulateur Android avec un écran d'accueil. Ensuite, dans une autre fenêtre de terminal, exécutez à nouveau ionic emulate Android qui a installé l'application sur l'émulateur déjà ouvert et tout a fonctionné normalement.

Problème similaire trouvé ici: https://forum.ionicframework.com/t/ionic-serve-works-correctly-ionic-emulate-Android-just-displays-Android-emulator-home-screen/53524/6

3
Lukáš Černý

La solution est la suivante: Edit emulator.js sous plateformes\Android\cordova\lib

Aller à la ligne 311 et commenter la ligne

// return exec('adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"', os.tmpdir())

et coller la nouvelle ligne

return exec('adb -s ' + resolvedTarget.target + ' install -r  "' + apk_path + '"', os.tmpdir())

Ça marche.

0
Aysad K.

Changer le code dans device.js et emulator.js n'a pas fonctionné pour moi (et a en fait introduit une erreur où cordova build Android ne fonctionnait plus). Mon problème était complètement différent: j'avais deux <application>s dans mon AndroidManifest.xml, ce qui n'est apparemment pas autorisé.

Quelque part le long de la ligne, j’avais ajouté <application Android:debuggable="true" /> à mon AndroidManifest.xml. Cependant, ce fichier déjà avait un élément "application" ressemblant à ceci:

<application Android:hardwareAccelerated="true" Android:icon="@drawable/icon" Android:label="@string/app_name" Android:supportsRtl="true">

J'ai donc ajouté la ligne "debuggable" au <application> existant (et enlevé le second <application>) comme ceci:

<application Android:debuggable="true" Android:hardwareAccelerated="true" Android:icon="@drawable/icon" Android:label="@string/app_name" Android:supportsRtl="true">

Après cela, j'ai reconstruit en utilisant cordova build Android, je l’ai couru avec succès sur mon appareil avec cordova run Android, puis j’ai applaudi et effrayé mon chien.

CEPENDANT, même si ce n’est pas votre problème, voici comment j’ai découvert le problème: j’ai suivi les instructions de la réponse de jojo et j’ai exécuté adb logcat avec mon appareil connecté. Cet onglet terminal s'est immédiatement rempli d'une merde interminable.

Ensuite, j'ai ouvert une nouvelle fenêtre de terminal que je pouvais voir en même temps, j'ai pris note du dernier horodatage dans la sortie logcat et j'ai exécuté cordova run Android. L'écran se remplit de plus de merde, puis une fois les choses calmées, je remontai à mon heure de départ et le relis ligne par ligne. Finalement, j'ai trouvé mon coupable:

PackageParser: <manifest> has more than one <application>

J'espère que cela t'aides!

0
Sarah

pour moi cette astuce a parfaitement fonctionné en supprimant le -d 

mais je devais installer apk manullay pour la première fois en transférant au téléphone puis j'ai pu exécuter l'application directement en utilisant ionic run Android

espérons que cela aide quelqu'un

0
Mr Megamind

Essayez d'utiliser simple -

cordova run anroid

S'il n'y a pas de périphérique connecté, il indiquera "Aucune cible spécifiée et aucun périphérique trouvé, déploiement sur émulateur" et lancera l'émulateur. 

0
Bajrang Hudda