System: Windows 10
Mein Problem: Das Festlegen von Genymotion auf das benutzerdefinierte SDK hatte keine Auswirkungen. Ich habe immer noch erhalten:
Projekt konnte unter Android nicht gestartet werden: Smartsocket-Listener konnte nicht installiert werden: Kann nicht an 127.0.0.1:5037 gebunden werden: Normalerweise ist nur eine Verwendung jeder Socket-Adresse (Protokoll / Netzwerkadresse / Port) zulässig. (10048) konnte nicht OK von ADB Server lesen * Daemon konnte nicht gestartet werden * Fehler: Verbindung zum Daemon nicht möglich
Was ich entdeckte, war, dass es einen Unterschied in den ADB-Versionen gab, die im gesamten System verwendet wurden. Hier ist der Befehl, mit dem ich sie gefunden habe:
where /r C:\ adb.exe
Dies ergab die Ergebnisse:
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
Zu jedem Verzeichnis navigieren und ausführen:
adb.exe version
Ich durfte sehen, dass auf der Expo die ADB-Version ausgeführt wurde:
Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android
Während Genymotion mit dem benutzerdefinierten SDK die Version hatte (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
Als Test habe ich die adb-Dateien (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) von genommen
c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
und legte sie in einen Sicherungsordner. Ich habe dann die ADB-Dateien verschoben, die sich unter befinden
c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
in den gleichen Ort. Ich habe adb getötet mit:
adb kill-server
Dies führte automatisch zu einem Neustart des ADB-Servers, da mein Genymotion-Gerät bereits ausgeführt wurde. Ich drückte auf die Schaltfläche "Neustart" in der Expo XDE und es begann sofort zu funktionieren. Hier ist das Protokoll, in dem ich um 01:13:04 Uhr auf die Schaltfläche zum Neustart geklickt habe:
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).
Fazit: Genymotion und Expo müssen möglicherweise dieselbe Version von adb verwenden, damit Expo ordnungsgemäß mit dem simulierten Gerät kommunizieren kann. Wenn Sie Genymotion auf Ihren Android SDK-Standort verweisen und sicherstellen, dass Expo XDE dieselbe Version hat, können Sie korrekt zwischen Geräten kommunizieren. Ich habe die Expo XDE-Version an den SDK-Speicherort verschoben, aber Sie können möglicherweise auch in die andere Richtung gehen (nehmen Sie die SDK-ADB-Dateien und platzieren Sie sie am Speicherort der Expo XDE-Ressource).
PS Ich habe alle Stackoverflow-Beiträge zu diesem Problem durchgesehen. Nur damit ihr wisst, dass mein Task-Manager drei Instanzen von adb.exe anzeigt. Wenn Sie einen von ihnen töten, kommen sie einfach zurück.
Hoffe das hilft / jubelt