adb shell am force-stop : arrêter une app Android en ligne de commande
Utilisez adb shell am force-stop pour tuer une app Android sans effacer ses données — et sa différence avec pm clear et am kill, avec aide-mémoire.
Pour forcer l'arrêt d'une app Android depuis votre ordinateur :
adb shell am force-stop com.example.app
Cette commande tue immédiatement tous les processus et services de com.example.app, exactement comme si vous ouvriez les Réglages et appuyiez sur « Forcer l'arrêt ». Elle ne supprime aucune donnée de l'app. Cet article explique la commande, comment trouver le nom de package, et en quoi force-stop diffère de pm clear et am kill — trois commandes qui se ressemblent et font des choses très différentes.
Ce que force-stop fait réellement
am, c'est l'Activity Manager ; force-stop lui demande de terminer toute l'app. Chaque processus, service en arrière-plan et alarme planifiée du package est arrêté. Au lancement suivant, l'app démarre à froid. Point important : force-stop laisse les données stockées intactes — comptes, préférences, bases de données et cache survivent. À utiliser pour un redémarrage propre sans perdre l'état : reproduire un bug de démarrage à froid, débloquer un service au premier plan coincé, ou réinitialiser une app pendant un test.
Il vous faut le nom de package, pas le nom affiché de l'app. Pour le trouver :
adb shell pm list packages
Cette commande liste tous les packages installés. Filtrez :
adb shell pm list packages | grep whatsapp
Ajoutez -3 pour ne lister que les apps tierces (installées par l'utilisateur), en général ce que vous cherchez :
adb shell pm list packages -3
pm, c'est le Package Manager — le pendant de am pour tout ce qui concerne les packages installés.
force-stop vs pm clear vs am kill
On les confond sans arrêt. La différence, c'est ce qu'elles détruisent.
force-stop — arrêter, garder les données
adb shell am force-stop com.example.app
Termine tous les processus. Garde toutes les données. C'est la commande « on éteint et on rallume ».
pm clear — arrêter et effacer les données
adb shell pm clear com.example.app
Arrête l'app et supprime toutes ses données — l'équivalent de Réglages → Applications → Stockage → « Effacer les données ». Les comptes sont déconnectés, les bases de données disparaissent, l'app revient à l'état d'installation neuve. À utiliser pour tester l'onboarding ou reproduire un bug de premier lancement. C'est destructif : pas de retour en arrière.
am kill — doux, arrière-plan seulement
adb shell am kill com.example.app
Tue l'app seulement si c'est sans risque — en gros, uniquement les processus en arrière-plan que le système aurait pu récupérer de toute façon. Si l'app est au premier plan, am kill ne fait rien. C'est la moins agressive des trois : pratique pour simuler une pression mémoire sans le démontage brutal de force-stop.
Aide-mémoire
| Commande | Arrête l'app | Efface les données | Agit au premier plan |
|---|---|---|---|
am force-stop | Oui | Non | Oui |
pm clear | Oui | Oui | Oui |
am kill | Arrière-plan seulement | Non | Non |
Pièges courants
- « Unknown package ». Vous avez passé le nom affiché au lieu du nom de package. Trouvez-le avec
pm list packages. - Aucun appareil. Vérifiez
adb devices. L'appareil doit être connecté, le débogage USB activé et la connexion autorisée. - Plusieurs appareils. Ciblez-en un avec
-s:adb -s <serial> shell am force-stop com.example.app. - L'app redémarre toute seule. Certaines apps sont réveillées par une notification push ou une tâche planifiée juste après le force-stop. C'est normal — force-stop est un arrêt ponctuel, pas une désactivation permanente.
En faire un script
Comme ce sont des one-liners, ils s'intègrent facilement dans des scripts de test. Un extrait classique de reset entre deux runs :
adb shell am force-stop com.example.app
adb shell pm clear com.example.app # seulement si vous voulez un état neuf
adb shell am start -n com.example.app/.MainActivity
La dernière ligne relance l'app par son activité principale.
force-stop vs balayer l'app
Balayer une app hors de l'écran Récents n'équivaut pas à un force-stop. Le système peut garder certains processus en vie, et une tâche de fond ou un handler de notification peut la réveiller quelques instants plus tard. force-stop est un arrêt franc : il démonte les processus et suspend les alarmes et tâches planifiées de l'app jusqu'au prochain lancement. Quand vous voulez la certitude que l'app est vraiment arrêtée — avant un test, ou pour débloquer un état coincé — utilisez force-stop, pas le balayage.
Faut-il être root ?
Non. force-stop, pm clear, am kill et pm list packages passent tous par une connexion ADB normale avec le débogage USB activé. Aucun appareil rooté ni build spécial requis. C'est ce qui fait de ces commandes le moyen le plus rapide de réinitialiser une app au quotidien, en dev comme en test.
Pour aller plus loin
Si vous pilotez vos tests Android ou de l'automatisation d'appareils avec un assistant IA, encoder ces commandes en jeu d'instructions réutilisable évite de les retaper. Parcourez le catalogue de skills ou la catégorie développement pour des aides d'automatisation et de test, et consultez le blog pour d'autres notes en ligne de commande.
Articles similaires
Skills Codex : installer, utiliser et les meilleurs choix
Ce que sont les skills Codex (un dossier avec un SKILL.md), comment en installer un dans ~/.agents/skills, comment Codex les invoque et les meilleurs choix.
Corriger l'erreur Mermaid « got 'PS' » (parenthèses dans les labels)
Mermaid échoue avec « got 'PS' » ? La cause : une parenthèse dans un label. Mettez le label entre guillemets, ou utilisez des entités HTML.
Skills Cursor : le guide complet (liste, exemples, skills vs rules)
Cursor a des Agent Skills natifs (SKILL.md) depuis la v2.4 : comment les créer, les invoquer, où ils vivent, et en quoi ils diffèrent des rules .mdc.