Après avoir démarré l'émulateur en appuyant sur Debug dans Eclipse, après un certain temps, il se déconnecte de l'ADB, mais l'émulateur reste ouvert. Il est réactif, je peux naviguer et démarrer des applications.
Comment puis-je rattacher l'émulateur à ADB, pour pouvoir déboguer depuis Eclipse?
(la solution de contournement actuelle consiste à terminer l'émulateur, à fermer Eclipse et à redémarrer les deux, ce qui prend 10 minutes car vous savez que l'émulateur a besoin de temps pour démarrer)
MODIFIER 1
Découvrez cette image:
MODIFIER 2
Après avoir tué et redémarré le serveur. Un processus d'émulation apparaît dans l'onglet Périphériques dans Eclipse. Mais cela ne peut pas être étendu, et je ne vois pas de sous-processus.
Je ne peux pas déjà frapper le débogage, comme il est dit: le débogage est déjà en cours d'exécution. (Comment puis-je arrêter le débogage?)
Si j'ai réussi à démarrer le débogage d'un autre projet, il se bloque dans l'émulateur en me disant: en attente de la connexion du débogueur. Rien ne se passe.
Comme vous l'avez dit, le problème n'est pas Eclipse perd le contact avec l'émulateur, mais ADB - le Android Debug Bridge - perd le contact avec lui. Comme Eclipse utilise ADB pour communiquer avec l'émulateur lorsque ADB est cassé, Eclipse ne peut rien faire.
Pour résoudre ce problème arrêtez le serveur ADB en exécutant la commande suivante:
adb kill-server
Eclipse essaie alors généralement de redémarrer ADB, ou vous pouvez le redémarrer vous-même en exécutant une commande ADB, telle que:
adb devices
Si vous le faites, vous verrez une sortie comme celle-ci:
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
emulator-5554 device
Vous pouvez également le faire via la souris, en utilisant l'option Réinitialiser adb dans les Périphériques vue dans Eclipse.
Il convient également de noter que la vue de la console a deux modes, DDMS
et Android
. Vous êtes généralement en mode Console
mais c'est le mode DDMS
qui affichera les messages d'état ADB. Sélectionnez les modes en cliquant sur le bouton avec l'icône Moniteur ou en utilisant la flèche à côté:
Si tout le reste échoue, essayez de tuer les processus adb du système d'exploitation. Sous Windows XP j'utilise:
TASKKILL /F /IM adb.exe
Il existe un moyen plus simple. Depuis Eclipse, vous pouvez réinitialiser l'adb à partir du panneau [~ # ~] ddms [~ # ~] . Voici une courte vidéo à ce sujet "Réinitialiser ADB sur DDMS"
Voici une capture d'écran rapide de l'endroit où vous pouvez obtenir l'option.
Parfois, un kill-server ne m'aidera pas sur ma machine (WinXP). Par exemple, je ne vois plus l'émulateur dans la vue DDMS ou je le vois mais aucun processus ne s'exécute dessus.
Dans ces cas, je ferme l'émulateur et Eclipse et je tue manuellement le processus adb.exe de la liste des processus.
Lorsque je redémarre ensuite Eclipse et l'émulateur, tout va bien à nouveau.
Maintenant, j'ai juste besoin d'un raccourci clavier pour cela :-)
Essayez avec adb kill-server et adb start-server. Même alors, le même problème se produit, tuez votre processus en cours de perspective ddms. Reportez-vous à ce lien ( http://www.jiahaoliuliu.com/2011/02/stopping-Android-applications-already.html ). Cela a résolu mon problème. J'espère aussi pour vous.
sur un mac, je devais juste tuer adb du gestionnaire d'activité et rouvrir manuellement le programme à nouveau. avait Eclipse ouvert tout au long et cela a très bien fonctionné.
Je teste une application sur un émulateur Android 4.0 (API niveau 14) et une fois que j'ai exécuté l'application, l'émulateur démarre et dès qu'il se charge, Eclipse DDMS se déconnecte de l'émulateur.
Voici la solution de contournement que j'utilise: Ouvrez le terminal, accédez aux outils de la plate-forme (C:\Android-sdk\platform-tools\ou partout où vous avez installé votre Android-sdk), et exécutez adb kill-server
, puis exécutez, adb start-server
. DDMS devrait maintenant lister l'émulateur - depuis Java, clic droit sur l'application -> Exécuter en tant que -> Android.
J'espère que cela t'aides.
Mon script bash pratique
#!/bin/bash
./path/to/adb kill-server
./path/to/adb start-server
./path/to/adb devices