2014-12-02 1 views
6

Ich muss eine Testanwendung bereitstellen und Befehle auf einem Gerät ausgeben, das mit einem Computer mit IP xxx.yyy.zz.pp im selben Netzwerk verbunden ist.Wie kann ich Anwendung auf einem remote laufenden Gerät mit adb (android platform-tools) bereitstellen/ausführen?

Ich lese durch http://developer.android.com/tools/help/adb.html#directingcommands, aber ich bin nicht in der Lage, Antworten zu bekommen.

Ich versuchte mit platform-tools/adb connect <remote machine IP>, aber keine ich got unable to connect Fehler.

Gibt es eine Möglichkeit zum Bereitstellen und Ausführen von Befehlen auf einem Remote-Emulator oder Gerät mit Hilfe von ADB-Tool?

Antwort

8

Vom adbtag wiki:

Android Debug Bridge (adb) ist ein vielseitiges Kommandozeilen-Tool, das lässt Sie mit einem Emulator-Instanz oder verbunden Android- Gerät kommunizieren. Es ist ein Client-Server-Programm, das drei Komponenten enthält:

  1. Ein Client, der auf Ihrem Entwicklungscomputer ausgeführt wird. Sie können einen Client von einer Shell aus aufrufen, indem Sie einen adb-Befehl ausgeben. Andere Android-Tools wie das ADT-Plugin und DDMS erstellen auch adb-Clients.
  2. Ein Server, der als Hintergrundprozess auf Ihrem Entwicklungscomputer ausgeführt wird. Der Server verwaltet die Kommunikation zwischen dem Client und dem Adb-Dämon, der auf einem Emulator oder Gerät ausgeführt wird.
  3. Ein Daemon, der als Hintergrundprozess für jede Emulator- oder Geräteinstanz ausgeführt wird.

adb connect Befehl wird verwendet, um die lokale server mit einem daemon zu verbinden über ein Netzwerk device verbunden. Aber was Sie wollen, ist eine lokale client an eine entfernte server anzuschließen. Um das zu erreichen, benötigen Sie die neueste Version adb, die sowohl auf lokalen als auch auf Remote-Systemen installiert ist.

eine Instanz von adb server auf dem Remote-System starten (die eine, die Sie die Geräte in Aufstecken werden) mit diesem Befehl:

adb -a -P <PORT_NUMBER> nodaemon server 

Jetzt sollten Sie in der Lage sein zu senden adb Befehle an das remote ausgeführt server von Ihrem lokalen System von -H <REMOTE_IP> -P <PORT_NUMBER> auf alle Ihre adb Befehle vorangestellt:

adb -H <REMOTE_IP> -P <PORT_NUMBER> devices 

Alternativ Einstellung ANDROID_ADB_SERVER_ADDRESS=<REMOTE_IP> und ANDROID_ADB_SERVER_PORT=<PORT_NUMBER> Umgebungsvariablen auf der Client-Seite würden Sie vermeiden, die <REMOTE_IP> und <PORT_NUMBER> für jeden adb Befehl angeben müssen.

Und wenn weggelassen, würde die <PORT_NUMBER> standardmäßig auf 5037.

+0

Danke, das hat geholfen. Wir können AVDs auch auf einem Computer (oder verbundenen Geräten) erstellen und dann Andriod-Plattform-Tools verwenden, um eine Verbindung zu AVDs herzustellen – amjad

1

Was ist mit der Verwendung von SSH, um eine Verbindung zu dem Computer herzustellen, an dem Ihr Gerät angeschlossen ist, und von dort aus den ADB-Befehl auszugeben? Das ist zumindest das, was wir in unserer Firma machen, wo wir Dutzende von Geräten haben, die wir kontrollieren.

1

Vielleicht wird dies helfen:

Es ist eine Java-Bibliothek, die ich mit dem Fern adb Befehle im Kopf vor speziell wenigen Monaten entwickelt haben. Die Grundidee bestand darin, eine Abstraktionsebene bereitzustellen, auf der auf ähnliche Weise auf entfernten Maschinen zugegriffen werden konnte, wie sie lokal verbunden waren. Check it out:

https://github.com/lesavsoftware/rem-adb-exec

PS. und es verwendet SSH-Tunnel, so dass es sicher genug sein sollte.