10
votes

Une application Android peut-elle contrôler une autre application via UI Automator?

J'essaie d'écrire une application / un service Android pouvant être déployé sur le périphérique cible. L'application peut être utilisée comme crochet pour contrôler à distance un périphérique cible. À partir de la libération des fèves de Jelly, la mise en œuvre de l'automatiseur UI est disponible, qui fournit des fonctionnalités similaires. Cependant, il semble que l'automatiseur UI ne puisse être utilisé que via une interface ADB. L'application exécutée sur l'appareil ne peut pas utiliser l'automate d'interface utilisateur directement (???). J'essaie de trouver une solution capable de travailler sans l'aide de la BAD. Par exemple, le crochet peut écouter sur une prise en tant que serveur protobuf. Le client peut envoyer une commande au crochet au contrôle et au périphérique à distance. J'ai regardé dans le code source de SDK Andorid SDK. On dirait que le seul moyen est d'utiliser des API d'accessibilité Android. Je me demande s'il y a une meilleure façon?


0 commentaires

3 Réponses :


10
votes

Il est possible d'exécuter Uiautomator à partir d'une application, il vous suffit de disposer de votre potice de test sur l'appareil et de donner aux autorisations de votre application SU.

de votre application, vous pouvez alors appeler simplement: p>

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


3 commentaires

Bonjour, comment puis-je obtenir le fichier test.jar? Je suis capable d'exécuter le test Uiautomator depuis Android Studio. Mais je reçois un APK de la construction et non d'un fichier JAR. Peux-tu aider s'il te plait ?


Je ne l'ai pas fait depuis un moment, mais Ce lien semblait travailler pour moi. Essentiellement juste: * Créez votre projet: Android Créez UITest-Project -n Oui -T 10 -P. * Construisez votre JAR: Build Build


Pourquoi dit-il n'a pas trouvé de classe "com.tonghu.testpublishwechatmoment.publishwechantmomentest" sur Path: [Fichier zip "/sdcard/androidtest.jar"] , j'avais poussé mon AndroidTest.jar à / carte SD/



5
votes

Vous avez besoin d'une connexion ADB (sur wifi ou de câble) pour exécuter des cas de test uautomator, sauf si vous avez des autorisations SU. Avec la permission SU, vous pouvez exécuter uautomator de l'appareil lui-même.

Dans les cas d'essai Uiautomator, vous pouvez implémenter une prise, une bande WebSocket et d'autres protocoles de communication. Votre cas de test expose donc la connexion de la communication au monde extérieur et d'autres appareils peuvent y connecter. Dans ce cas, vous avez besoin d'une connexion ADB une seule fois pour exécuter le boîtier de test, vous pouvez le déconnecter.


0 commentaires

1
votes

Vous pouvez exécuter votre code à distance.

Si votre appareil est enraciné, vous pouvez d'abord connecter votre appareil avec la machine et utiliser ADB TCPIP 5555. Cela transférera le port d'écoute vers l'avant de 5555, puis vous pouvez exécuter votre script sur votre machine qui fonctionnera sur le périphérique. il suffit d'utiliser la coquille adb -s


0 commentaires