私はターゲットデバイスにデプロイできるAndroidアプリケーション/サービスを作成しようとしています。このアプリは、ターゲットデバイスをリモートコントロールするためのフックとして使用できます。 Jelly Beanのリリースから、同様の機能を提供するUI Automatorの実装が利用可能です。しかし、UI AutomatorはADBインターフェイス経由でしか使用できないようです。デバイス上で実行されているアプリケーションは、UI Automatorを直接使用することはできません(???)。私はADBの助けなしに働くことができる解決策を見出そうとしています。たとえば、フックはprotobufサーバーとしてソケットでリスンすることができます。クライアントは、遠隔制御およびデバイスへのフックにコマンドを送ることができる。 Andorid SDKのソースコードを調べました。唯一の方法はAndroidアクセシビリティAPIを使用することです。もっと良い方法があるのだろうか?1つのAndroidアプリケーションがUI Automatorを介して別のアプリケーションを制御できますか?
8
A
答えて
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");
4
あなたはSU権限を持っていない限りUiAutomatorのテストケースを実行する(WIFIまたはケーブル経由)ADB接続が必要です。 su権限を使用すると、デバイス自体からuiautomatorを実行できます。
UiAutomatorのテストケースでは、ソケット、webSocket、その他の通信プロトコルを実装することができます。そのため、テストケースで外部との通信接続が公開され、他のデバイスが接続できます。この場合、テストケースを実行するためにADB接続が1回だけ必要です。その後、テストケースを切断できます。
1
コードをリモートで実行することができます。
デバイスがルートされている場合は、最初にデバイスをマシンに接続し、adb tcpip 5555を使用します。これにより、リスニングポートが5555に転送され、デバイス上で実行されるマシン上でスクリプトを実行できます。単にadb -sシェルを使用してください。
関連する問題
- 1. Android:別のアプリケーションの制御下でアプリケーションを開く
- 2. git制御アプリケーションの1つのフォルダにsvn repoをプル
- 3. PCからBluetooth/Wi-Fiを介してipadアプリケーションを制御する
- 4. 1つのAndroidアプリケーションのAPIを別のAndroidアプリケーションに公開する方法
- 5. 制御アプリケーションPython
- 6. vb.netコードの制御アプリケーションですか?
- 7. 別のアプリケーションから1つのWindowsアプリケーションのコントロールにデータを挿入します。
- 8. Thoughtworks Whiteを使用して別のアプリケーションのウィンドウを制御する
- 9. 1つのスレッドで2つのSurfaceViewを制御できますか?
- 10. 1つのアプリケーションをAndroidの別のアプリケーションに使用する方法
- 11. Windowsアプリケーションの制御フロー
- 12. Pythonで制御Windowsアプリケーション
- 13. 私のアプリケーションのFinish()は別のアプリケーション(ANDROID)を開きます
- 14. 1つのBTデバイスが別のデバイスの表示を制御することができます
- 15. Javaアプリケーションのボリュームを制御する
- 16. Delphiのアプリケーション音量を制御する
- 17. Androidでは、別のアプリケーションからアプリケーションを削除できますか?
- 18. 1つのアプリケーションでMatchCollectionハングアップを使用しますが、別のアプリケーションでは使用しません
- 19. サービスを使用してAndroidのUIフローを制御することはできますか?
- 20. 1つのコマンドで複数の制御ファイルを実行できますか?
- 21. Androidアプリケーションは、独自のストレージスペース内に別のアプリケーションをインストールできますか?
- 22. アプリケーションのデフォルトの自動回転画面を制御します
- 23. Android:1つのアプリケーションに対して1つのHttpClientのインスタンスが複数ある
- 24. 1つのhtmlテンプレートでイベントを使用して、別のテンプレートの[hidden]要素を制御します。角度2
- 25. フレックスで別のアプリケーションから1つのアプリケーションを実行するには?
- 26. 2つの別々のシステムを接続するアイデア。 1つはWindowsアプリケーションで、もう1つはWebアプリケーションです
- 27. 制御アプリケーション設定アクセス
- 28. 別のSilverlightアプリケーションに1つのSilverlightアプリケーションを埋め込む
- 29. KeyEventDispatcherは1つのアプリケーションで動作しますが、別のアプリケーションでは動作しません
- 30. Facebook javascript SDKは1つのアプリケーションIDで動作しますが、別のアプリケーションIDで動作しません。
こんにちは、私はTest.jarファイルを取得しますか?私はAndroidスタジオからuiautomatorテストを実行できます。しかし、JarファイルではなくビルドからAPKを取得します。あなたは助けてもらえますか? – HaseebR7
私はこれをしばらくしていませんが、[このリンク](https://looksok.wordpress.com/2014/02/08/uiautomator-in-eclipse/)は私のために働いていたようです。 基本的にちょうど: *あなたのプロジェクトを作成します: 'android create uitest-project -nはい-t 10 -p .' *あなたのjarをビルドします:' ant build' – tophernuts
ありがとう!それは – HaseebR7