Editar: mucho después de que escribí esta publicación y fue aceptada como respuesta, el am force-stop
comando fue implementado por el equipo de Android, como se menciona en esta respuesta .
Alternativamente: en lugar de simplemente detener la aplicación, ya que mencionas que quieres una "pizarra limpia" para cada ejecución de prueba, puedes usar adb shell pm clear com.my.app.package
, lo que detendrá el proceso de la aplicación y borrará todos los datos almacenados para esa aplicación.
Si estás en Linux:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Eso solo funcionará para dispositivos / emuladores donde tenga root inmediatamente después de ejecutar un shell. Eso probablemente se puede refinar un poco para llamar de su
antemano.
De lo contrario, puede hacer (manualmente, o supongo que con guión):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
La forma limpia de detener la aplicación es:
De esta manera, no tiene que averiguar la ID del proceso.
fuente
force-stop
existiera el comando. Actualicé mi respuesta para señalar a esta.Android 9.0 API Level 28
, la aplicación todavía se muestra en las aplicaciones recientes a pesar de quePID
se encuentra con respecto a la aplicación. ¿Sabes cómo detener la aplicación por completo, lo que significa incluso desde las aplicaciones en segundo plano?Primero, coloque la aplicación en segundo plano (presione el botón de inicio del dispositivo)
Entonces ... en una terminal ...
fuente
puede usar lo siguiente desde la consola del dispositivo:
pm disable com.my.app.package
que lo matará. Luego utilícelopm enable com.my.app.package
para poder iniciarlo nuevamente.fuente
adb shell
, luego ejecutasu
primero.Si tiene acceso al paquete de la aplicación, puede instalarlo con la opción -r y matará el proceso si actualmente se está ejecutando como un efecto secundario. Me gusta esto:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
La opción -r conserva los datos actualmente asociados con la aplicación. Sin embargo, si desea una pizarra limpia como usted menciona, es posible que no desee utilizar esa opción.
fuente
Si apuntas a un dispositivo no rooteado y / o tienes servicios en tu APK que no quieres detener, las otras soluciones no funcionarán.
Para resolver este problema, he recurrido a un receptor de mensajes de difusión que he agregado a mi actividad para detenerlo.
De esa manera, puede emitir este comando adb para detener su actividad:
fuente
Si todo lo que estás buscando es matar un paquete
Deberia trabajar
fuente
adb shell killall -9 com.your.package.name
de acuerdo con el "control de acceso obligatorio" de MAC, probablemente tenga el permiso para eliminar el proceso que no ha sido iniciado por root
¡que te diviertas!
fuente
En eclipse, vaya a la perspectiva DDMS y en la pestaña de dispositivos, haga clic en el proceso que desea matar debajo del dispositivo en el que desea matarlo. Entonces solo necesita presionar el botón de parada y esto debería matar el proceso.
No estoy seguro de cómo haría esto desde la herramienta de línea de comando, pero debe haber una manera. Tal vez lo haces a través del adb shell ...
fuente
Malvavisco no rooteado, termux y emulador de terminal.
fuente