React-natif, 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, j'obtiens 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 a rencontré le même problème?

Merci, Paul

141
demandé sur Paul 2016-03-12 18:09:46

9 réponses

Après plus de recherches, J'ai réalisé que Genymotion utilise par défaut sa propre Bad.

entrez la description de l'image ici

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

307
répondu Paul 2016-03-12 16:06:55

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

Je devais:

Mettre à jour Android SDK à 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 doit mettre à jour le nouvel emplacement du SDK comme ci-dessous.

entrez la description de l'image ici

Ensuite, 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 visualisant votre chemin avec echo $PATH

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

entrez la description de l'image ici

43
répondu smj2393 2016-11-17 17:00:58

Système: Windows 10

Mon problème: définir Genymotion pour pointer vers le SDK personnalisé n'a eu aucun effet. J'ai toujours 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 socket adresse (protocole/adresse réseau/port) est habituellement autorisée. (10048) impossible de lire ok à partir du serveur ADB * échec du démarrage du démon * erreur: impossible de se connecter à démon

Ce que j'ai découvert, c'est qu'il y avait une différence dans les versions de la BAD utilisées dans tout 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 Expo exécutait la version ADB:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

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

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

Comme un test que j'ai pris les fichiers adb (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) à partir 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 le même endroit. J'ai tué adb avec:

adb kill-server

Qui a provoqué un redémarrage du serveur adb automatiquement en raison du fait que mon périphérique Genymotion était déjà en cours d'exécution. J'ai appuyé sur le bouton" Redémarrer " à l'intérieur de L'Expo XDE et il a immédiatement commencé à fonctionner. Voici le journal où j'ai appuyé sur le bouton de redémarrage à 1: 13: 04 AM:

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 peuvent avoir besoin d'utiliser la même version d'adb afin Qu'Expo puisse communiquer correctement avec le périphérique simulé. Pointant Genymotion à votre emplacement SDK android ainsi que d'assurer Expo XDE a cette même version permettra une communication correcte entre les appareils. J'ai déplacé la version Expo XDE vers L'emplacement du SDK, mais vous pourriez être en mesure d'aller dans l'autre sens (prenez les fichiers sdk ADB et placez-les dans la ressource Expo XDE emplacement).

PS j'ai été tout au long des messages de stackoverflow liés à ce problème. Juste pour que vous sachiez que mon gestionnaire de tâches montre trois instances de la BAD.exe en cours d'exécution. Si vous tuez l'un d'eux, ils reviennent.

J'espère que cela aide / cheers

9
répondu Kyle s 2017-08-02 08:59:20

Peut-être que vos versions adb ne correspondent pas

Vérifier:

adb version 

Puis:

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 /

4
répondu Aldo RVV 2018-07-11 18:48:44

J'ai eu un problème similaire.

Tout d'Abord, j'ai désinstallé l'application. Ensuite, J'ai pointé GenyMotion vers le sdk android fourni par Android Studio Ensuite, j'ai couru "adb kill-server" dans le terminal. Enfin, j'ai relancé "react-native run-android" et j'ai obtenu un succès de construction.

2
répondu VocoJax 2017-09-21 14:39:28

J'ai eu la même chose pendant que j'essayais de courir depuis expo UI. A fait les mêmes choses, comme décrit dans les réponses, mais l'application ne fonctionnait pas. Quand une fois essayé run exp android à partir de la ligne de commande (dans le dossier du projet), l'application s'est exécutée avec succès et les prochaines fois s'exécute à partir de L'interface utilisateur Expo a été réussie.

1
répondu Aleksandr Suhhinin 2017-08-10 05:53:24

Les étapes ont fonctionné pour moi sont:

  • $ ADB tuer-serveur

  • $ serveur de démarrage adb

  • $ cd android

  • $ ./gradlew propre

  • $ cd ..

  • $ réaction d'exécution natif android

1
répondu Cool7 2018-03-25 15:18:01

, Si vous voulez garder votre système propre, vous pouvez également utiliser Genymotion sans Android Studio:

  1. trouvez la copie de Genymotion de adb. Sur macOS c'est normalement /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 depuis votre terminal.

(à Partir de https://docs.expo.io/versions/latest/workflow/genymotion)

1
répondu cseelus 2018-05-22 00:00:24

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

  1. Vérifiez la version sys adb exécutez la commande ci-dessous

Bad version

Android Debug Bridge version 1.0.39

  1. vérifier la version sdk adb

Cd / root / Android / Sdk / platform-tools

./ version adb

Version du Pont de débogage Android 1.0.32

  1. Copier

Rm /usr/bin/bad

[Note: la commande ci-dessus supprime la BAD existante puis copie la BAD du répertoire sdk / platform-tools]

Sudo cp /root/Android/Sdk/platform-tools/bad /usr/bin/bad

Ensuite, exécutez le projet en utilisant cette commande

Réagir indigènes de l'exécution android

0
répondu Hoque MD Zahidul 2018-08-14 10:43:24