2010-11-20 6 views
1

Je suis dans une situation désespérée.Déboguer l'application Android sur l'appareil sans débogueur

Je développe une application Android en utilisant l'ADT dans Eclipse sur Ubuntu 10.04 sur un netbook.

Malheureusement, le netbook n'est pas assez puissant pour exécuter l'émulateur de périphérique (quand j'essaye, il y a toujours des problèmes). Ensuite, j'ai essayé de déboguer sur l'appareil, mais malheureusement mon téléphone (Pulse) semble avoir un problème.

Il semble que je ne puisse pas déboguer. J'ai déjà passé des heures à essayer de le faire fonctionner. Et je ne peux pas me permettre de mettre à jour mon netbook/mobile maintenant.

La seule chose que je peux faire est de développer sur Eclipse et lancer l'application sur le téléphone.
Est-il possible de déboguer pendant que l'application s'exécute sur mon téléphone? Puis-je créer quelque part un journal avec des erreurs/avertissements et même des messages personnalisés que j'ai mis dans le code?

Quelle situation.

Toute aide serait appréciée.

Merci,
Dan

+0

Êtes-vous au moins capable d'exécuter 'shell adb' pour accéder à votre shell de téléphone? (btw je peux confirmer l'émulateur est pratiquement inutilisable sur un netbook lent) –

+0

Merci Alexandre de confirmer. Oui, je peux lancer adb shell. Wow, je ne savais pas à ce sujet. Je reçois une invite avec un signe dollar et je peux lancer ls, pwd, ... Comment puis-je l'utiliser pour déboguer? Puis-je accéder à n'importe quel journal avec la ligne de commande? Le problème est que je ne peux pas être root – dan

Répondre

2

Le débogage de l'appareil devrait fonctionner. Assurez-vous d'avoir android:debuggable="true" dans votre manifeste d'application. Auparavant, j'avais des problèmes de débogage qui se sont corrigés après le redémarrage de l'appareil.

Vous pouvez également utiliser the Log class pour imprimer des messages de journal. Vous pouvez les voir en exécutant adb logcat ou dans la vue logcat d'Eclipse.

Edit:

Il semble que sur certains appareils, vous devez exécuter echo 1 > /sys/kernel/logger/log_main/enable de adb shell pour activer la journalisation.

+0

Ils sont à la fois 2 bonnes suggestions, mais aucun d'entre eux a fait l'affaire – dan

+0

Maintenant, je vais essayer adb logcat – dan

+0

Malheureusement, adb logcat ne semble pas fonctionner pour moi; peut-être que je l'ai juste utilisé dans le mauvais sens. Dans mon programme j'ai ajouté Log.v ("MYAPP", "bonjour!"); Ensuite, j'ai chargé l'application sur le téléphone et l'exécuter. De mon Ubuntu j'ai lancé adb logcat mais je n'ai rien vu, l'invite clignote juste – dan

0

Vous pouvez déboguer une application android directement via un outil nommé DDMS inclus dans le SDK. Avec Eclipse, le plugin intègrent tout pour vous: créez simplement un point d'arrêt sur la ligne que vous voulez arrêter en double-cliquant dans la marge, puis cliquez sur le bouton 'debug' (le petit bug en haut de la fenêtre). Le programme démarrera sur l'appareil et l'appareil affichera un message 'en attendant que le débogueur se connecte'. Le message devrait disparaître dans quelques secondes et s'arrêtera à la ligne sur laquelle vous avez placé le point d'arrêt.

Comme pour créer des journaux, vous pouvez utiliser la classe android.util.Log:

import android.util.Log; 
... 
Log.e("MYAPPLICATION", "my message"); 

devrait afficher dans la vue « Logcat » d'éclipse.

+0

Est-ce que cela fonctionne même si je ne peux pas faire de débogage sur l'appareil et que je peux simplement lancer l'apk sur l'appareil, comme je l'ai dit? – dan

+0

La classe Log fonctionnera indépendamment de votre configuration; Tant que vous pouvez installer une application, elle écrira dans le journal. Il existe des applications qui peuvent vous montrer le journal sur l'appareil, mais il est beaucoup plus pratique de le voir sur votre machine de développement avec logcat. Maintenant, si vous pouvez installer un apk mais pas déboguer l'application ou logcat directement votre appareil, vous devriez regarder dans la façon dont vous avez installé le SDK parce que quelque chose est définitivement faux. Il peut aussi s'agir de l'appareil - je sais que c'est lent mais juste essayer une fois avec l'émulateur pour voir si adb logcat fonctionne. Si c'est le cas, le problème est avec votre appareil. – Jean

0

Je ne comprends pas pourquoi vous ne pourriez pas déboguer sur l'appareil. Assurez-vous simplement que votre appareil est reconnu par Ubuntu en suivant ce article.

+0

J'ai essayé cela (et beaucoup d'autres) mais le Pulse semble avoir quelques problèmes. J'ai lu ça sur un forum. Pour contourner ces problèmes, je devrais recompiler adb après avoir changé le code, mais cela ne semble pas facile – dan

1

Avec un appareil Android, vous pouvez développer et déboguer vos applications Android comme vous le feriez sur l'émulateur. Avant de pouvoir commencer, il y a juste quelques petites choses à faire:

1 Déclarez votre application comme "débogable" dans votre Manifeste Android. android: debuggable = "true" à l'élément

2 Configurez votre appareil pour permettre l'installation d'applications non commerciales.

Sur l'appareil, accédez à Paramètres> Applications et activez les sources inconnues (sur un périphérique Android 4.0, le paramètre se trouve dans Paramètres> Sécurité).

3 Activez le "Débogage USB" sur votre appareil.

Sur l'appareil, accédez à Paramètres> Applications> Développement et activez le débogage USB (sur un périphérique Android 4.0, le paramètre se trouve dans Paramètres> Options du développeur).

4 Configurez votre système pour détecter votre périphérique. Si vous développez sous Windows, vous devez installer un pilote USB pour adb. Si vous utilisez un Android Developer Phone (ADP), un Nexus One ou un Nexus S, consultez le pilote USB Windows de Google. Sinon, vous pouvez trouver un lien vers le pilote OEM approprié dans le document Pilotes USB OEM. Si vous développez sur Mac OS X, cela fonctionne. Passer cette étape. Si vous développez sur Ubuntu Linux, vous devez ajouter un fichier de règles udev contenant une configuration USB pour chaque type de périphérique que vous souhaitez utiliser pour le développement. Dans le fichier de règles, chaque fabricant de périphérique est identifié par un ID de fournisseur unique, tel que spécifié par la propriété ATTR {idVendor}. Pour obtenir la liste des ID de fournisseur, consultez la section ID de fournisseur USB ci-dessous. Pour configurer la détection de périphérique sur Ubuntu Linux: Connectez-vous en tant que root et créez ce fichier: /etc/udev/rules.d/51-android.rules.

 Use this format to add each vendor to the file: 
     SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" 

     In this example, the vendor ID is for HTC. The MODE assignment specifies read/write permissions, and GROUP defines which Unix group owns the device node. 

     Note: The rule syntax may vary slightly depending on your environment. Consult the udev documentation for your system as needed. For an overview of rule syntax, see this guide to writing udev rules. 
     Now execute: 
     chmod a+r /etc/udev/rules.d/51-android.rules 

Vous pouvez vérifier que votre appareil est connecté en exécutant des périphériques adb à partir de votre répertoire SDK platform-tools /. Si vous êtes connecté, le nom de l'appareil est répertorié en tant que "périphérique". Si vous utilisez Eclipse, exécutez ou déboguez votre application comme d'habitude. Vous verrez apparaître une boîte de dialogue Device Chooser qui répertorie les émulateurs disponibles et les périphériques connectés. Sélectionnez l'appareil sur lequel vous souhaitez installer et exécuter l'application. Si vous utilisez Android Debug Bridge (adb), vous pouvez lancer des commandes avec l'option -d pour cibler votre appareil connecté.

Questions connexes