web-dev-qa-db-fra.com

React-Native, Android, Genymotion: le serveur ADB n'a pas ACK

Je travaille avec React-Native, Android et Genymotion sur Mac. Lorsque je lance react-native run-Android, je reçois ces lignes à la fin de l'opération de lancement:

...
04:54:40 E/adb: error: could not install *smartsocket* listener: Address already in use
04:54:40 E/adb: ADB server didn't ACK
04:54:40 E/ddms: '/Users/paulbrie/Library/Android/sdk/platform-tools/adb,start-server' failed -- run manually if necessary
04:54:40 E/adb: * failed to start daemon *
04:54:40 E/adb: error: cannot connect to daemon
:app:installDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.Android.builder.testing.api.DeviceException: Timeout getting device list.
...

Cependant, adb devices renvoie ceci:

List of devices attached
192.168.59.101:5555 device

Jusqu'à présent, je n'ai trouvé aucune solution pour exécuter mon application sur l'émulateur. Quelqu'un at-il rencontré le même problème?

Merci Paul

154
Paul

Après d’autres recherches, j’ai réalisé que Genymotion utilise par défaut son propre adb.

enter image description here

Je suis passé à mon adresse principale (la même que celle utilisée par react-native) et le problème a été résolu. Je suppose que parce que l'adb de Genymotion a été lancé en premier, j'ai reçu le message d'erreur Address already in use.

315
Paul

J'utilise genymotion, mais la solution de Paul à elle seule n'a pas corrigé l'erreur (pour Mac).

J'ai dû:

Mettez à jour Android SDK vers la dernière version (24.4.1) via le gestionnaire de SDK .

Tapez Android dans la ligne de commande

Dans le gestionnaire de SDK, recherchez les derniers outils SDK et installez-les.

Une fois installé, le chemin du SDK devrait mettre à jour le nouvel emplacement du SDK comme ci-dessous.

enter image description here

Puis mettez à jour le $ Android_HOME pour utiliser le nouveau SDK

export Android_HOME=/usr/local/Cellar/Android-sdk/24.4.1_1

export PATH=$PATH:$Android_HOME/tools:$Android_HOME/platform-tools

Confirmez qu'il a été ajouté en consultant votre chemin avec echo $PATH

Puis, dans genymotion, faites ce que @Paul dit ci-dessus et pointez genymotion ADB pour utiliser le même sdk

enter image description here

45
smj2393

Système: Windows 10

Mon problème: Régler Genymotion pour qu'il pointe vers le SDK personnalisé n'a eu aucun effet. J'ai quand même reçu le:

Impossible de démarrer le projet sur Android: impossible d'installer smartsocket listener: impossible de se lier à 127.0.0.1:5037: une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est normalement autorisée. (10048) n'a pas pu lire ok sur ADB Server * n'a pas pu démarrer le démon * erreur: impossible de se connecter au démon

Ce que j'ai découvert, c'est qu'il y avait une différence entre les versions de la BAD utilisées dans le système. Voici la commande que j'ai utilisée pour les trouver:

where /r C:\ adb.exe

Cela a produit les résultats:

C:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
C:\Program Files\Genymobile\Genymotion\tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb backup\adb.exe

Navigation vers chaque répertoire et exécution:

adb.exe version

M'a permis de voir que l'Expo fonctionnait sous la version ADB:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-Android

Alors que Genymotion utilisant le SDK personnalisé avait une version (c:\Utilisateurs\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe):

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-Android

En guise de test, j'ai pris les fichiers adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) de

c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe

et les a placés dans un dossier de sauvegarde. J'ai ensuite déplacé les fichiers adb situés à

c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe

dans ce même endroit. J'ai tué adb avec:

adb kill-server

ce qui a provoqué un redémarrage automatique du serveur adb car mon appareil Genymotion était déjà en marche. J'ai appuyé sur le bouton "Redémarrer" à l'intérieur de l'Expo XDE et celle-ci a immédiatement commencé à fonctionner. Voici le journal où j'ai appuyé sur le bouton de redémarrage à 01h13:04:

12:45:53 AM
could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: Only one usage of each socket address (protocol/network address/port) is normally permitted. (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
1:13:04 AM
Restarting project and clearing packager cache (Hold shift while clicking restart to avoid clearing cache).
1:13:11 AM
Starting React Native packager...
1:13:17 AM
Scanning 543 folders for symlinks in C:\Users\kyle\git\betalog\node_modules (49ms)
1:13:17 AM
1:13:19 AM
Couldn't adb reverse: closed
1:13:20 AM
Project opened! You can now use the "Share" or "Device" buttons to view your project.
1:13:26 AM
Couldn't adb reverse: closed
1:13:26 AM
Downloading latest version of Expo
1:13:28 AM
Installing Expo on device
1:13:33 AM
Opening on Android device
1:13:56 AM
Building JavaScript bundle: finished in 59643ms.
1:14:01 AM
Dependency graph loaded.
1:14:03 AM
Your JavaScript transform cache is empty, rebuilding (this may take a minute).

Conclusion: Genymotion et Expo devront peut-être utiliser la même version d’adb pour permettre à Expo de communiquer correctement avec le dispositif simulé. Pointez Genymotion vers votre emplacement de SDK Android et veillez à ce que Expo XDE dispose de la même version pour permettre une communication correcte entre les périphériques. J'ai déplacé la version d'Expo XDE vers l'emplacement du SDK, mais vous pouvez peut-être faire l'inverse (prenez les fichiers ADB sdk et placez-les à l'emplacement de ressources Expo XDE).

P.S. J'ai parcouru tous les posts liés à ce problème. Pour que vous sachiez, mon gestionnaire de tâches affiche trois instances d’adb.exe en cours d’exécution. Si vous en tuez, ils reviennent.

J'espère que cela aide/acclamations

10
Kyle s

Peut-être que vos versions d'adb ne correspondent pas

Vérifier:

adb version 

Ensuite:

cd /Path/to/Android/Sdk/platform-tools && ./adb version

Si ces deux sont différents, vous avez une erreur ici, supprimez simplement adb de sys et copiez celui qui se trouve dans platform-tools dans/usr/bin /

6
Aldo RVV

Les étapes qui ont fonctionné pour moi sont les suivantes:

  • $ adb kill-server

  • $ adb start-server

  • $ cd Android

  • $ ./gradlew clean

  • $ cd ..

  • $ react-native run-Android

2
Cool7

la version d'adb de votre système est différente de la version d'adb du Android sdk platform-tools. La suggestion ci-dessous est un travail pour moi pour le système d'exploitation Linux

  1. vérifier la version sys adb exécuter la commande ci-dessous

version adb

Android Debug Bridge version 1.0.39

  1. vérifier la version de sdk adb

cd/root/Android/Sdk/plateforme-outils

version ./adb

Android Debug Bridge version 1.0.32

  1. copie

rm/usr/bin/adb

[Remarque: la commande ci-dessus supprime l'adb existant, puis copie l'adb du répertoire sdk/platform-tools]

Sudo cp/racine/Android/Sdk/plate-outils/adb/usr/bin/adb

Puis exécutez le projet en utilisant cette commande

réagit natif sous Android

2
Hoque MD Zahidul

J'ai eu la même chose pendant que j'essayais de courir de l'interface utilisateur expo. A fait les mêmes choses, comme décrit dans les réponses, mais l'application ne fonctionnait pas. Une fois que vous avez essayé, exécutez exp Android à partir de la ligne de commande (dans le dossier du projet), l'application a été exécutée avec succès et l'exécution suivante à partir de Expo UI a été une réussite.

2
Aleksandr Suhhinin

J'ai eu un problème similaire.

Tout d'abord, j'ai désinstallé l'application. Ensuite, j'ai pointé GenyMotion sur le Android sdk fourni par Android Studio. J'ai ensuite lancé "adb kill-server" dans le terminal. Finalement, j'ai relancé "réagit nativement sous Android" et j'ai eu un succès de construction.

2
VocoJax

Si vous souhaitez que votre système reste propre, vous pouvez également utiliser Genymotion sans Android Studio :

  1. Trouvez la copie de Genymotion de adb. Sur macOS, il s’agit normalement de /Applications/Genymotion.app/Contents/MacOS/tools/.
  2. Ajoutez le répertoire des outils Genymotion à votre chemin - exécutez/ajoutez la ligne export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH à votre ~/.bash_profile ou ~/.bash_rc.
  3. Assurez-vous que vous pouvez exécuter adb à partir de votre terminal.

(De https://docs.expo.io/versions/latest/workflow/genymotion )

2
cseelus

1. Utilise le chemin d'accès personnalisé au sdk dans genymotion (si celui-ci ne fonctionnait pas, essayez d'exécuter le second).

2.Utilisez manuellement cette commande pour exécuter (SDK PATH/adb elle sera start -n/nom du package/MainActivity).

C:\Users\AppData\Local\Android\Sdk/platform-tools/adb elle démarrera -n com.example/com.example.ManiActivity

Et essayez d'exécuter l'application en utilisant réact-native run-Android.

1
priyanga