Detener una aplicación de Android desde la consola
¿Es posible detener una aplicación Android desde la consola? Algo como:
adb stop com.my.app.package
Aceleraría mucho nuestro proceso de pruebas. Ahora mismo desinstalamos / instalamos la aplicación cada vez para asegurarnos de que los casos de prueba manuales comiencen con un estado limpio.
10 answers
Editar: Mucho después de que escribí este post y fue aceptado como la respuesta, el comando am force-stop
fue implementado por el equipo de Android, como se menciona en esta respuesta.
Alternativamente: En lugar de simplemente detener la aplicación, ya que menciona que desea una "pizarra limpia" para cada ejecución de prueba, puede usar adb shell pm clear com.my.app.package
, 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 su
de antemano.
De lo contrario, se puede hacer (manualmente, o supongo que scripted):pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-06 16:13:29
La forma limpia de detener la aplicación es:
adb shell am force-stop com.my.app.package
De esta manera no tiene que averiguar el ID del proceso.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-05 03:45:25
Primero, ponga la aplicación en segundo plano (presione el botón de inicio del dispositivo)
Then....in una terminal....
adb shell am kill com.your.package
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-14 05:26:07
Puede usar lo siguiente desde la consola del dispositivo: pm disable com.my.app.package
que lo matará. A continuación, utilice pm enable com.my.app.package
para que pueda lanzarlo de nuevo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-30 22:31:11
Si tiene acceso al paquete de la aplicación, puede instalarlo con la opción-r y matará el proceso si se está ejecutando actualmente como un efecto secundario. Así:
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 quieres un borrón y cuenta nueva como mencionaste, es posible que no quieras usar esa opción.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-09 10:32:07
Si te diriges a un dispositivo no rooteado y/o tienes servicios en tu APK que no quieres detener también, las otras soluciones no funcionarán.
Para resolver este problema, he recurrido a un receptor de mensajes de difusión que he añadido a mi actividad con el fin de detenerlo.
public class TestActivity extends Activity {
private static final String STOP_COMMAND = "com.example.TestActivity.STOP";
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
TestActivity.this.finish();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff...
registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND));
}
}
De esa manera, puede emitir este comando adb para detener su actividad:
adb shell am broadcast -a com.example.TestActivity.STOP
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-17 08:14:12
Si todo lo que buscas es matar un paquete
pkill package_name
Debería funcionar
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-15 08:40:01
En eclipse vaya a la perspectiva DDMS y en la pestaña dispositivos haga clic en el proceso que desea matar bajo el dispositivo en el que desea matarlo. A continuación, solo tiene que pulsar el botón de parada y debe matar el proceso.
No estoy seguro de cómo haría esto desde la herramienta de línea de comandos, pero debe haber una manera. Tal vez lo hagas a través del caparazón de adb...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-25 10:07:29
adb shell killall -9 com.your.package.name
Según MAC " control de acceso obligatorio" probablemente tengas el proceso de permiso para matar que no se inicia por root
Diviértete!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-04 21:16:38
pkill NAMEofAPP
No rooteado marshmallow, termux & emulador de terminal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-18 06:37:24