Para começar

Desinstalar uma aplicação pré-instalada sem acesso privilegiado

· 2 min de leitura

Ilustração. Decorativa: os detalhes estão nos diagramas do texto.

É o comando central de tudo o que fazemos aqui:

adb shell pm uninstall --user 0 com.exemplo.pacote

Se responder Success, a aplicação desapareceu da televisão.

O que esse comando faz na realidade

  • pm é o gestor de pacotes do Android.
  • uninstall remove uma aplicação.
  • --user 0 é a parte decisiva: remove-a apenas do utilizador principal, não do sistema.

Sem --user 0, o comando falharia numa aplicação de sistema: o Android não permite apagar do firmware. Com --user 0, o ficheiro original continua intacto na partição de sistema, que nunca é modificada.

Três consequências práticas:

  1. Pode-se desfazer com um comando.
  2. Uma reposição de fábrica devolve tudo ao estado original.
  3. Não tocou no firmware, por isso nada pode ficar a meio.

Desfazer

adb shell cmd package install-existing com.exemplo.pacote

Não descarrega nada. Reinstala a cópia de fábrica.

A alternativa mais suave: desativar

adb shell pm disable-user --user 0 com.exemplo.pacote

A aplicação continua instalada mas não se executa. Para voltar atrás:

adb shell pm enable com.exemplo.pacote

Erros que vai encontrar

Failure [DELETE_FAILED_INTERNAL_ERROR] — quase sempre um nome de pacote mal escrito.

Failure [not installed for 0] — já estava fora.

Success mas a aplicação continua lá — reinicie a televisão.

Antes de avançar

  • Um de cada vez. Quinze de uma vez e não vai saber qual partiu o quê.
  • Teste o comando à distância depois de cada um. É a primeira coisa que se nota e a mais chata de recuperar.

Tudo o que está aqui aplica-se a um aparelho que lhe pertence, e toda a desinstalação é reversível. Os limites deste projecto: O que fazemos e o que não