Edit: Muito tempo depois que escrevi este post e ele foi aceito como resposta, o am force-stop
comando foi implementado pela equipe do Android, conforme mencionado nesta resposta .
Como alternativa: em vez de apenas interromper o aplicativo, já que você mencionou que deseja uma "lista limpa" para cada execução de teste, você pode usar o adb shell pm clear com.my.app.package
que interromperá o processo do aplicativo e limpará todos os dados armazenados para esse aplicativo.
Se você estiver no Linux:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Isso funcionará apenas para dispositivos / emuladores nos quais você tenha root imediatamente após executar um shell. Provavelmente isso pode ser refinado um pouco para ligar com su
antecedência.
Caso contrário, você pode fazer (manualmente, ou suponho que esteja com script):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
A maneira limpa de parar o aplicativo é:
Dessa forma, você não precisa descobrir o ID do processo.
fonte
force-stop
comando existisse. Eu atualizei minha resposta para apontar para esta.Android 9.0 API Level 28
, o aplicativo ainda é exibido nos Aplicativos recentes, mesmo que elePID
seja encontrado em relação ao aplicativo. Você sabe como parar o aplicativo completamente, o que significa mesmo nos aplicativos em segundo plano?Primeiro, coloque o aplicativo em segundo plano (pressione o botão home do dispositivo)
Então .... em um terminal ....
fonte
você pode usar o seguinte no console do dispositivo: o
pm disable com.my.app.package
que o matará. Em seguida, usepm enable com.my.app.package
para que você possa iniciá-lo novamente.fonte
adb shell
, em seguida, executesu
primeiro.Se você tiver acesso ao pacote de aplicativos, poderá instalar com a opção -r e ele interromperá o processo se estiver em execução no momento como efeito colateral. Como isso:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
A opção -r preserva os dados atualmente associados ao aplicativo. No entanto, se você deseja uma lista limpa como você mencionou, pode não querer usar essa opção.
fonte
Se você segmentar um dispositivo não-rooteado e / ou tiver serviços em seu APK que não deseja parar também, as outras soluções não funcionarão.
Para resolver esse problema, recorri a um receptor de mensagem de broadcast que adicionei à minha atividade para pará-lo.
Dessa forma, você pode emitir este comando adb para interromper sua atividade:
fonte
Se tudo o que você está procurando é matar um pacote
Deveria trabalhar
fonte
adb shell killall -9 com.your.package.name
de acordo com o "controle de acesso obrigatório" do MAC, você provavelmente tem permissão para interromper o processo que não é iniciado pelo root
diverta-se!
fonte
No eclipse, vá para a perspectiva DDMS e, na guia dispositivos, clique no processo que você deseja matar no dispositivo em que deseja matá-lo. Você só precisa pressionar o botão Parar e isso deve interromper o processo.
Não sei como você faria isso na ferramenta de linha de comando, mas deve haver uma maneira. Talvez você faça isso através do shell adb ...
fonte
Marshmallow não enraizado, termux e emulador de terminal.
fonte