대상 장치에 배포 할 수있는 Android 응용 프로그램/서비스를 작성하려고합니다. 이 앱은 대상 장치를 원격으로 제어하기위한 후크로 사용할 수 있습니다. Jelly Bean 릴리스부터는 비슷한 기능을 제공하는 UI Automator 구현을 사용할 수 있습니다. 그러나 UI Automator는 ADB 인터페이스를 통해서만 사용할 수 있습니다. 장치에서 실행중인 응용 프로그램은 UI Automator를 직접 사용할 수 없습니다 (???). 나는 ADB의 도움없이 일할 수있는 해결책을 찾으려고 노력하고있다. 예를 들어, 훅은 protobuf 서버로서 소켓에서 수신 할 수 있습니다. 클라이언트는 원격 제어 및 장치에 대한 후크 명령을 보낼 수 있습니다. Andorid SDK 소스 코드를 살펴 봤습니다. 유일한 방법은 android 접근성 API를 사용하는 것 같습니다. 더 좋은 방법이 있는지 궁금합니다.하나의 안드로이드 애플리케이션이 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
코드를 원격으로 실행할 수 있습니다.
장치가 루팅 된 경우 먼저 장치와 컴퓨터를 연결하고 adb tcpip 5555를 사용할 수 있습니다. 그러면 수신 포트가 5555로 전달되고 장치에서 실행될 컴퓨터에서 스크립트를 실행할 수 있습니다. 그냥 adb -s 쉘을 사용하십시오.
안녕하세요, 어떻게 Test.jar 파일을 가져 옵니까? Android Studio에서 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