10

ターゲット デバイスにデプロイできる Android アプリケーション/サービスを作成しようとしています。このアプリは、ターゲット デバイスをリモートで制御するためのフックとして使用できます。Jelly Bean リリース以降、同様の機能を提供する UI Automator 実装が利用可能になりました。ただし、UI Automator は ADB インターフェイス経由でしか使用できないようです。デバイスで実行されているアプリケーションは、UI Automator を直接使用できません (???)。ADB の助けを借りずに機能する解決策を見つけようとしています。たとえば、フックはソケットを protobuf サーバーとしてリッスンできます。クライアントはフックにコマンドを送信して、デバイスをリモートで制御できます。Andorid SDK のソース コードを調べました。AndroidアクセシビリティAPIを使用するのが唯一の方法のようです。何か良い方法はないか悩んでいます。

4

3 に答える 3

10

アプリケーションから UiAutomator を実行することは可能です。必要なのは、デバイスに Test jar を配置し、アプリケーションに su 権限を与えることだけです。

アプリケーションから次のように呼び出すことができます。

uiautomator runtest Test.jar -c com.package.name.ClassName -e key value

そして、あなたのデバイスは、あなたの UiAutomatorTestCase が実行するものを何でも実行します。

簡単な例:

Process rt = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(rt.getOutputStream());

os.writeBytes("uiautomator runtest Testing.jar -c com.hey.rich.CalculatorDemo" + "\n");
os.flush();
os.writeBytes("exit\n");
于 2013-07-10T01:32:27.960 に答える
5

su 権限がない場合、UiAutomator テスト ケースを実行するには、ADB 接続 (WIFI またはケーブル経由) が必要です。su 権限があれば、デバイス自体から uiautomator を実行できます。

UiAutomator テスト ケースでは、ソケット、webSocket、およびその他の通信プロトコルを実装できるため、テスト ケースは通信接続を外の世界に公開し、他のデバイスがそれに接続できます。この場合、テスト ケースを実行するために ADB 接続が 1 回だけ必要であり、その後切断することができます。

于 2013-07-16T16:11:31.827 に答える
1

コードをリモートで実行できます。

デバイスがルート化されている場合は、最初にデバイスをマシンに接続し、adb tcpip 5555 を使用できます。これにより、5555 のリッスン ポートが転送され、デバイスで実行されるスクリプトをマシンで実行できます。adb -s シェルを使用するだけです

于 2014-05-20T12:24:15.700 に答える