2015-04-10 10 views
12

Ich habe ein Docker-Bild erstellt, das das Android-SDK enthält und versuche, mein Android-Smartphone in einem Container mit diesem Bild freizulegen. So habe ich die --privileged Flagge und montiert die USB-Geräte wie folgt:Verbinden mit einem USB-Android-Gerät in einem Docker-Container über adb

$ docker run --privileged -v /dev/bus/usb:/dev/bus/usb -d -P my-android:0.0.1 

Allerdings, wenn ich adb Geräten laufen, ist es mir nicht zeigen, das USB-Gerät

[email protected]:~/Android/Sdk/platform-tools$ ./adb devices 
* daemon not running. starting it now on port 5037 * 
* daemon started successfully * 
List of devices attached 

[email protected]:~/Android/Sdk/platform-tools$ 

lsusb im Inneren des Behälters das Gerät enthält:

[email protected]:~$ lsusb 
... 
Bus 002 Device 017: ID 04e8:6866 Samsung Electronics Co., Ltd GT-I9300 Phone [Galaxy S III] (debugging mode) 

Das Gerät jedoch sichtbar in der Host ist:

⇒ ./adb devices  
List of devices attached 
4d11abcd65b74045 device 

Host-OS

$ uname -a 
Linux ananya 3.16.0-33-generiC#44~14.04.1-Ubuntu SMP Fri Mar 13 10:33:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 

Docker Version

Was könnte das Problem sein?

+3

Ich glaube nicht das adb Dämon in dem Gerät ausgeführt wird, kann auf zwei adb-Server angeschlossen werden. Versuchen Sie, die Verbindung zur Adverb des Host-Rechners zu trennen und verbinden Sie sie dann mit dem adb des Andockers. – jlhonora

+0

Super! Das scheint der Grund zu sein. Ich habe die Host-Maschine Adb getrennt und es hat gut funktioniert. Vielen Dank! Sie können eine Antwort posten, so dass ich sie als die richtige Antwort markieren kann. – buzypi

Antwort

11

Ich glaube nicht, dass der adb-Daemon, der auf dem Gerät läuft, mit zwei adb-Servern verbunden werden kann. Versuchen Sie, die Verbindung zur Adverb des Host-Rechners zu trennen und verbinden Sie sie dann mit dem adb des Andockers.

+1

Nachdem ich dies schon seit einiger Zeit benutze, sehe ich, dass der adb-Daemon automatisch auf dem Host startet und dies verhindert die Verbindung mit dem Docker-Container. Wenn Sie den Adb-Daemon im Host beenden, kann der Adb-Daemon des Docker-Containers mit dem Telefon kommunizieren. – buzypi

0

Wir versuchen, verschiedenen Docker-Containern, auf denen TeamCity-Clients laufen, verschiedene USB-Busse zuzuweisen.

Jeder Container benötigt die Einstellung ANDROID_ADB_SERVER_PORT für einen anderen Port (da kein segregiertes Netzwerk verwendet wird).

Der Hostcomputer kann adbd nicht ausführen, da nur ein adbd zu einem bestimmten Zeitpunkt mit einem Telefon sprechen kann.

Jeder Container erhält eines der Verzeichnisse/dev/bus/usb/xxx, so dass wir Telefone in bestimmte Container stecken können.

Wir müssen das Verzeichnis/dev/bus/usb/xxx alle paar Sekunden synchronisieren, um hot-plugging und Neustarts zu ermöglichen - nur eine Shell-Schleife auf dem Host, auf dem tar cf devxxx.tar/dev/bus/usb läuft/xxx, docker cp, um es zu übertragen, dann docker exec, um in/tmp des Containers zu entpacken, diff, um zu löschende Knoten zu erkennen, und mv -n, um neue Knoten zu verschieben.


In der Tat, weil wir auf Linux laufen lassen, können wir wahrscheinlich nur udev-Skripte eingerichtet, pro http://ubuntuforums.org/archive/index.php/t-502864.html

0

Während ich das gleiche versuchte ich in einige andere Probleme lief zu, dass im Zusammenhang, was ich möchte, so dass andere Mai teilen ihre Zeit sparen:

Problem 1: lsusb wurde am Behälter nicht installiert

In meinem Fall lsusb nicht installiert wurde, installierte es so mit folgendem Befehl ein:

apt-get update 
apt-get install usbutils 

Problem 2: nicht in der Lage Installationsgerät auch nach lsusb und adb sdk sehen

Sie benötigen, um Ihre Container mit Option -v neu zu starten und ja nicht vergessen adb Server zu töten, wie in einem der Antwort angegeben

auf host:

adb-kill server 
docker run -ti -d --privileged -v /dev/bus/usb:/dev/bus/usb container_name 

Falls jemand wollte es von Grund auf neu, ich habe einen Blog auf sie geschrieben:

http://learningbysimpleway.blogspot.in/2018/02/how-to-connect-adb-devices-to-linux.html

+0

@chade_ Ich werde meine Antwort aktualisieren –

+1

"Ich fand diese URL ziemlich nützlich" ... kommt von jemandem, der diese URL geschrieben hat, scheint * sehr suspicious *. Sie sollten Ihre Mitgliedschaft in Ihrem Blog veröffentlichen. – FrankerZ

+0

@FrankerZ Ich habe diesen Blog geschrieben, wenn Sie denken, dies verstößt gegen eine SO-Norm, kann ich die URL entfernen –

Verwandte Themen