Ich arbeite mit React-Native, Android und Genymotion auf dem Mac. Wenn ich laufe, react-native run-android
bekomme ich diese Zeilen am Ende des Startvorgangs:
...
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.
...
Gibt jedoch adb devices
Folgendes zurück:
List of devices attached
192.168.59.101:5555 device
Bisher habe ich keine Lösung gefunden, um meine App auf dem Emulator auszuführen. Hat jemand das gleiche Problem festgestellt?
Danke, Paul
Antworten:
Nach weiteren Recherchen habe ich festgestellt, dass Genymotion standardmäßig seine eigene ADB verwendet.
Ich habe zu meiner Haupt-ADB gewechselt (die auch von React-Native verwendet wird) und das Problem wurde behoben. Ich denke, weil Genymotions ADB zuerst gestartet wurde, bekam ich die
Address already in use
Fehlermeldung.quelle
/Users/$yourName/Library/Android/sdk
. Wenn Sie Android installiert haben, sollten Sie anhand der Android-Version / Ihrer Plattform nach Ihrem Pfad suchen.Ich verwende Genymotion, aber Pauls Lösung allein hat den Fehler nicht behoben (für Mac).
Ich musste:
Aktualisieren Sie das Android SDK über den SDK-Manager auf die neueste Version (24.4.1)
Geben Sie
android
die Befehlszeile einSuchen Sie im SDK-Manager die neuesten SDK-Tools und installieren Sie sie.
Nach der Installation sollte der SDK-Pfad den neuen SDK-Speicherort wie unten beschrieben aktualisieren.
Aktualisieren Sie dann $ ANDROID_HOME, um das neue SDK zu verwenden
export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Bestätigen Sie, dass es hinzugefügt wurde, indem Sie Ihren Pfad mit anzeigen
echo $PATH
Machen Sie dann in genymotion das, was @Paul oben sagt, und zeigen Sie auf genymotion ADB, um dasselbe SDK zu verwenden
quelle
$ANDROID_HOME/tools
Verzeichnis im Klassenpfad nicht notwendig wäre. Sie müssen hinzufügen, um eine Verbindung zu adb herzustellen.System: Windows 10
Mein Problem: Das Festlegen von Genymotion auf das benutzerdefinierte SDK hatte keine Auswirkungen. Ich habe immer noch erhalten:
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:
Dies ergab die Ergebnisse:
Zu jedem Verzeichnis navigieren und ausführen:
Ich durfte sehen, dass auf der Expo die ADB-Version ausgeführt wurde:
Während Genymotion mit dem benutzerdefinierten SDK die Version hatte (c: \ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe):
Als Test habe ich die adb-Dateien (adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll) von genommen
und legte sie in einen Sicherungsordner. Ich habe dann die ADB-Dateien verschoben, die sich unter befinden
in den gleichen Ort. Ich habe adb getötet mit:
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:
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
quelle
Möglicherweise stimmen Ihre ADB-Versionen nicht überein
Prüfen:
Dann:
Wenn diese beiden unterschiedlich sind, haben Sie hier einen Fehler. Entfernen Sie einfach adb aus sys und kopieren Sie das in den Plattform-Tools enthaltene nach / usr / bin /
quelle
Wenn Sie Ihr System sauber halten möchten, können Sie Genymotion auch ohne Android Studio verwenden :
adb
. Unter macOS ist dies normalerweise der Fall/Applications/Genymotion.app/Contents/MacOS/tools/
.export PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATH
zu Ihrem~/.bash_profile
oder aus~/.bash_rc
.(Von https://docs.expo.io/versions/latest/workflow/genymotion )
quelle
Die ADB-Version auf Ihrem System unterscheidet sich von der ADB-Version auf den Android SDK-Plattform-Tools. Der folgende Vorschlag ist Arbeit für mich für Linux-Betriebssystem
Android Debug Bridge Version 1.0.39
Android Debug Bridge Version 1.0.32
[Hinweis: Mit dem obigen Befehl wird die vorhandene ADB entfernt und die ADB aus dem Verzeichnis sdk / platform-tools kopiert.]
Führen Sie dann das Projekt mit diesem Befehl aus
quelle
Ich hatte das gleiche, als ich versuchte, von der Expo-Benutzeroberfläche aus zu laufen. Hat die gleichen Dinge getan, wie in den Antworten beschrieben, aber die App lief nicht. Beim einmaligen Versuch,
exp android
über die Befehlszeile (im Projektordner) ausgeführt zu werden, wurde die Anwendung erfolgreich ausgeführt, und das nächste Mal wurde die Ausführung über die Expo-Benutzeroberfläche erfolgreich ausgeführt.quelle
Ich hatte ein ähnliches Problem.
Zuerst habe ich die App deinstalliert. Dann habe ich GenyMotion auf das von Android Studio bereitgestellte Android SDK verwiesen. Als nächstes habe ich "adb kill-server" in das Terminal ausgeführt. Schließlich habe ich "React-Native Run-Android" erneut ausgeführt und einen Build-Erfolg erzielt.
quelle
Die Schritte, die für mich gearbeitet haben, sind:
$ adb kill-server
$ adb Startserver
$ cd android
$ ./gradlew sauber
$ cd ..
$ React-Native Run-Android
quelle
Für Ubuntu
Für mich geht das!!
Android Debug Bridge Version 1.0.39
2 Überprüfen Sie die SDK-ADB-Version
Android Debug Bridge Version 1.0.32
das ist alles! Es wird jetzt funktionieren.
quelle
1.Verwenden Sie den benutzerdefinierten SDK-Pfad in Genymotion. (Angenommen, dieser Pfad funktioniert nicht. Versuchen Sie, den zweiten auszuführen.)
2. Verwenden Sie diesen Befehl manuell, um ihn auszuführen (SDK PATH / adb sie startet -n / Paketname / MainActivity).
C: \ Benutzer \ AppData \ Local \ Android \ Sdk / platform-tools / adb Sie startet -n com.example / com.example.ManiActivity
Und versuchen Sie, die Anwendung mit React-Native Run-Android auszuführen.
quelle
Dies sind die Schritte
quelle