Como atualizar dispositivos

Esta página fornece detalhes para executar builds em dispositivos específicos. Esses detalhes complementam as informações em Como criar para Android.

Como criar fastboot e adb

Se você ainda não tem o fastboot e o adb, pode criá-los com o sistema de compilação normal. Use as instruções em Como criar para Android e substitua o comando make principal por este:

make fastboot adb

Consulte Android Debug Bridge (adb) para ver detalhes sobre o Android Debug Bridge.

Como inicializar no modo fastboot

Você pode atualizar um dispositivo quando ele estiver no modo de carregador de inicialização fastboot. Para entrar no modo fastboot quando um dispositivo estiver passando por uma inicialização a frio, use as combinações de tecla listadas em Combinações de teclas para fastboot

Também é possível usar o comando adb reboot bootloader para reinicializar diretamente no carregador de inicialização. Para ver todos os detalhes, consulte as Instruções de atualização.

Como desbloquear o carregador de inicialização

Só será possível atualizar um sistema personalizado se o carregador de inicialização permitir. No entanto, o carregador estará bloqueado por padrão. Ele pode ser desbloqueado, mas essa ação exclui os dados do usuário por motivos de privacidade. Após o desbloqueio, todos os dados no dispositivo são apagados, ou seja, tanto dados particulares de apps quanto dados compartilhados acessíveis via USB (incluindo fotos e filmes). Antes de tentar desbloquear o carregador de inicialização, faça backup de todos os arquivos importantes no dispositivo.

O desbloqueio precisa ser feito apenas uma vez e, se necessário, você pode bloqueá-lo de novo.

Como desbloquear dispositivos recentes

Todos os dispositivos Nexus e Pixel lançados desde 2014 (a partir do Nexus 6 e o Nexus 9) trazem proteção contra a redefinição para configuração original e exigem um processo de várias etapas para desbloquear o carregador de inicialização.

  1. Para ativar o desbloqueio de OEM no dispositivo:
    1. No app Configurações, toque em Sobre o dispositivo e depois toque em Número da versão sete vezes.
    2. Quando aparecer a mensagem Você agora é um desenvolvedor, toque no botão Voltar.
    3. No app Configurações, toque em Sistema, depois em Opções do desenvolvedor e ative o Desbloqueio de OEM e a Depuração USB. Se a opção Desbloqueio de OEM estiver desativada, conecte-se à Internet para que o dispositivo possa fazer check-in pelo menos uma vez. Se ela continuar desativada, isso significa que o dispositivo pode ter um bloqueio de chip da operadora e, nesse caso, o carregador de inicialização não poderá ser desbloqueado.
  2. Reinicie o carregador de inicialização e use fastboot para desbloqueá-lo.
    • Para dispositivos mais recentes (2015 e mais recentes):
      fastboot flashing unlock
    • Para dispositivos mais antigos (2014 e anteriores):
      fastboot oem unlock
    Dica: se há problemas na saída de "dispositivos adb" antes da reinicialização, mas o script de atualização ou fastboot está com comportamento inadequado, pode haver problemas com o cabo USB. Tente usar outra porta e/ou trocar de conector. Se você está usando uma porta USB-C no computador, tente usar uma USB-A.
  3. Confirme o desbloqueio na tela.

Como bloquear o carregador de inicialização novamente

Para bloquear o carregador de inicialização novamente:

  • Para dispositivos mais recentes (2015 e mais recentes):
    fastboot flashing lock
  • Para dispositivos mais antigos (2014 e anteriores):
    fastboot oem lock

Como usar os estados de bloqueio de atualização

A API do sistema getFlashLockState() transmite o estado do carregador de inicialização, e a API do sistema PersistentDataBlockManager.getFlashLockState() retorna o status de bloqueio do carregador de inicialização em dispositivos compatíveis.

Valor de retorno Condições
FLASH_LOCK_UNKNOWN Retornado apenas por dispositivos que passaram por upgrade para o Android 7.x ou versões mais recentes e que anteriormente não eram compatíveis com as mudanças do carregador de inicialização necessárias para receber o status de bloqueio de atualização, caso fossem compatíveis com a funcionalidade de bloqueio/desbloqueio de atualização.
  • Dispositivos novos com o Android 7.x ou versões mais recentes precisam ter um estado FLASH_LOCK_LOCKED ou FLASH_LOCK_UNLOCKED.
  • Dispositivos que passaram por upgrade para o Android 7.x ou versões mais recentes e que não oferecem suporte à funcionalidade de desbloqueio/bloqueio de atualização precisam retornar o estado FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Retornado por qualquer dispositivo que não oferece suporte ao bloqueio/desbloqueio de atualização (ou seja, um dispositivo que esteja sempre bloqueado) ou qualquer dispositivo com suporte ao bloqueio/desbloqueio de atualização e que esteja no estado bloqueado.
FLASH_LOCK_UNLOCKED Retornado por qualquer dispositivo compatível com o bloqueio/desbloqueio de atualização flash e que esteja no estado desbloqueado.

Os fabricantes precisam testar os valores retornados pelos dispositivos com carregadores de inicialização bloqueados e desbloqueados. Por exemplo, o Android Open Source Project (AOSP) contém uma implementação de referência que retorna um valor baseado na propriedade de inicialização ro.boot.flash.locked. O código de exemplo pode ser encontrado nos diretórios abaixo:

  • frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
  • frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java

Como selecionar um build do dispositivo

Os builds recomendados para os dispositivos estão disponíveis no menu lunch, acessados ao executar o comando lunch sem argumentos. Para mais informações sobre o comando lunch, consulte Escolher um destino. Para uma lista de destinos de build, consulte Destinos de build.

Você pode fazer o download de binários e imagens de fábrica para dispositivos Pixel e Nexus em developers.google.com. Consulte Binários de dispositivos para downloads. Para ver mais detalhes e recursos adicionais, consulte Como adquirir binários reservados.

Dispositivo Codinome Configuração do build
Pixel 7 Pro cheetah aosp_cheetah-userdebug
Pixel 7 panther aosp_panther-userdebug
Pixel 6 Pro raven aosp_raven-userdebug
Pixel 6 oriole aosp_oriole-userdebug
Pixel 5 redfin aosp_redfin-userdebug
Pixel 4a 5G bramble aosp_bramble-userdebug
Pixel 4a sunfish aosp_sunfish-userdebug
Pixel 4 XL coral aosp_coral-userdebug
Pixel 4 flame aosp_flame-userdebug
Pixel 3a XL bonito aosp_bonito-userdebug
Pixel 3a sargo aosp_sargo-userdebug
Pixel 3 XL crosshatch aosp_crosshatch-userdebug
Pixel 3 blueline aosp_blueline-userdebug
Pixel 2 XL taimen aosp_taimen-userdebug
Pixel 2 walleye aosp_walleye-userdebug
Pixel XL marlin aosp_marlin-userdebug
Pixel sailfish aosp_sailfish-userdebug
HiKey hikey hikey-userdebug
Nexus 6P angler aosp_angler-userdebug
Nexus 5X bullhead aosp_bullhead-userdebug
Nexus 6 shamu aosp_shamu-userdebug
Nexus Player fugu aosp_fugu-userdebug
Nexus 9 volantis (flounder) aosp_flounder-userdebug
Nexus 5 (GSM/LTE) hammerhead aosp_hammerhead-userdebug
Nexus 7 (Wi-Fi) razor (flo) aosp_flo-userdebug
Nexus 7 (Celular) razorg (deb) aosp_deb-userdebug
Nexus 10 mantaray (manta) full_manta-userdebug
Nexus 4 occam (mako) full_mako-userdebug
Nexus 7 (Wi-Fi) nakasi (grouper) full_grouper-userdebug
Nexus 7 (Celular) nakasig (tilapia) full_tilapia-userdebug
Galaxy Nexus (GSM/HSPA+) yakju (maguro) full_maguro-userdebug
Galaxy Nexus (Verizon) mysid (toro) √aosp_toro-userdebug
Galaxy Nexus (Experimental) mysidspr (toroplus) aosp_toroplus-userdebug
Motorola Xoom (Wi-Fi dos EUA) wingray full_wingray-userdebug
Nexus S soju (crespo) full_crespo-userdebug
Nexus S 4G sojus (crespo4g) full_crespo4g-userdebug

Como realizar uma atualização flash em um dispositivo

É possível atualizar todo o sistema Android com um único comando. Essa ação verifica se o sistema que está sendo atualizado é compatível com o carregador de inicialização e o rádio instalados, grava as partições de inicialização, recuperação e sistema juntas e reinicializa o sistema. A atualização também apaga todos os dados do usuário, da mesma forma que fastboot oem unlock.

Para atualizar um dispositivo:

  1. Descompacte o arquivo de imagem no diretório dele.
  2. Defina a variável de ambiente ANDROID_PRODUCT_OUT de modo que aponte para o mesmo diretório usado na primeira etapa.
  3. Coloque o dispositivo no modo fastboot pressionando a combinação de teclas adequada durante a inicialização ou usando este comando:
    adb reboot bootloader
    .
  4. Depois que o dispositivo estiver no modo fastboot, execute:
    fastboot flashall -w
    . A opção -w exclui a partição /data no dispositivo. Isso é útil para a primeira atualização de um dispositivo específico; caso contrário, é desnecessário.

Configurações de atualização

As instruções de fastboot são explicadas em um artefato chamado fastboot-info.txt, encontrado em $ANDROID_PRODUCT_OUT/*. Esse documento .txt contém uma lista de tarefas para o fastboot executar e pode ser regenerado via m fastboot_info. Uma lógica de atualização personalizada pode ser introduzida ao modificar esse arquivo.

Comandos disponíveis:

  1. flash %s: atualiza uma partição específica. Argumentos opcionais incluem --slot-other, {filename_path}, --apply-vbmeta
  2. update-super: atualiza a superpartição
  3. if-wipe: executa outra funcionalidade condicionalmente quando "wipe" é especificado
  4. erase %s: apaga uma partição específica. Só pode ser usado em conjunto com if-wipe. Por exemplo: if-wipe erase cache

Como restaurar dispositivos para o estado de fábrica

Imagens de fábrica para dispositivos do Google estão disponíveis em Imagens de fábrica para dispositivos Nexus e Pixel. Imagens de fábrica para o Motorola Xoom são distribuídas diretamente pela Motorola.

Resolver erros de permissão negada

Na maioria dos sistemas Linux, os usuários sem privilégios não podem acessar as portas USB por padrão. Se você encontrar um erro de permissão negada, consulte as instruções do Android Studio para Configurar um dispositivo para desenvolvimento.

Se o adb já estava em execução e não consegue se conectar ao dispositivo, você pode interrompê-lo com adb kill-server. Esse comando faz com que o adb seja reiniciado com a nova configuração.