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
Après d’autres recherches, j’ai réalisé que Genymotion utilise par défaut son propre adb.
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
.
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.
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
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
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 /
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
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
version adb
Android Debug Bridge version 1.0.39
cd/root/Android/Sdk/plateforme-outils
version ./adb
Android Debug Bridge version 1.0.32
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
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.
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.
Si vous souhaitez que votre système reste propre, vous pouvez également utiliser Genymotion sans Android Studio :
adb
. Sur macOS, il s’agit normalement de /Applications/Genymotion.app/Contents/MacOS/tools/
.export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH
à votre ~/.bash_profile
ou ~/.bash_rc
.(De https://docs.expo.io/versions/latest/workflow/genymotion )
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.