Ich versuche, adb über 'wifi' für mein emuliertes Gerät zu verwenden. Ich emuliere ein Gerät auf meinem Computer und wollte Android Studio verwenden, um eine APK an es zu senden, aber über die Netzwerkbuchsen, nicht über emulierten USB. Ich weiß, dass in Android Studio alles sofort einsatzbereit ist, aber ich muss es auf diese Weise tun
Ich folge diesem Tutorial: https://developer.android.com/studio/command-line/adb.html#wireless
Ich fange damit an
~/Android/Sdk/emulator$ ./emulator -avd Pixel_XL_API_27
Dann sehe ich, dass USB-Debugging aktiviert ist. Ich tue es dann
./adb tcpip 5555
restarting in TCP mode port: 5555
Beachten Sie, dass . /adb tcpip 5555
ist willkürlich. Ich habe nicht einmal angegeben, welches Gerät bei 5555 neu gestartet und verbunden werden soll. Was wäre, wenn ich 2 Emulatoren laufen hätte?
Ich sollte jetzt für ein normales USB-Gerät den Stecker ziehen, aber dann gehe ich zu den Entwickleroptionen in meinem emulierten Telefon und deaktiviere das USB-Debugging.
Ich sehe auch, dass die IP-Adresse in den Systemeinstellungen der Telefonanlage emuliert wird192.168.232.2
dann lande ich bei:
./adb connect 192.168.232.2
unable to connect to 192.168.232.2:5555: Connection timed out
Das habe ich auch gemacht:
./adb devices
List of devices attached
emulator-5554 device
./adb connect 192.168.232.2:5554
unable to connect to 192.168.232.2:5554: Connection timed out
AKTUALISIEREN:
Laut Android Tutorial on ADB läuft auf meinem Computer ein Server auf Port 5037. Das Android-Gerät (in diesem Fall mein Emulator) führt einen Daemon aus und mein adb-Skript in Sdk/platform-tools ist ein Client. Wenn ich einen Client in meiner virtuellen Maschine ausführen möchte, muss ein Server darauf laufen. Aber stattdessen kann ich einfach den 5037-TCP-Port von der VM an den 5037-TCP-Port des Hostcomputers weiterleiten. Ich habe es mit tcptunnel gemacht , indem ich Folgendes gemacht habe:
./tcptunnel --local-port=5037 --remote-host=192.168.122.1 --remote-port=5037 --stay-alive
Wenn ich dann adb auf meiner VM ausführe, wird es eine Verbindung zum adb-Daemon auf meinem Hostcomputer herstellen, der mit dem adb-Server meines Emulators kommunizieren wird. Wenn ich adb devices
die VM ohne die TCP-Weiterleitung ausführe, versucht sie, einen neuen Server zu starten. Wenn ich diesen Server töte und th tcpforwarded öffne und es erneut mache, versucht er nicht, einen neuen Server zu erstellen. Das ist ein gutes Zeichen. TCPtunnel gibt mir jedoch Folgendes:
build_tunnel: connect(): Connection refused
Etwas blockiert die Verbindung
UPDATE 2:
Es stellt sich heraus, dass tcptunnel nicht erforderlich ist, da adb
es die H
Option gibt, mit der ich die IP angeben kann, auf der der Server läuft. Ich weiß jedoch nicht, ob es in Android Studio möglich ist, dies anzugeben. Wie auch immer:
./adb -H 192.168.122.1 devices
List of devices attached
* cannot start server on remote host
error: cannot connect to daemon at tcp:192.168.122.1:5037: Connection refused
Ich habe vergessen, dass sich der adb-Daemon an bindet localhost
, und ich habe versucht, von darauf zuzugreifen 192.168.122.x
.
Mit socat
konnte ich den ADB-Client von meiner VM auf den ADB-Daemon auf meinem Host-Rechner umleiten, der eine Verbindung mit dem ADB-Server (meinem emulierten Telefon) herstellte.
Meine Hostmaschine war 192.168.122.1
von der virtuellen Maschine aus erreichbar, aber die war an oder adb daemon
gebunden . Ich habe gerade:127.0.0.1
localhost
#on host machine:
socat tcp-listen:5037,bind=192.168.122.1,reuseaddr,fork tcp:localhost:5037
#on virtual machine:
socat tcp-listen:5037,bind=localhost,reuseaddr,fork tcp:192.168.122.1:5037
Stellen Sie sicher, dass Sie den Adb-Server auf der virtuellen Maschine beenden /path/to/android/sdk/platform-tools/adb kill-server
. Der ADB-Server versucht immer, sich zu binden, 5037
wenn nichts da ist. Wenn also socat bereits auf beiden Seiten adb server
läuft und das auf dem host
Machie läuft, stellt es beim Starten von Android Studio auf der VM automatisch eine Verbindung zum externen Adb-Server her stellt eine Verbindung zu Ihrem emulierten Telefon her.
Zum Testen benötigen Sie kein Android Studio auf der virtuellen Maschine. Sie können einfach /path/to/android/sdk/platform-tools/adb devices
auf der virtuellen Maschine sehen, ob socat sie an den adb-Daemon auf dem Host umleitet, der das emulierte Telefon auflistet.
MA
Guerlando-OCs
MA
Guerlando-OCs
MA
Guerlando-OCs