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