Pertanyaan Bisakah satu aplikasi Android mengontrol aplikasi lain melalui UI Automator?


Saya mencoba untuk menulis aplikasi / layanan Android yang dapat digunakan pada perangkat target. Aplikasi ini dapat digunakan sebagai pengait untuk mengontrol perangkat target dari jarak jauh. Mulai dari rilis Jelly Bean, ada implementasi Automator UI yang tersedia, yang menyediakan fungsi serupa. Namun, tampaknya UI Automator hanya dapat digunakan melalui antarmuka ADB. Aplikasi yang berjalan di perangkat tidak dapat menggunakan UI Automator secara langsung (???). Saya mencoba mencari solusi yang dapat berjalan tanpa bantuan ADB. Sebagai contoh, hook dapat mendengarkan pada soket sebagai server protobuf. Klien dapat mengirim perintah ke hook ke kontrol dan perangkat dari jarak jauh. Saya melihat kode sumber Andorid SDK. Sepertinya satu-satunya cara adalah menggunakan API aksesibilitas android. Saya bertanya-tanya apakah ada cara yang lebih baik?


8
2018-06-06 04:42


asal


Jawaban:


Anda dapat menjalankan UiAutomator dari aplikasi, Anda hanya perlu memiliki tabung Uji pada perangkat dan memberikan izin su aplikasi Anda.

Dari aplikasi Anda, Anda hanya dapat memanggil:

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

Dan perangkat Anda akan melakukan apa pun yang akan dilakukan oleh UiAutomatorTestCase Anda.

Contoh cepat:

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

8
2017-07-10 01:32



Anda memerlukan koneksi ADB (melalui WIFI atau Kabel) untuk menjalankan uji coba UiAutomator kecuali Anda memiliki izin. Dengan izin su Anda dapat menjalankan uiautomator dari perangkat itu sendiri.

Dalam kasus uji UiAutomator, Anda dapat menerapkan soket, webSocket, dan beberapa protokol komunikasi lainnya, sehingga kotak uji Anda akan memaparkan koneksi komunikasi ke dunia luar dan perangkat lain dapat menyambungkannya. Dalam hal ini, Anda perlu koneksi ADB hanya sekali untuk menjalankan test case, maka Anda dapat memutusnya.


4
2017-07-16 16:11



Anda dapat mengeksekusi kode Anda dari jarak jauh seperti.

Jika perangkat Anda sudah di-root maka Anda dapat menghubungkan perangkat Anda dengan mesin dan menggunakan adb tcpip 5555. Ini akan meneruskan port listening pada 5555 dan kemudian Anda dapat menjalankan skrip Anda di mesin Anda yang akan berjalan di perangkat. cukup gunakan adb -s shell


1
2018-05-20 12:24