2011-07-08 6 views
5

Sto sviluppando un app, e per il debug di determinate azioni sulla prima installazione ho trovato che utilizzando il comando da terminale:È possibile forzare l'arresto di un'applicazione che sto eseguendo il debug usando adb nel terminale?

./adb uninstall <package-name> 

era molto veloce rispetto alla normale navigazione per le impostazioni, le applicazioni, in attesa che le applicazioni da caricare, trovare la tua app e disinstallandola. Lo consiglio vivamente a chiunque non lo usi già per il debug.

Ora sto provando a lavorare sulla parte di forza vicino della mia app, e non riesco a trovare da nessuna parte nel documento di android, le istruzioni su come forzare chiudere un'app da comando adb.

È possibile?

risposta

6

È possibile chiudere una per il suo PID utilizzando

adb shell kill <PID> 

ma non sono sicuro di farlo con un nome del pacchetto.

+2

È possibile prima emettere: "adb shell ps". Analizza il risultato e trova il PID. –

17

È possibile utilizzare adb shell kill per terminare il processo, ma prima è necessario trovare l'id di processo. Per fare ciò è possibile utilizzare adb shell ps e analizzare l'output. Ecco un esempio (supponendo che il PC di sviluppo è Unix):

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

Questo è un comando fantastico. Ma ho 'non poteva uccidere pid 6551: Operation not permitted' Il telefono devono essere radicati? –

+0

@BerniePerez la risposta alla tua domanda è "sì", a proposito. Bella risposta! – mfrankli

+0

Operazione correzione non consentita: 'adb shell "su -c 'kill $ (adb shell ps | grep YOUR.PACKAGE.NAME | awk '{print $ 2}')'"' – DmitrySandalov

3
adb killall YOUR.PACKAGE.NAME 

Ho creato uno script batch per eseguire questo comando.

+0

deve essere 'shell' adb,' su', quindi 'killall YOU.PACKAGE.NAME' per me. – kakyo

21
am force-stop YOUR.PACKAGE.NAME 

Questo comando ha funzionato per me. Spero che questo ti possa aiutare.

0

Se non è possibile utilizzare awk per qualche motivo (incompleta cygwin installazione nel mio caso), il seguente potrebbe funzionare:

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

Spiegazione: In primo luogo, ps liste processi in esecuzione. Dall'output, grep ottiene la riga contenente YOUR.PACKAGE.NAME. sed tronca gli spazi consecutivi in ​​uno per aiutare cut a ottenere il nome del pacchetto parte di quella linea. Infine, l'ID del processo viene inviato a kill.

+0

È necessario aver sed (ce l'ho solo quando installo 'busybox'). – pevik

Problemi correlati