it-swarm.com.de

Android USB-Debugging in VirtualBox

Ich versuche, Mono für Android (auch bekannt als Monodroid) in einer virtuellen Windows 7-Maschine auf virtualbox zum Laufen zu bringen, aber ich habe Probleme mit der ADB-Verbindung zu meinem Telefon. Wenn ich "adb devices" ausführe, um die vorhandenen Geräte aufzulisten, ist dies kein Problem, aber wenn ich versuche, eine "adb install", logcat oder Push it auszuführen, hängt es. Momentan gibt es einen Fehler in der virtualbox, der darauf zutrifft, aber ich hatte gehofft, dass jemand, der sich besser auskennt als ich, einen Workaround finden würde.

https://www.virtualbox.org/ticket/6620

Grob gesagt wäre dies kein Problem, wenn Xamarin einen Linux-Port seines Produkts freigeben würde oder wenn ich mich mit Java vertraut machen würde, aber ich nehme an, dass dies etwas andere Probleme sind.

12
Brian

Brian, eine mögliche Problemumgehung besteht darin, Ihren VM -Host ebenfalls zu einem ADB-Host zu machen. Dann können Sie einfach Ihren VM Client über TCP/IP mit ihm verbinden. Hier ist die allgemeine Idee für dieses Setup:

  1. Installieren Sie das Android SDK auf dem Host-Computer. Sie sollten nur das Plattform-Tools-Paket benötigen, das adb enthält.
  2. Erlauben Sie Ihrem VM -Client nicht, den Besitz des Android-Geräts zu übernehmen. Deaktivieren Sie daher alle von Ihnen festgelegten VirtualBox-USB-Filterregeln, und es würde auch nicht schaden, das Gerät zu trennen und erneut zu verbinden.
  3. Führen Sie auf Ihrem VM Client adb kill-server aus. Machen Sie es mit Sicherheit zu einem tskill adb. Wenn Instanzen von Eclipse ausgeführt werden, sollten Sie diese zuerst beenden, da adb im Hintergrund gestartet wird. Überspringen Sie diesen Schritt nicht.
  4. Führen Sie auf dem Host adb devices aus. Wenn alles gut geht (und es sollte), wird Ihr Gerät aufgelistet. Es sollte ungefähr so ​​aussehen (notiere die Portnummer und entschuldige das Mangeln):

    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    List of devices attached
    015d2994ed200409    device
    

Zu diesem Zeitpunkt sollte auf Ihrem Host ein ADB-Server an Port 5037 ausgeführt werden. Sie können dies auf dem VM -Client überprüfen, indem Sie telnet 10.0.2.2 5037 ausführen, wobei 10.0.2.2 die Standard-IP für VirtualBox-Hosts und 5037 der Standard-ADB-Port ist oben angemerkt.

  1. Jetzt müssen Sie entweder die Ports von Ihrem Host an Ihren VM -Client weiterleiten oder ADB auf andere Weise direkt mit Ihrem Host-IP: -Port verbinden. Wenn Sie wie ich sind, werden Sie feststellen, dass die Variablen ADBHOST und Android_ADB_SERVER_PORT schlecht dokumentiert sind und sich leicht vermasseln lassen. Betrachten Sie aus diesem Grund das einfache Weiterleiten von Ports über ssh (möglicherweise über Cygwin) wie folgt vom VM-Client aus:

    autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
    
  2. Führen Sie schließlich adb devices von Ihrem VM -Client aus. Wenn Sie sehen, dass der Dämon nicht ausgeführt wird, bedeutet dies, dass die Port-Weiterleitung fehlerhaft ist. Andernfalls sollten Sie Ihr Gerät sehen und sich den ganzen Tag anmelden können. Ein bemerkenswerter Punkt ist, dass auf Ihrem VM -Client kein adb-Daemon ausgeführt wird, außer natürlich, wenn Sie tatsächlich die Debug-Bridge verwenden.

Ich habe einen ähnlichen Mechanismus zum Debuggen von Geräten über das Netzwerk verwendet, die mit Remotecomputern verbunden sind, und es hat gut funktioniert.

29

Ich bin mir nicht sicher, was sich in VirtualBox seit dem Versenden der Frage geändert hat, wähle jedoch das USB-Gerät aus dem VirtualBox-Menü Geräte -> USB -> Gerätename und arbeite nahtlos. Ich arbeite an VirtualBox 5.1.2 r108956.

8
FUD

Ich hatte das gleiche Problem und musste ungefähr 2 Stunden suchen. Ich habe verschiedene Ansätze ausprobiert, einschließlich aller oben genannten Lösungen, aber keiner von ihnen hat funktioniert

Meine Situation

Mein Host war Archlinux und der Gast war Windows 8.1. Ich führte Flash Builder unter Windows aus, aber das USB-Debugging funktionierte nicht und mein verbundenes Gerät war Nexus 5, also folgte ich diesen Schritten

  1. Aktivieren Sie den USB-Controller über das Virtualbox-Menü Maschine -> Einstellungen -> USB-Controller aktivieren und USB 2.0 (EHCI) -Controller aktivieren. Fügen Sie dann Ihr Gerät hinzu (klicken Sie auf die Schaltfläche + auf der rechten Seite) und starten Sie die virtuelle Maschine
  2. Jetzt sollten Sie die neuesten Google USB-Treiber von hier herunterladen und extrahieren
  3. Gehen Sie in den Geräte-Manager des Control Panels, klicken Sie mit der rechten Maustaste auf Ihr Gerät, wählen Sie die Registerkarte Treiber und klicken Sie auf Treiber aktualisieren. Es sollten zwei Optionen für eine automatische Suche vorhanden sein Unterordner-Option) Danach sollte Ihr Gerät von Windows erkannt werden und auf Ihrem Android-Gerät wird eine Meldung angezeigt, die den Zugriff auf Ihr Gerät ermöglicht

In meinem Fall sollte ich die Treiber auch auf den Flashbuilder-Android-Treiberpfad kopieren, aber für Ihre Situation ist dies möglicherweise nicht erforderlich

1
zoli

Ich hatte das gleiche Problem mit VirtualBox 5.0.14 und die von Stephen Niedzielski bereitgestellte Lösung hat bei mir nicht funktioniert. Wenn jemand noch interessiert ist, kann diese Lösung versuchen.

Meine Umgebung ist:

  • Host-Betriebssystem: Mac OS 10.11
  • Gastbetriebssystem in VirtualBox: Ubuntu 14.04
  • Gerät: Galaxy S5 mit Cyanomodgen 12.1

Starten Sie einen WLAN-Hotspot im Host-Betriebssystem und verbinden Sie dort das Android-Gerät oder verbinden Sie beide in einem Router. Stellen Sie in der Virtualbox den Netzwerkmodus für das Gastbetriebssystem auf "Bridged Adapter" ein und wählen Sie dann den Namen des WLAN-Adapters aus. Auf diese Weise befinden sich Host-Betriebssystem und Android-Gerät im selben Netzwerk.

Aktivieren Sie dann im Android-Gerät den Entwicklermodus und aktivieren Sie "ADB über Netzwerk", das von Cyanomodgen bereitgestellt wird. (Bei Geräten mit der Originalversion von Android, googeln Sie, wenn möglich, wie ADV über das Netzwerk verwendet wird.) Führen Sie auf dem Host-Betriebssystem 'adb kill-server' aus und stellen Sie sicher, dass keine Instanz von ADB ausgeführt wird. Führen Sie dann den Befehl 'adb connect 192.168.2.12', ip des Android-Geräts, aus.

Herzlichen Glückwunsch :) Jetzt können Sie ADB mit einem Android-Gerät verwenden, um logcat- oder pull- und push-Dateien aufzunehmen.

1
Enis

Ich hatte auch Probleme mit ADB, das über VM läuft. Ich hatte einen Windows 10 Host und einen Ubuntu 14.04 Client. Die Methode autossh hat bei mir nicht funktioniert. Ich fand eine einfachere Lösung aus einer anderen StackOverflow-Frage . Voraussetzung ist, dass sich sowohl Ihr PC als auch Ihr Gerät im selben WiFi-Netzwerk befinden.

  1. Führen Sie auf Ihrem VM -Client Folgendes aus: adb tcpip 5555

    Das Gerät wird von der Verbindung zu VM getrennt, da sich ADB jetzt im TCP Modus anstelle von USB befindet.

  2. Für den nächsten Teil benötigen Sie die IP-Adresse Ihres Geräts. Um es zu finden, führen Sie einfach adb Shell ip -f inet addr show wlan0 aus.

  3. Jetzt können Sie eine Verbindung zu Ihrem Gerät herstellen. Führen Sie auf Ihrem VM Client Folgendes aus:

    adb connect <Device IP>:5555

Von hier aus liefen alle meine AdB-Shell-, Logcat- und Affensitzungen ohne Unterbrechung!

0
Nebel22