Skip to content

MASTG-TECH-0005: Instalando Aplicativos

Instalação Básica de APK

Use adb install para instalar um APK em um emulador ou dispositivo conectado. O caminho fornecido é o caminho do APK no host.

adb install ./myApp.apk

Se múltiplos dispositivos estiverem conectados, você pode especificar a instalação em um dispositivo físico conectado (-d), emulador ou dispositivo TCP/IP (-e) ou número de série específico (-s).

# Instalar em dispositivo físico conectado
adb -d install ./myApp.apk

# Instalar em emulador
adb -e install ./myApp.apk

# Listar todos os dispositivos
adb devices
List of devices attached
37081JEHN05882  device
emulator-5554   device

# Conectar a um dispositivo específico
adb -s 37081JEHN05882 install ./myApp.apk

Ao instalar um aplicativo, também é possível conceder automaticamente todas as permissões de runtime usando -g:

adb install -g ./myApp.apk

Instalando um Aplicativo Reempacotado

Caso já exista um aplicativo instalado com o mesmo nome de pacote, o Android comparará as assinaturas. Se as assinaturas coincidirem, a atualização será bem-sucedida. Se a assinatura for diferente (por exemplo, após reempacotar um APK), a instalação falhará.

adb install ./myRepackagedApp.apk
adb: failed to install myRepackagedApp.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package org.owasp.mastestapp signatures do not match newer version; ignoring!]

Para resolver este problema, primeiro remova o aplicativo original usando adb uninstall:

# Desinstalar com base no nome do pacote
adb uninstall org.owasp.mastestapp

# Instalação normal via adb
adb install ./myRepackagedApp.apk

Instalando em um Perfil Específico

Para instalar um APK em um perfil específico, o APK primeiro precisa ser enviado para o dispositivo, pois não é possível fazer isso diretamente usando adb install. Observe que enviar para /sdcard/ pode resultar em problemas de permissão, portanto use /data/local/tmp para garantir. Após enviar o APK para o dispositivo, ele pode ser instalado usando pm install com a opção --user XX:

# Obter uma visão geral dos perfis disponíveis
adb shell pm list users
Users:
    UserInfo{0:Owner:c13} running
    UserInfo{11:Sample Managed Profile:1030} running

# Enviar para /data/local/tmp/
adb push ./myApp.apk /data/local/tmp/

# Instalar com pm install e a opção --user
adb shell pm install --user 11 /data/local/tmp/myRepackagedApp.apk

Instalando APKs Divididos

Caso precise instalar APKs divididos, você pode usar o comando install-multiple. Certifique-se de que os diferentes APKs divididos correspondam à configuração do seu dispositivo:

# Youtube é um APK dividido
adb shell pm path com.google.android.youtube
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/base.apk
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.arm64_v8a.apk
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.en.apk
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.xxhdpi.apk

# Obter as diferentes partes
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/base.apk
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.arm64_v8a.apk
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.en.apk
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.xxhdpi.apk

# Desinstalar o Youtube como teste
adb uninstall com.google.android.youtube

# Instalar os arquivos de APK dividido
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk split_config.xxhdpi.apk