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
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.
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.
Le
-d
est censé venir directement aprèsadb
(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
Voici quelques points à vérifier et à prendre en compte, au cas où vous ne le sauriez pas:
cordova -v
ne correspond pas nécessairement à la version de la plate-forme cordova platform
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+
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.
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
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.
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!
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
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.