Comment démarrer une application avec les outils android ADB?
10 réponses
adb shell
am start -n com.package.name/com.package.name.ActivityName
Ou vous pouvez l'utiliser directement:
adb shell am start -n com.package.name/com.package.name.ActivityName
vous pouvez également spécifier des actions à filtrer par vos intentions-filtres:
am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName
il est possible d'exécuter l'application en spécifiant le nom du paquet en utilisant seulement monkey outil en suivant ce modèle:
adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
La commande est utilisée pour exécuter app en utilisant l'outil monkey qui génère des entrées aléatoires 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 app. Dans ce cas, le numéro est 1, qui est en fait utilisé pour lancer l'application (clic d'icône).
Ou, vous pouvez utiliser ceci:
adb shell am start -n com.package.name/.ActivityName
les utilisateurs linux/mac peuvent aussi créer un script pour exécuter un apk avec quelque chose comme:
créer un fichier nommé "adb-run.sh" avec ces 3 lignes:
pkg=$(aapt dump badging |awk -F" " '/package/ {print }'|awk -F"'" '/name=/ {print }')
act=$(aapt dump badging |awk -F" " '/launchable-activity/ {print }'|awk -F"'" '/name=/ {print }')
adb shell am start -n $pkg/$act
puis "chmod +x adb-run.sh" pour le rendre exécutable.
maintenant vous pouvez simplement:
adb-run.sh myapp.apk
L'avantage ici est que vous n'avez pas besoin de connaître le nom du paquet ou projetables nom de l'activité. De même, vous pouvez créer "adb-uninstall.sh myapp.apk "
Note: cela nécessite que vous ayez aapt dans votre chemin. Vous pouvez le trouver sous le dossier New build tools dans le SDK.
encore une chose.
lorsque vous démarrez une application à partir de adb shell am
, il ajoute automatiquement FLAG_ACTIVITY_NEW_TASK flag qui modifie le comportement. Voir le code .
par exemple, si vous lancez L'activité Play Store de adb shell am
, en appuyant sur" retour " bouton (hardware back button) ne vous prendrait pas votre application, au lieu de cela, il vous faudrait L'activité Play Store précédente s'il y avait certains(S'il n'y avait pas de tâche Play store, alors il vous prendrait votre application). FLAG_ACTIVITY_NEW_TASK documentation says:
si une tâche est déjà en cours d'exécution pour l'activité que vous commencez maintenant, alors une nouvelle activité ne sera pas lancée; au lieu de cela, la tâche actuelle sera simplement portée à l'avant de l'écran avec l'état où elle était la dernière en
cela m'a fait passer quelques heures à découvrir ce qui s'était mal passé.
alors, gardez à l'esprit que adb shell am
ajouter FLAG_ACTIVITY_NEW_TASK flag .
nous pouvons aussi bien démarrer une application en connaissant le type d'application et en l'alimentant avec des données:
adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW
cette commande affiche les lecteurs vidéo disponibles pour lire échantillon.3gp fichier
ouvrir ~/.bash_profile et ajouter ces fonctions bash à la fin du fichier
function androidinstall(){
adb install -r ./bin/.apk
}
function androidrun(){
ant clean debug
adb shell am start -n /.
}
puis ouvrir le dossier projet Android
androidinstall app-debug && androidrun com.example.app MainActivity
monkey --pct-syskeys 0
pour les cartes de développement
sans cet argument, l'application ne s'ouvrira pas sur une carte de développement sans touches / affichage:
adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1
et échoue par erreur:
SYS_KEYS has no physical keys but with factor 2.0%
testé sur HiKey960, Android O AOSP.
appris de: https://github.com/ARM-software/lisa/pull/408
également demandé à: test singe : si le système Android n'a pas de clés physiques ,quels sont les paramètres doivent être inclus dans la commande
essayez ceci, pour ouvrir une application photo android et avec un fichier image spécifique à ouvrir comme paramètre.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
il fonctionnera sur android dernier, aucun pop up viendra à sélectionner une application à ouvrir que vous donnez application spécifique à laquelle vous voulez ouvrir votre image avec
adb shell am start -n '<appPackageName>/.<appActitivityName>
Ex:
adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'
vous pouvez utiliser L'application APK-INFO pour connaître la liste des activités de L'application par rapport à chaque paquet de L'application