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
9 réponses
Après plus de recherches, J'ai réalisé que Genymotion utilise par défaut sa propre Bad.
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
.
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.
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
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
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 /
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.
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.
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
, Si vous voulez garder votre système propre, vous pouvez également utiliser Genymotion sans Android Studio:
- trouvez la copie de Genymotion de
adb
. Sur macOS c'est normalement/Applications/Genymotion.app/Contents/MacOS/tools/
. - 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
. - Assurez-vous que vous pouvez exécuter adb depuis votre terminal.
(à Partir de https://docs.expo.io/versions/latest/workflow/genymotion)
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
- Vérifiez la version sys adb exécutez la commande ci-dessous
Bad version
Android Debug Bridge version 1.0.39
- vérifier la version sdk adb
Cd / root / Android / Sdk / platform-tools
./ version adb
Version du Pont de débogage Android 1.0.32
- 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