Edit: Longtemps après que j'ai écrit ce post et qu'il ait été accepté comme réponse, la am force-stop
commande a été implémentée par l'équipe Android, comme mentionné dans cette réponse .
Alternativement: Plutôt que d'arrêter l'application, puisque vous mentionnez vouloir une "table rase" pour chaque test, vous pouvez utiliser adb shell pm clear com.my.app.package
, ce qui arrêtera le processus d'application et effacera toutes les données stockées pour cette application.
Si vous êtes sous Linux:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Cela ne fonctionnera que pour les appareils / émulateurs où vous avez root immédiatement après l'exécution d'un shell. Cela peut probablement être légèrement affiné pour appeler à l' su
avance.
Sinon, vous pouvez faire (manuellement, ou je suppose par script):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
Christopher Orr
la source
La façon la plus simple d'arrêter l'application est:
De cette façon, vous n'avez pas à comprendre l'ID du processus.
la source
force-stop
commande n'existe. J'ai mis à jour ma réponse pour pointer celle-ci.Android 9.0 API Level 28
, l'application est toujours affichée dans les applications récentes même si ellePID
se trouve concernant l'application. Savez-vous comment arrêter complètement l'application, ce qui signifie même à partir des applications d'arrière-plan?Tout d'abord, mettez l'application en arrière-plan (appuyez sur le bouton d'accueil de l'appareil)
Puis .... dans un terminal ....
la source
vous pouvez utiliser ce qui suit à partir de la console de l'appareil:
pm disable com.my.app.package
ce qui le tuera. Ensuite, utilisez-lepm enable com.my.app.package
pour pouvoir le relancer.la source
adb shell
, puis exécutez d'su
abord.Si vous avez accès au package d'application, vous pouvez installer avec l'option -r et il tuera le processus s'il est actuellement en cours d'exécution comme effet secondaire. Comme ça:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
L'option -r conserve les données actuellement associées à l'application. Cependant, si vous voulez une table rase comme vous le mentionnez, vous ne voudrez peut-être pas utiliser cette option.
la source
Si vous ciblez un appareil non rooté et / ou avez des services dans votre APK que vous ne voulez pas arrêter également, les autres solutions ne fonctionneront pas.
Pour résoudre ce problème, j'ai eu recours à un récepteur de diffusion de messages que j'ai ajouté à mon activité afin de l'arrêter.
De cette façon, vous pouvez exécuter cette commande adb pour arrêter votre activité:
la source
Si tout ce que vous cherchez est de tuer un paquet
devrait marcher
la source
adb shell killall -9 com.your.package.name
selon MAC "contrôle d'accès obligatoire", vous avez probablement la permission de tuer le processus qui n'est pas démarré par root
s'amuser!
la source
Dans eclipse, accédez à la perspective DDMS et dans l'onglet des périphériques, cliquez sur le processus que vous souhaitez tuer sous le périphérique sur lequel vous souhaitez le tuer. Il vous suffit alors d'appuyer sur le bouton d'arrêt et cela devrait tuer le processus.
Je ne sais pas comment vous le feriez à partir de l'outil de ligne de commande, mais il doit y avoir un moyen. Peut-être que vous le faites via le shell adb ...
la source
Guimauve non enracinée, émulateur termux et terminal.
la source