Merci beaucoup, je l'ai fait fonctionner le shell dans ~ / .bash_profile pour être beaucoup plus rapide function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }et son utilisationandroidrun com.example.test
est-il possible d'exécuter l'activité par défaut, au lieu d'être aussi spécifique à l'activité que j'ai l'intention de démarrer?
développeur Android
1
J'ai eu des problèmes pour trouver l'application et l'activité. J'ai utilisé ce pipeline adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedpour répertorier toutes les applications qui ont été affichées.
Att Righ
299
Il est possible d'exécuter une application en spécifiant le nom du package uniquement à l'aide de l' outil singe en suivant ce modèle:
La commande est utilisée pour exécuter l'application à l'aide de l'outil singe qui génère une entrée aléatoire pour l'application. La dernière partie de la commande est un entier qui spécifie le nombre d'entrées aléatoires générées pour l'application. Dans ce cas, le nombre est 1, qui est en fait utilisé pour lancer l'application (cliquez sur l'icône).
Le lanceur est par défaut. Vous pouvez simplifier pouradb shell monkey -p your.app.package.name 1
Androiderson
3
Est-il possible d'utiliser le nom du fichier APK au lieu du nom du package? Supposons que je possède un fichier APK et que je souhaite pouvoir l'installer et l'exécuter, est-ce possible?
développeur Android
1
Que faire si j'obtiens une erreur: aucune activité n'a été trouvée pour s'exécuter. avorter ?
IgorGanapolsky
3
@IgorGanapolsky si aucune activité trouvée, c'est une application de service et n'a aucune activité du tout.
m3nda
1
@IgorGanapolsky s'il s'agit d'une utilisation de service, adb shell am startservice com.some.package.name/.YourServiceSubClassNamevoir ici: stackoverflow.com/a/18703083/211292
ThomasW
123
Ou, vous pouvez utiliser ceci:
adb shell am start -n com.package.name/.ActivityName
puis "chmod + x adb-run.sh" pour le rendre exécutable.
vous pouvez maintenant simplement:
adb-run.sh myapp.apk
L'avantage ici est que vous n'avez pas besoin de connaître le nom du package ou le nom de l'activité lancable. De même, vous pouvez créer "adb-uninstall.sh myapp.apk"
Remarque: Cela nécessite que vous ayez un aapt sur votre chemin. Vous pouvez le trouver dans le nouveau dossier des outils de génération du SDK.
pour Windows, vous pouvez essayer avec cygwin (non testé)
dljava
3
Votre message m'a fait rechercher AWK. Je suis allé de l'avant et j'ai recréé votre script. pastebin.com/X7X1SsFa
Kyle
2
C'est fabuleux. Pourquoi ce n'est pas une commande adb standard, nous ne le saurons jamais.
John Tyree
Vous n'aurez pas besoin d'avoir aapt dans votre chemin (tant que "android" est) si vous définissez le PATH dans le script adb-run.sh, comme ceci: PATH = $ (dirname $ (which android)) /. ./build-tools/20.0.0:$PATH
Je voudrais également mentionner une dernière chose.
Lorsque vous démarrez une application à partir de adb shell am, elle ajoute automatiquement l'indicateur FLAG_ACTIVITY_NEW_TASK, ce qui modifie le comportement. Voir le code .
Par exemple, si vous lancez l'activité Play Store à partir de adb shell am, appuyer sur le bouton ` ` Retour '' (bouton de retour matériel) ne vous amènerait pas votre application, mais plutôt votre activité Play Store précédente s'il y en avait (s'il n'y avait pas de tâche Play Store) , il vous faudrait alors votre application). La documentation de FLAG_ACTIVITY_NEW_TASK indique:
si une tâche est déjà en cours d'exécution pour l'activité que vous démarrez maintenant, une nouvelle activité ne sera pas démarrée; au lieu de cela, la tâche en cours sera simplement amenée à l'avant de l'écran avec l'état dans lequel elle était en dernier
Cela m'a fait passer quelques heures pour découvrir ce qui n'allait pas.
Gardez donc à l'esprit que vous adb shell amajoutez l'indicateur FLAG_ACTIVITY_NEW_TASK .
Essayez ceci, pour ouvrir une application photo Android et avec un fichier image spécifique à ouvrir en tant que paramètre.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Cela fonctionnera sur le dernier Android, aucun pop-up ne viendra pour sélectionner une application à ouvrir car vous donnez une application spécifique à laquelle vous souhaitez ouvrir votre image avec
J'ai une application de lecture, qui est capable de diffuser une vidéo à partir d'une URL, comment puis-je passer cette URL en tant que paramètre et diffuser à partir de cette URL? suppose une URL de YouTube?
Réponses:
Ou vous pouvez l'utiliser directement:
Vous pouvez également spécifier les actions à filtrer par vos filtres d'intention:
la source
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
et son utilisationandroidrun com.example.test
adb shell am
vous donnera une liste d'autres options à passer à laam
commande. Vous pouvez en savoir plus sur developer.android.com/tools/help/adb.html#amadb logcat | grep --line-buffered ActivityManager | grep --line-buffered
pour répertorier toutes les applications qui ont été affichées.Il est possible d'exécuter une application en spécifiant le nom du package uniquement à l'aide de l' outil singe en suivant ce modèle:
La commande est utilisée pour exécuter l'application à l'aide de l'outil singe qui génère une entrée aléatoire pour l'application. La dernière partie de la commande est un entier qui spécifie le nombre d'entrées aléatoires générées pour l'application. Dans ce cas, le nombre est 1, qui est en fait utilisé pour lancer l'application (cliquez sur l'icône).
la source
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
voir ici: stackoverflow.com/a/18703083/211292Ou, vous pouvez utiliser ceci:
la source
monkey -p com.package.name 1
viaadb shell
Les utilisateurs linux / mac peuvent également créer un script pour exécuter une apk avec quelque chose comme ceci:
créez un fichier nommé "adb-run.sh" avec ces 3 lignes:
puis "chmod + x adb-run.sh" pour le rendre exécutable.
vous pouvez maintenant simplement:
adb-run.sh myapp.apk
L'avantage ici est que vous n'avez pas besoin de connaître le nom du package ou le nom de l'activité lancable. De même, vous pouvez créer "adb-uninstall.sh myapp.apk"
Remarque: Cela nécessite que vous ayez un aapt sur votre chemin. Vous pouvez le trouver dans le nouveau dossier des outils de génération du SDK.
la source
Je voudrais également mentionner une dernière chose.
Lorsque vous démarrez une application à partir de
adb shell am
, elle ajoute automatiquement l'indicateur FLAG_ACTIVITY_NEW_TASK, ce qui modifie le comportement. Voir le code .Par exemple, si vous lancez l'activité Play Store à partir de
adb shell am
, appuyer sur le bouton ` ` Retour '' (bouton de retour matériel) ne vous amènerait pas votre application, mais plutôt votre activité Play Store précédente s'il y en avait (s'il n'y avait pas de tâche Play Store) , il vous faudrait alors votre application). La documentation de FLAG_ACTIVITY_NEW_TASK indique:Cela m'a fait passer quelques heures pour découvrir ce qui n'allait pas.
Gardez donc à l'esprit que vous
adb shell am
ajoutez l'indicateur FLAG_ACTIVITY_NEW_TASK .la source
Nous pouvons également démarrer une application en connaissant le type d'application et en l'alimentant en données:
Cette commande affiche les lecteurs vidéo disponibles pour lire le fichier sample.3gp
la source
Étape 1: Obtenez d'abord tous les noms de packages des applications installées sur votre appareil, en utilisant:
adb shell pm list packages
Étape 2: Vous obtiendrez tous les noms de packages, copiez celui que vous souhaitez commencer à utiliser adb.
Étape 3: Ajoutez le nom de votre package souhaité dans la commande ci-dessous.
adb shell monkey -p 'your package name' -v 500
la source
ouvrez ~ / .bash_profile et ajoutez ces fonctions bash à la fin du fichier
puis ouvrez le dossier du projet Android
la source
app-debug
fait?monkey --pct-syskeys 0
pour les conseils de développementSans cet argument, l'application ne s'ouvrira pas sur une carte de développement sans clés / affichage:
et échoue avec une erreur:
Testé sur HiKey960, Android O AOSP.
Tiré de: https://github.com/ARM-software/lisa/pull/408
Également demandé à: test de singe: si le système Android ne possède pas de clés physiques, quels sont les paramètres à inclure dans la commande
la source
Ex:
Vous pouvez utiliser l'application APK-INFO pour connaître la liste des activités d'application par rapport à chaque package d'application
la source
Essayez ceci, pour ouvrir une application photo Android et avec un fichier image spécifique à ouvrir en tant que paramètre.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Cela fonctionnera sur le dernier Android, aucun pop-up ne viendra pour sélectionner une application à ouvrir car vous donnez une application spécifique à laquelle vous souhaitez ouvrir votre image avec
la source