Je suis nouveau sur Phonegap et Android. Puis-je savoir comment puis-je déboguer l'erreur javascript sur l'émulateur? J'ai entendu parler d'ADB puis-je savoir comment l'utiliser et l'installer sur le système Windows 7 "J'ai un ajax appelé avec jsonp mais pas de réponse sur l'émulateur. Cependant, je peux appeler cet ajax avec le navigateur sur Windows. Puis-je savoir ce qui ne va pas?
Vous pouvez au moins enregistrer des éléments de débogage dans la console adb en appelant console.log () en JavaScript. Peut-être que cela suffirait?
Pour afficher la sortie du journal à l'aide d'adb, accédez à votre répertoire SDK platform-tools/et exécutez:
adb logcat
Mise à jour de novembre 2016: semble que cela ne fonctionne plus.
Le plus simple et l'un des moyens les plus puissants utilise http://debug.phonegap.com (il utilise Weinre dans l'arrière-plan, si vous vous souciez). Vous juste
r4nd0m
,<script src="http://debug.phonegap.com/target/target-script-min.js#r4nd0m"></script>
Dans votre index.html
http://debug.phonegap.com/client/#r4nd0m
et vous déboguez instantanément votre application Web mobile.Choses que vous pouvez faire (similaire à Firebug ou Web Inspector):
Vous pouvez maintenant utiliser Chrome outils de développement pour déboguer à distance Android applications Phonegap! J'ai écrit des instructions ici: Débogage à distance des applications Phonegap avec Chrome Dev Tools
Étapes pour Android:
Voir aussi Premiers pas avec le débogage à distance Android Appareils
Je recommanderais jsconsole . Il vous permet d'injecter n'importe quel JavaScript dans la page et fournit une console de base. Il y a un joli tutoriel sur débogage à distance .
J'ai constaté que cela fonctionne pour le débogage des erreurs javascript pour Android/Phonegap lors du test de l'application via Eclipse sur Windows 7.
Allez simplement dans Fenêtre> Afficher la vue> Autre ...
Sélectionnez ensuite LogCat sous le dossier Android.
La fenêtre/l'onglet qui vient d'apparaître est l'endroit où l'émulateur Android enverra ses journaux et messages d'erreur. Vous pouvez détacher cette fenêtre et la placer en dehors d'Eclipse IDE (j'ai trouvé cela utile). Vous pouvez également contrôler les types d'erreurs que vous voyez en sélectionnant l'une des 5 lettres colorées dans le coin supérieur droit de la fenêtre.
Pour masquer les informations inutiles afin de ne voir que les erreurs, assurez-vous que vous n'avez sélectionné que (E). Personnellement, j'aime également que les avertissements (W) soient sélectionnés ainsi que les erreurs (E).
J'espère que ça t'as aidé!
Oui, vous avez des erreurs de journal avec console.log et affichez l'onglet LogCat dans Eclipse. Là, les messages de la console Web (y compris les erreurs JS) s'affichent. C'est un peu verbeux, vous devez donc filtrer pour afficher uniquement les balises de la console Web, mais cela fonctionne bien. Décrit ici: AFFICHAGE DE LA CONSOLE CONSOLE.LOG SORTIE ET DES ERREURS JAVASCRIPT AVEC PHONEGAP SUR Android/Eclipse
Il y a (enfin) un outil disponible pour permettre un débogage JavaScript correct pour Android - http://www.jshybugger.org/
Fonctionnalités:
- ajouter/supprimer/activer/désactiver les points d'arrêt de ligne
- expressions de montre
- entrer/sortir/sortir
- pause sur exception
- navigation dans la pile d'appels
- inspection variable locale
- console à distance
- syntaxe javascript et rapport d'erreurs d'exécution
- afficher/modifier/supprimer des éléments de stockage local
- afficher/modifier/supprimer des éléments de stockage de session
- afficher/modifier/supprimer les enregistrements de la base de données WebSQL (regarder la vidéo)
- afficher les ressources de la page (images, scripts, html)
- prise en charge de la console distante améliorée (stacktrace)
- Débogueur: inspection améliorée des objets
- Débogueur: points d'arrêt conditionnels
- Débogueur: continuez ici
Je l'ai résolu facilement en deux étapes.
Dans config.xml ajoutez cette ligne
<log level="DEBUG"/>
Il s'agit d'un fichier de chauve-souris que vous pouvez simplement exécuter et suivre tous les messages du journal, accédez à votre projet phonegap et accédez à \platforms\Android\cordova
puis ouvrez log.bat
vous pouvez maintenant émuler votre application en utilisant la ligne de commande
cordova emulate
et le journal sera affiché dans le cmd qui apparaîtra lorsque vous ouvrirez log.bat
La meilleure solution pour intercepter les exceptions et les afficher dans votre console est ce code:
window.onerror = function(msg, uri, line) {
console.log(msg + uri + line);
}
Le débogage de l'application PhoneGap/Apache Cordova est facile avec GapDebug
Téléchargez et installez GapDebug depuis https://www.genuitec.com/products/gapdebug/
Exécutez un GapDebug sur votre PC/Mac
Activez l'option développeur et le débogage USB sur votre Android (Paramètres -> Option développeur (ON) -> Débogage USB (ON))
Si l'option Développeur n'est pas trouvée (Paramètres -> À propos du téléphone -> Cliquez 7 fois sur le numéro de build)
Référer
Si vous êtes prêt à installer NodeJS quelque part, vous pouvez effectuer un débogage étendu avec iBug de John Boxall, qui a été conçu pour l'iPhone sur lequel j'ai testé Android et fonctionne très bien. Il s'agit essentiellement de Firebug Lite pour les appareils mobiles. Je pointe vers ma cause fork Node a beaucoup changé et le code de John ne fonctionnerait pas sur un nodeJS moderne, donc je l'ai corrigé pour l'obtenir opérationnel sur nodeJS 0.2.3, YMMV sur les versions plus récentes de nodeJS.
Dans Eclipse, vous pouvez ajouter un hook au bouton Android emulator back et inspecter une valeur à la volée. Ajoutez le gestionnaire d'événements onBackPressed
et appelez la console javascript à partir de là. Dans la perspective de débogage Eclipse, vous allez modifier la valeur d'une variable String
en ce que vous souhaitez inspecter, et la transmettre à votre application en appelant super.loadUrl
.
Voir le code ci-dessous. N'oubliez pas d'activer le débogage de votre application depuis la vue DDMS
public class MyActivity extends DroidGap {
private String js = "";
@Override
public void onBackPressed() {
//add a breakpoint to the follow line
//and change the value for "js" variable before continuing execution
super.loadUrl("javascript:console.log(" + js + ")");
return;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setBooleanProperty("keepRunning", false);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("file:///Android_asset/www/index.html", 20000);
}
}
Le débogage Phonegap existe toujours. celui que je connais est dans la construction de phonegap trouvée dans les paramètres et cochez l'option d'application de débogage. Il reconstruira ensuite votre application lorsque vous l'enregistrerez. Un bouton de débogage apparaîtra dans la page de l'application avec les options de reconstruction. (ce service utilise également un weinre intégré)
Une autre option que je trouve aussi la plus rapide est jsconsole.com . Son très facile à installer et ne nécessite presque aucune configuration par rapport aux autres méthodes de débogage où vous devez installer beaucoup de choses comme les pilotes et les SDK.
REMARQUE!
Dans PhoneGap 10 lorsque vous créez votre application et que toute demande en dehors de l'application (comme s'il n'y a pas d'Internet) échoue, vous devrez l'ajouter dans votre config.xml
<gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" version="1.1.1" />
<access Origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />
Je tirais mes cheveux en essayant de faire fonctionner n'importe quel outil de débogage à distance uniquement pour découvrir que les demandes extérieures étaient bloquées par défaut. cela m'a sauvé.
Si tu utilises console.log
vous pouvez faire des instructions d'impression simples. En plus d'utiliser adb
pour les afficher, vous pouvez utiliser une visionneuse de journaux sur l'appareil et y afficher les journaux. Plus d'informations: http://www.technomancy.org/Android/javascript-debugging/
Si vous utilisez Phonegap Build et que vous souhaitez déboguer à l'aide de la console Chrome, voici une solution de travail. Il est possible de déboguer WebViews à l'aide du débogage USB ( https: // développeur. chrome.com/devtools/docs/remote-debugging#debugging-webviews )
Tout d'abord, assurez-vous que votre balise de widget contient xmlns: Android = "http://schemas.Android.com/apk/res/Android"
<widget
xmlns="http://www.w3.org/ns/widgets"
xmlns:gap="http://phonegap.com/ns/1.0"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
id="me.app.id"
version="1.0.0">
Ajoutez ensuite ce qui suit
<gap:config-file platform="Android" parent="/manifest">
<application Android:debuggable="true" />
</gap:config-file>
Cela fonctionne pour moi sur Nexus 5, Phonegap 3.7.0.
<preference name="phonegap-version" value="3.7.0" />
Construisez l'application dans Phonegap Build, installez l'APK, connectez le téléphone à l'USB, activez le débogage USB sur votre téléphone, puis visitez chrome: // inspect.
Source: https://www.genuitec.com/products/gapdebug/learning-center/configuration/