web-dev-qa-db-fra.com

Erreur ADB et Genymotion: "le serveur adb est obsolète. Tuer ... ne peut pas lier 'tcp: 5037' le serveur ADB n'a pas ACK"

Essayer d'utiliser adb Shell du terminal après le démarrage de l'émulateur genymotion et j'obtiens cette erreur:

adb server is out of date.  killing...
cannot bind 'tcp:5037'
ADB server didn't ACK
* failed to start daemon *
error:

J'ai lu cette réponse sur stackoverflow pour exécuter cette commande killall -9 adbsi je l'ai fait, puis il est dit de modifier les paramètres de Genymotion pour utiliser des outils personnalisés Android SDK comme suit:

enter image description here

J'ai également fait cela comme vous pouvez le voir dans la capture d'écran ci-dessus, mais je reçois toujours le même message d'erreur.

Mes journaux Android Studio ADB donnent le message suivant chaque fois que j'essaie d'exécuter adb Shell:

 DeviceMonitor: Adb connection Error:EOF
 DeviceMonitor: Connection attempts: 1

J'ai même essayé de créer un nouvel appareil virtuel et de l'utiliser sans succès.

23
CommonSenseCode

mettez à jour l'adb à 1.0.32 si vous avez 1.0.31 ou moins

adb version
Android Debug Bridge version 1.0.31
wget -O - https://skia.googlesource.com/skia/+archive/cd048d18e0b81338c1a04b9749a00444597df394/platform_tools/Android/bin/linux.tar.gz | tar -zxvf - adb
Sudo mv adb /usr/bin/adb
Sudo chmod +x /usr/bin/adb
adb version
Android Debug Bridge version 1.0.32
28
spawyn

Aucune de ces solutions n'a fonctionné pour moi du tout.

La solution qui a résolu mon erreur a été d'ajouter les répertoires manquants/Android/Sdk/tools &/Android/Sdk/platform-tools à ma variable Environment PATH, ceci peut être réalisé avec la commande suivante:

export PATH=/home/{username}/Android/Sdk/tools:/home/{username}/Android/Sdk/platform-tools:$PATH

Assurez-vous d'interpoler votre propre nom d'utilisateur dans la commande, en remplaçant {username} par le nom d'utilisateur de votre système d'exploitation.

Cela dirigera votre ligne de commande pour rechercher la variable PATH de votre Environmant pour l'emplacement approprié de l'exécutable adb, sans cette variable d'environnement définie, votre système ne sait pas où chercher l'exécutable correct.

21
Matt G

La cause première de ce problème est que vous essayez d'exécuter des adbs de différentes versions. Le côté PC (hôte) adb est composé de deux parties: adb et adb server.

adb <----> serveur adb <--------USB-------> adbd (périphérique)

adb et adb server sont en fait le même binaire, mais adb server s'exécute en arrière-plan lorsque vous lancez une commande adb pour la première fois. Après cela, la commande adb contactera quel serveur adb chaque fois que vous exécutez adb, et tout d'abord elle vérifiera les versions du serveur adb en cours d'exécution. Si la version ne correspond pas, vous verrez que le serveur adb est obsolète. meurtre...'. C'est la seule raison.

int adb_connect(const std::string& service, std::string* error) {
    // first query the adb server's version
    int fd = _adb_connect("Host:version", error);
...
        if (version != ADB_SERVER_VERSION) {
            printf("adb server is out of date.  killing...\n");
            fd = _adb_connect("Host:kill", error);
            adb_close(fd);

            /* XXX can we better detect its death? */
            adb_sleep_ms(2000);
            goto start_server;
        }

Pour résoudre ce problème, il vous suffit de vous assurer que vous ne tentez pas d'exécuter une version adb différente.

  1. Trouvez le chemin binaire de l'exécution du serveur adb à l'aide d'un outil de gestion des tâches, recherchez "adb". vérifier sa version à l'aide de la commande

[chemin d'accès au serveur adb]/version adb

La sortie comme ceci:

Android Debug Bridge version 1.0.35
Revision 68de85bda98d-Android

"1.0.35" est le numéro de version.

  1. vérifiez la version de l'adb à l'origine de votre problème. il suffit de taper

version adb

  1. comparer les numéros de version, ils doivent correspondre.

s'ils ne correspondent pas, vous pouvez:

  • ne gardez qu'une seule adb, supprimez les autres.
  • ou vous pouvez ignorer l'erreur. si cela s'affiche toujours, découvrez qui exécute différents outils adb pour vous et arrêtez-le. Par exemple, un programme d'assistant téléphonique.
5
Changbin Du