2011-07-08 16 views
5

Estoy desarrollando una aplicación, y para depurar determinadas acciones en la primera instalación He encontrado que el uso del comando en el terminal:¿Es posible "forzar detener" una aplicación que estoy depurando usando adb en la terminal?

./adb uninstall <package-name> 

era mucho más rápido que navegar a ajustes, aplicaciones, a la espera de las aplicaciones para cargar, encontrando su aplicación, y desinstalarla. Lo recomendaría encarecidamente a cualquiera que aún no lo use para la depuración.

Ahora estoy tratando de trabajar en la parte de cierre de la fuerza de mi aplicación, y no puedo encontrar en el documento de Android ninguna instrucción sobre cómo forzar el cierre de una aplicación mediante el comando adb.

¿Es posible?

Respuesta

6

Puede cerrar una por su pid usando

adb shell kill <PID> 

pero no estoy seguro de hacerlo con un nombre de paquete.

+2

Puedes emitir primero: "adb shell ps". Analizar el resultado y encontrar el PID. –

17

Puede usar adb shell kill para matar el proceso, pero primero debe encontrar la identificación del proceso. Para hacer esto, puede usar adb shell ps y analizar el resultado. Aquí está una muestra (asumiendo que su PC de desarrollo es Unix):

adb shell kill $(adb shell ps | grep YOUR.PACKAGE.NAME | awk '{ print $2 }') 
+3

Este es un comando increíble. Pero obtengo 'No se pudo matar a pid 6551: Operación no permitida' ¿Necesita rootear el teléfono? –

+0

@BerniePerez, la respuesta a su pregunta es "sí", por cierto. ¡Gran respuesta! – mfrankli

+0

Operation not allowed fix: 'adb shell" su -c 'kill $ (adb shell ps | grep YOUR.PACKAGE.NAME | awk' {print $ 2} ')' "' – DmitrySandalov

3
adb killall YOUR.PACKAGE.NAME 

He creado un archivo por lotes para ejecutar este comando.

+0

Tiene que ser 'adb shell',' su', luego 'killall YOU.PACKAGE.NAME' para mí. – kakyo

21
am force-stop YOUR.PACKAGE.NAME 

Este comando funcionó para mí. Espero que esto te ayude también.

0

Si no puede utilizar awk por alguna razón (incompleto instalación de cygwin en mi caso), el siguiente podría funcionar:

adb shell ps | grep YOUR.PACKAGE.NAME | sed 's/\s\s*/ /g' | cut -d ' ' -f 2 | adb shell kill

Explicación: En primer lugar, ps listas de los procesos en ejecución. Desde la salida, grep obtiene la línea que contiene YOUR.PACKAGE.NAME. sed trunca espacios consecutivos en uno para ayudar a cut a obtener el nombre del paquete como parte de esa línea. Finalmente, la identificación del proceso se canaliza al kill.

+0

Necesita tener sed (lo tengo solo cuando instalo 'busybox'). – pevik

Cuestiones relacionadas