2016-03-12 11 views
125

Ich arbeite mit React-Native, Android und Genymotion auf Mac. Als ich react-native run-android laufen bekomme ich diese Zeilen am Ende des Startvorganges:React-Native, Android, Genymotion: ADB-Server hat nicht ACK

... 
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. 
... 

jedoch adb devices gibt dieses:

List of devices attached 
192.168.59.101:5555 device 

Bisher habe ich keine Lösung gefunden meine Anwendung auf dem laufen Emulator. Ist jemand auf dasselbe Problem gestoßen?

Danke, Paul

+0

Dieser Fehler kann unabhängig von Genymotion auftreten. –

Antwort

292

Nach mehr Forschung, die ich realisiert habe, dass Genymotion standardmäßig adb seine eigene verwendet.

enter image description here

Ich wechselte zu meiner Haupt adb (dieselbe durch reagieren-native verwendet wird) und es das Problem gelöst. Ich nehme an, dass, weil Genymotions adb zuerst gestartet wurde, ich die Address already in use Fehlermeldung erhielt.

+4

Vielen Dank für das Posten.Ich hatte fast einen Herzinfarkt, ich habe letzte Nacht meine Android-Studios 2.1 auf Preview 3 aktualisiert und Genymotion wird sich nicht mehr verbinden. Das hat mir geholfen, es zu lösen. – Simon

+6

Ich habe diese Lösung versucht, aber ich habe immer noch den gleichen Fehler. Gibt es alternative Lösungen? – calclavia

+1

@ user2254679 hast du diesen Thread auch überprüft? http://stackoverflow.com/questions/5703550/my-eclipse-adb-server-didnt-ack-failed-to-start-daemon?rq=1 – Paul

40

Ich benutze Genymotion, aber Pauls Lösung allein hat den Fehler nicht behoben (für Mac).

Ich musste:

-Update Android SDK auf die neueste Version (24.4.1) über den SDK-Manager

Typ android in der Befehlszeile

Im SDK-Manager finden die neueste SDK-Tools und installieren.

Nach der Installation sollte der SDK-Pfad den neuen SDK-Speicherort wie folgt aktualisieren.

enter image description here

dann die $ ANDROID_HOME aktualisieren das neue SDK mit echo $PATH hinzugefügt wurde, indem Sie Ihren Weg

export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1

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

Confirm verwenden

Dann in genymotion tun, was @ Paul sagt oben und Punkt genymotion ADB die gleiche sdk

enter image description here

+0

Es funktioniert für Ubuntu 16.04. Aus irgendeinem Grund dachte ich, $ $ ANDROID_HOME/tools'-Verzeichnis wäre nicht notwendig auf dem Klassenpfad. Sie müssen hinzufügen, um sich mit adb zu verbinden. – Orar

1

-System zu verwenden: Windows-10

Mein Problem: Einstellung Genymotion auf die Punkt benutzerdefiniertes SDK hatte keine Auswirkungen. Ich habe immer noch die:

Couldn't start project on Android: 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

Was ich entdeckte war, gab es einen Unterschied in ADB-Versionen, die im gesamten System verwendet werden.Hier ist der Befehl, den ich verwenden, um sie zu finden:

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 Laufen:

adb.exe version 

erlaubte mir, dass Expo zu sehen war laufende ADB-Version:

Android Debug Bridge version 1.0.36 
Revision fd9e4d07b0f5-android 

Während Genymotion die benutzerdefinierte Verwendung hatte SDK-Version (c: \ Benutzer 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 haben (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) von

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

und legte sie in einen Backup-Ordner. Ich habe dann die ADB-Dateien bewegt, die bei

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

an der gleichen Stelle befinden, die bei

gelegen sind. Ich tötete adb mit:

adb kill-server 

, die einen Neustart des adb Servers automatisch verursacht durch meine Genymotion Gerät bereits mit ausgeführt wird. Ich habe den "Restart" Button innerhalb der Expo XDE gedrückt und sofort angefangen zu arbeiten. Hier ist das Protokoll, wo ich traf die Restart-Taste bei 01.13.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). 

Fazit: Genymotion und Expo müssen die gleiche Version von adb verwenden, so dass Expo richtig mit dem simulierten kommunizieren kann Gerät. Genymotion auf Ihren Android SDK-Standort zu verweisen und sicherzustellen, dass Expo XDE dieselbe Version hat, ermöglicht eine korrekte Kommunikation zwischen Geräten. Ich habe die Expo XDE-Version an den SDK-Standort verschoben, aber Sie können möglicherweise in die andere Richtung gehen (nehmen Sie die SDK ADB-Dateien und legen Sie sie in den Expo XDE-Ressourcenspeicherort).

P.S. Ich habe die Stackoverflow-Beiträge zu diesem Problem durchsucht. Nur damit ihr wisst, dass mein Aufgabenmanager drei Instanzen von adb.exe ausführt. Wenn Sie einen von ihnen töten, kommen sie einfach zurück.

this helps/prost

0

ich die gleiche Sache hatte, während ich von expo UI zu laufen versucht. Hat die gleichen Dinge, wie in Antworten beschrieben, aber App wurde nicht ausgeführt. Wenn einmal versucht, exp android von der Befehlszeile ausführen (im Projektordner), lief die Anwendung erfolgreich und das nächste Mal läuft von der Expo UI wurde erfolgreich.

2

Ich hatte ein ähnliches Problem.

Zuerst habe ich die App deinstalliert. Dann zeigte ich GenyMotion auf die Android-SDK von Android Studio zur Verfügung gestellt Als nächstes lief ich "adb Kill-Server" in das Terminal. Schließlich habe ich "reactive-native run-android" erneut ausgeführt und einen Build-Erfolg erzielt.