Cómo detener una aplicación de Android desde la consola
¿Es posible detener una aplicación de Android desde la consola? Algo como:
adb stop com.my.app.package
Esto aceleraría tanto nuestro proceso de pruebas. En este momento, desinstalar / instalar la aplicación cada vez para asegurarse de que los casos de prueba manuales comienzan con un estado limpio.
- IsolatedContext vs AndroidTestCase.getContext ()
- Cómo generar html informe con gradle 1.12?
- ¿Cómo crear sombras personalizadas en robolectric 3.0?
- ClassNotFoundException durante el instrumento de prueba de Android
- Destruye y reinicia la actividad con la biblioteca de soporte de pruebas
- Prueba de Android fuera del espacio de almacenamiento
- Android en la aplicación de facturación sandbox
- Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?
- ¿Hay un comando ADB para habilitar / deshabilitar datos móviles? (Dispositivo enraizado)
- ¿Cómo puedo comprobar en Robotium que la aplicación ha terminado?
- Soluciones actuales para probar aplicaciones de Android
- Prueba onActivityResult ()
- La forma más rápida de probar el código fuente de Android modificado?
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 la respuesta a continuación .
Alternativamente: En lugar de simplemente detener la aplicación, ya que mencionas que deseas una "pizarra limpia" para cada prueba, puedes usar la adb shell pm clear com.my.app.package
, que detendrá el proceso de la aplicación y borrará todos los adb shell pm clear com.my.app.package
almacenados Datos para esa aplicación.
Si está en Linux:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Eso sólo funcionará para los dispositivos / emuladores donde tiene raíz inmediatamente al ejecutar un shell. Eso probablemente puede refinarse ligeramente para llamar a su
antemano.
De lo contrario, usted puede hacer (manualmente, o supongo script):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
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.
Primero, coloque la aplicación en segundo plano (presione el botón de inicio del dispositivo)
Entonces …. en una terminal ….
adb shell am kill com.your.package
Puede utilizar lo siguiente desde la consola del dispositivo: pm disable com.my.app.package
que lo eliminará. A continuación, utilice pm enable com.my.app.package
para pm enable com.my.app.package
a iniciarlo.
Si tiene acceso al paquete de aplicación, puede instalarlo con la opción -r y eliminará el proceso si 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 quieres una pizarra limpia como mencionas, tal vez no quieras usar esa opción.
Si apunta a un dispositivo no arraigado y / o tiene servicios en el APK que no desea detener también, las otras soluciones no funcionarán.
Para solucionar este problema, he recurrido a un receptor de mensajes de difusión que he añadido a mi actividad para detenerla.
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 esta manera, puede emitir este comando adb para detener su actividad:
adb shell am broadcast -a com.example.TestActivity.STOP
Si todo lo que buscas es matar un paquete
pkill package_name
Deberia trabajar
En eclipse, vaya a la perspectiva de DDMS y, en la pestaña de dispositivos, haga clic en el proceso que desea matar bajo el dispositivo en el que desea eliminarlo. A continuación, sólo tiene que presionar el botón de detención y que 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 de la shell adb …
pkill NAMEofAPP
Sin arraigó la marshmallow, termux y el emulador terminal.
- Cómo obtener un Inflater Layout dado un contexto?
- Incluya la biblioteca .so en apk en android studio