2013-06-06 6 views
8

私はターゲットデバイスにデプロイできるAndroidアプリケーション/サービスを作成しようとしています。このアプリは、ターゲットデバイスをリモートコントロールするためのフックとして使用できます。 Jelly Beanのリリースから、同様の機能を提供するUI Automatorの実装が利用可能です。しかし、UI AutomatorはADBインターフェイス経由でしか使用できないようです。デバイス上で実行されているアプリケーションは、UI Automatorを直接使用することはできません(???)。私はADBの助けなしに働くことができる解決策を見出そうとしています。たとえば、フックはprotobufサーバーとしてソケットでリスンすることができます。クライアントは、遠隔制御およびデバイスへのフックにコマンドを送ることができる。 Andorid SDKのソースコードを調べました。唯一の方法はAndroidアクセシビリティAPIを使用することです。もっと良い方法があるのだろうか?1つのAndroidアプリケーションがUI Automatorを介して別のアプリケーションを制御できますか?

答えて

8

アプリケーションからUiAutomatorを実行することができます。デバイスにTest jarを設定し、アプリケーションにアクセス許可を与えるだけで済みます。

、アプリケーションから、あなたは、単に呼び出すことができます。

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"); 
+0

こんにちは、私はTest.jarファイルを取得しますか?私はAndroidスタジオからuiautomatorテストを実行できます。しかし、JarファイルではなくビルドからAPKを取得します。あなたは助けてもらえますか? – HaseebR7

+0

私はこれをしばらくしていませんが、[このリンク](https://looksok.wordpress.com/2014/02/08/uiautomator-in-eclipse/)は私のために働いていたようです。 基本的にちょうど: *あなたのプロジェクトを作成します: 'android create uitest-project -nはい-t 10 -p .' *あなたのjarをビルドします:' ant build' – tophernuts

+0

ありがとう!それは – HaseebR7

4

あなたはSU権限を持っていない限りUiAutomatorのテストケースを実行する(WIFIまたはケーブル経由)ADB接続が必要です。 su権限を使用すると、デバイス自体からuiautomatorを実行できます。

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

1

コードをリモートで実行することができます。

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

関連する問題