12
votes

Shell / Script de sélecteur à commandes directes à la coquille ADB

J'essaie d'écrire un lot (pour la victoire) et un script shell pour Linux pour automatiser les essais et toucher les événements sur une interface utilisateur Android. Pour le moment, dans un fichier de lots de Windows, je démarre une coquille ADB pour chaque événement pour par exemple,

    :again

adb shell am start -a android.intent.action.MAIN -n com.q.me.fui.activity/.InitActivity

sleep 15

adb shell sendevent /dev/input/event0 3 0 281
adb shell sendevent /dev/input/event0 3 1 70
adb shell sendevent /dev/input/event0 1 330 1
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0
adb shell sendevent /dev/input/event0 0 0 0   
adb shell sendevent /dev/input/event0 1 330 1
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 0 0 0   

sleep 5

adb shell input keyevent 82
adb shell input keyevent 20
adb shell input keyevent 20
adb shell input keyevent 22
adb shell input keyevent 22
adb shell input keyevent 22
adb shell input keyevent 66

sleep 5

goto again


0 commentaires

5 Réponses :


11
votes

Je ne sais pas grand chose de script de lot ou de script shell, mais j'ai pu écrire rapidement un programme Java pour le faire: xxx

Vous pouvez ensuite utiliser cette classe dans une coquille script comme vous voulez passer les commandes à exécuter en tant qu'arguments de ligne de commande dans votre méthode principale.

par exemple Vous trouverez ci-dessous le script shell: xxx


1 commentaires

réponse cool, juste une petite erreur, le fil t ne devrait pas avoir la portée de la méthode



2
votes

Une autre façon d'aller est la suivante: xxx


1 commentaires

Je viens de réaliser que vous utilisez un fichier de commandes. Ce qui précède fonctionne dans Bash mais je ne me souviens pas de la façon dont DOS gère la poursuite de la ligne. Peut-être que cela fonctionnera aussi? Les points-virgules sont tout ce qui est nécessaire pour émettre de multiples commandes à la coquille ADB (qui est CEND IIRC)



12
votes

La réponse de Topher est presque correcte.

Il suffit de supprimer les nouvelles lignes et cela fonctionnera. P>

adb shell "sendevent /dev/input/event9 3 53 215;sendevent /dev/input/event9 3 54 68;sendevent /dev/input/event9 3 48 40;sendevent /dev/input/event9 3 50 6;sendevent /dev/input/event9 3 57 0;sendevent /dev/input/event9 0 2 0;sendevent /dev/input/event9 0 0 0;sendevent /dev/input/event9 3 53 215;sendevent /dev/input/event9 3 54 68;sendevent /dev/input/event9 3 48 0;sendevent /dev/input/event9 3 50 6;sendevent /dev/input/event9 3 57 0;sendevent /dev/input/event9 0 2 0;sendevent /dev/input/event9 0 0 0;"


2 commentaires

Merci. Votre réponse m'a aidé.


@Vladimir, que si mes commandes de shell comprennent des citations? Par exemple, Texte d'entrée Shell adb "bla-blah"



18
votes

Mettez toutes les commandes que vous souhaitez exécuter à la fois dans un fichier externe, une par ligne, puis exécutez: xxx


1 commentaires

Une solution simple et élégante! Je ne suggérerais que de mettre une dernière ligne dans le fichier Exemple Commands.txt qui lit simplement «Quitter» (sans guillemets) pour vous laisser tomber à votre coquille principale.



7
votes

Je fais quelque chose de similaire xxx

de sorte qu'il peut fonctionner comme ci-dessous: xxx


0 commentaires