Android Studio: como desinstalar o APK (ou executar o comando adb) automaticamente antes de executar ou depurar?

119

Agora eu preciso desinstalar o aplicativo sempre antes Run\Debug dele no Android Studio. Porque eu preciso recriar o banco de dados antes de executar \ depurar o aplicativo. Eu sei que posso executar o comando

adb uninstall [package_name]

no terminal para limpar os arquivos sob /data/data/[package_name] . Mas não é uma maneira conveniente se eu tiver que executar o comando todas as vezes. Espero que

adb uninstall

comando pode ser executado automaticamente quando eu clico no Run\Debugbotão.

Jagger
fonte
Ele reinstalou seu aplicativo no início do processo "Executar" / "Depurar", não é? Ou você quer desinstalar outro aplicativo?
cck3rry
@ cck3rry Desculpe, talvez não esteja muito claro. Quero executar o comando "adb uninstall" porque preciso recriar o banco de dados antes de executar / depurar o aplicativo.
Jagger
Por que você não adota uma abordagem diferente e escreve algumas linhas de código que excluirão o banco de dados em onCreate de sua primeira atividade? Você pode recriá-lo depois disso. Apenas lembre-se de deletar este bloco antes de liberar.
mattgmg1990
@ mattgmg1990 Isso significa que preciso adicionar / remover esse código toda vez que fizer git pull / push. Que chatice ...
Jagger
1
Esta resposta pode ser útil para você
PavelGP

Respostas:

211
adb uninstall <package_name>

pode ser usado para desinstalar um aplicativo através do seu PC. Se quiser que isso aconteça automaticamente sempre que iniciar seu aplicativo por meio do Android Studio, você pode fazer o seguinte:

  1. No Android Studio, clique na lista suspensa à esquerda do botão Executar e selecione Editar configurações ...
  2. Clique no aplicativo em Aplicativo para Android e, na guia Geral, encontre o título 'Antes do lançamento'
  3. Clique no botão +, selecione Executar ferramenta externa e clique no botão + na janela pop-up.
  4. Dê algum nome (por exemplo, desinstalação do adb) e descrição, e digite adbPrograma: e uninstall <your-package-name>em Parâmetros :. Certifique-se de que o novo item esteja selecionado ao clicar em Ok na janela pop-up.

Observação: se você não tiver adb em sua variável de ambiente PATH, forneça o caminho completo para adb no campo Programa: (por exemplo, / home / user / android / sdk / platform-tools / adb).

Aravindsagar
fonte
2
algumas dicas / notas: se você estiver executando mais de um emulador ou dispositivo, você desejará incluir adb -s <devicename>. As macros no Android Studio não funcionam corretamente (v1.50.x), então você deve colocar o caminho completo para adb ou no caminho do ambiente.
Nick
@aravindsagar Eu listei todos os pacotes do meu dispositivo e o nome do pacote do meu aplicativo não estava lá, mas ainda está mostrando Falha [DELETE_FAILED_INTERNAL_ERROR] alguma ideia por que isso está acontecendo ??
Dinesh Phalwadiya
91

exemplo

adb uninstall com.my.firstapp
Thiago
fonte
5
Se não souber o nome do pacote, mas tiver o apk, pode obtê-lo com stackoverflow.com/a/37324607/812915
equiman
1
Se você der uma olhada no conteúdo, eu estava perguntando "desinstalar automaticamente antes de Depurar / Executar no Android Studio". Essa resposta não deu uma solução "automática". Devemos ser mais preguiçosos, certo? :)
Jagger
15

Liste os pacotes por:

adb shell su 0 pm list packages

Revise qual pacote você deseja desinstalar e copie o nome do pacote de lá. Por exemplo:

com.android.calculator2

Por último, digite:

adb uninstall com.android.calculator2 

e você está pronto.

Kamran Khader
fonte
4
Para as pessoas sem root, omita su 0no comando list packages.
villecoder
12

Estou usando Android Studio 2.1.2. Eu tinha o mesmo requisito do OP. Embora a resposta acima de duas parecesse ajudar a todos, não funcionou para mim. Estou compartilhando o que funcionou para mim.

Vá para main menu/Run/Edit Configuration. Selecione appabaixo Android Applicationà esquerda. Isso deve abrir o painel com várias guias. Selecione a Generalguia (seria o padrão), clique +no canto verde na parte inferior (abaixo do texto Before launch: Gradle -awake ...).

Um menu suspenso aparecerá, selecione a Gradle-aware-makeopção. Outra caixa de texto aparecerá. entre :app:uninstallAllnesta caixa de texto. (Você pode usar ctrl+ spacepara usar o preenchimento automático para determinar o destino certo sem digitar tudo. E também ajuda a escolher o nome do aplicativo certo que está disponível para você). E definirapply/ok . Reinicie seu aplicativo.

Nota: Cada vez que você iniciar seu aplicativo agora, este novo alvo tentará desinstalar seu aplicativo do emulador ou dispositivo. Portanto, se o seu dispositivo de teste não estiver disponível, o launc provavelmente falhará durante a desinstalação, mas continuará a iniciar o emulador. Portanto, inicie o emulador primeiro ou reinicie após a primeira falha novamente (já que a primeira inicialização iniciará o emulador embora a desinstalação falhe).

Jimmy
fonte
1
Isso funciona bem, mas você precisa substituí-lo apppelo nome do seu módulo real, como myMainApp.
Jimbali
1
sim, basta usar ctrl+ spaceno pop-up para usar o preenchimento automático. Ele também determina o aplicativo.
Jimmy
11

Se você deseja desinstalar quando conectado a um único dispositivo / emulador, use o comando abaixo

adb uninstall <package name>

senão com vários dispositivos, use o comando abaixo

adb -s <device ID> uninstall <package name>
summerGhost
fonte
4

Eu uso um plug-in do Android Studio chamado "adb idea" - tem um menu suspenso para várias funções (desinstalar, matar, iniciar, etc) que você pode direcionar em qualquer dispositivo conectado ou simulado. Pode-se argumentar que isso me afasta de ter uma compreensão mais profunda do poder dos comandos adb e provavelmente concordaria ... embora esteja realmente operando em um nível inferior de compreensão de qualquer forma, para mim ajuda ter um ajudante. Idéia ADB insira a descrição da imagem aqui

Joel Butler
fonte
3

Um processo simples de três etapas (verificado no terminal mac)

  1. Conecte seu dispositivo Android (conecte 1 dispositivo Android por vez), de preferência por um cabo e confirme a conexão por (isso listará o ID do dispositivo de ID do dispositivo)

    adb devices
  2. Em seguida, para listar todos os pacotes de aplicativos no dispositivo conectado executando, no terminal

    adb shell pm list packages -f -3 
  3. Em seguida, desinstale conforme explicado anteriormente

    adb uninstall <package_name> 
eaccmk
fonte
0

Este comando com --user 0 faz o trabalho:

adb uninstall --user 0 <package_name>
Rodolfo Jorge Nemer Nogueira
fonte