web-dev-qa-db-fra.com

E/art ﹕ Échec d'envoi de la réponse au débogueur: canal cassé, mais l'application est toujours exécutée.

Lorsque j'exécute mon application, plusieurs lignes apparaissent dans le logcat, mais une seule erreur:

E/art ﹕ Échec de l'envoi de la réponse au débogueur: canal cassé .

Qu'est-ce que ça veut dire? Et comment puis-je résoudre ce problème?

16
Vitaly Romaniv

Expliquant l'erreur:

E/ART: Failed sending reply to debugger: Broken pipe.

Qu'est-ce que E/ART?

ART est le UN ndroid R unT ime. C'est l'interpréteur de bytecode sur votre téléphone Android. La E indique simplement le niveau de journalisation de ERROR.

Qu'est-ce que "envoyer une réponse au débogueur"?

Le débogage sur le téléphone Android est effectué à l'aide de adb (Android Debugging Bridge). Le processus adb s'exécute sur votre ordinateur dev (votre ordinateur portable ou votre ordinateur) et un démon s'exécute sur le périphérique Android (c'est-à-dire l'émulateur ou le combiné). 

Qu'est-ce qu'un tuyau cassé?

Votre machine dev et le périphérique Android communiquent comme un serveur client. Un tuyau broken signifie que la communication est devenue invalide. Par exemple, le client (le périphérique Android) tente d'envoyer une réponse au serveur (le processus adb en cours d'exécution sur la machine dev) mais le serveur a déjà fermé le socket.

Comment le réparer

Tout d’abord, assurez-vous que votre application est en train de se construire correctement en effectuant un nettoyage/une reconstruction.

Ensuite, si vous exécutez votre application à l'aide du débogage USB sur un vrai téléphone, vous pouvez souvent résoudre le problème en débranchant le câble USB, puis en le rebranchant pour rétablir la connexion client/serveur.

Si cela ne fonctionne pas, vous pouvez déconnecter le câble USB et (arrêter l'émulateur si nécessaire) et fermer Android Studio. Cela suffit souvent pour arrêter le processus adb. Ensuite, lorsque vous ouvrez à nouveau Android Studio, il redémarre et la connexion est rétablie.

Si cela ne fonctionne pas, vous pouvez essayer d'arrêter le serveur adb manuellement en suivant les instructions de cette question . Par exemple, vous pouvez essayer d’ouvrir la commande Invite ou Terminal, d’aller dans le répertoire sdk/platform-tools et de taper:

adb kill-server
adb start-server
14
David Rawson

Vous pouvez faire ce qui suit:

  • Kill Emulator et Android Studio
  • Ouvrez Android Studio et "Rebuild" qui supprime fondamentalement le dossier de construction et le recrée.
4
Karim Fikani

J'avais un point d'arrêt dans une déclaration return, lorsque je l'ai supprimé, tout s'est déroulé comme il se doit. Essayez donc également (en supprimant tous les points d'arrêt).

3
Warpzit

tuer le processus "adb" m'a aidé à récupérer de cette erreur. Essayez juste de redémarrer l'adb.

1
Nilabja

J'ai eu cette erreur quand j'ai fait une erreur avec un type d'objet (img response) dans ma classe de modèle, alors que j'essayais d'obtenir une réponse de mon URL dans Android. Et quand j'ai corrigé l'erreur disparue

0
Sam

L'erreur provient du fait de ne pas obtenir les données ou la classe réelles. Utilisez Android Monitor avec une erreur de niveau de journalisation et aucun filtre Regex pour vérifier l'erreur . J'espère que vous obtiendrez une erreur réelle.

0