2013-06-06 32 views
8

Tôi đang cố gắng viết một ứng dụng/dịch vụ Android có thể được triển khai trên thiết bị đích. Các ứng dụng có thể được sử dụng như một cái móc để điều khiển từ xa một thiết bị mục tiêu. Bắt đầu từ bản phát hành Jelly Bean, có sẵn giao diện người dùng UI Automator, cung cấp chức năng tương tự. Tuy nhiên, có vẻ như UI Automator chỉ có thể được sử dụng thông qua giao diện ADB. Ứng dụng đang chạy trên thiết bị không thể trực tiếp sử dụng UI Automator (???). Tôi đang cố gắng tìm một giải pháp có thể hoạt động mà không cần sự trợ giúp của ADB. Ví dụ, hook có thể nghe trên socket như một protobuf server. Máy khách có thể gửi lệnh đến hook để điều khiển và thiết bị từ xa. Tôi đã xem xét mã nguồn của Andorid SDK. Có vẻ như cách duy nhất là sử dụng API trợ năng của Android. Tôi tự hỏi liệu có cách nào tốt hơn không?Ứng dụng Android có thể kiểm soát ứng dụng khác thông qua UI Automator không?

Trả lời

8

Có thể chạy UiAutomator từ một ứng dụng, bạn chỉ cần có jar Thử nghiệm trên thiết bị và cấp quyền cho ứng dụng của bạn.

Từ ứng dụng của bạn, bạn có thể sau đó chỉ cần gọi:

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

Và thiết bị của bạn sẽ thực hiện bất cứ điều gì UiAutomatorTestCase của bạn sẽ thực hiện.

nhanh Ví dụ:

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

xin chào, làm cách nào để tải tệp Test.jar? Tôi có thể chạy thử nghiệm uiautomator từ Android Studio. Nhưng tôi nhận được APK từ bản dựng chứ không phải tệp Jar. Bạn có thể giúp đỡ không? – HaseebR7

+0

Tôi đã không làm điều này trong một thời gian, nhưng [liên kết này] (https://looksok.wordpress.com/2014/02/08/uiautomator-in-eclipse/) dường như làm việc cho tôi. Về bản chất chỉ: * tạo dự án của bạn: 'android tạo uitest-project -n yes -t 10 -p .' * xây dựng bình của bạn:' ant build' – tophernuts

+0

cảm ơn! giúp – HaseebR7

4

Bạn cần kết nối ADB (trên WIFI hoặc cáp) để chạy trường hợp thử nghiệm UiAutomator trừ khi bạn có quyền su. Với sự cho phép su bạn có thể chạy uiautomator từ chính thiết bị đó.

Trong trường hợp kiểm tra UiAutomator, bạn có thể thực hiện socket, webSocket và một số giao thức truyền thông khác, vì vậy trường hợp kiểm tra của bạn sẽ hiển thị kết nối truyền thông với thế giới bên ngoài và các thiết bị khác có thể kết nối với nó. Trong trường hợp này, bạn chỉ cần kết nối ADB một lần để chạy trường hợp thử nghiệm, sau đó bạn có thể ngắt kết nối nó.

1

Bạn có thể thực thi mã của mình từ xa như thế nào.

Nếu thiết bị của bạn được root, sau đó bạn có thể kết nối thiết bị của mình với máy và sử dụng adb tcpip 5555. Điều này sẽ chuyển tiếp cổng nghe trên 5555 và sau đó bạn có thể thực thi tập lệnh trên máy của mình sẽ chạy trên thiết bị. chỉ cần sử dụng adb-shell

Các vấn đề liên quan