O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Atualizações de sistema não-A / B

Em dispositivos Android mais antigos sem partições A / B, o espaço em flash normalmente contém as seguintes partições:

bota
Contém o kernel do Linux e um sistema de arquivos raiz mínimo (carregado em um disco RAM). Ele monta o sistema e outras partições e inicia o tempo de execução localizado na partição do sistema.
sistema
Contém aplicativos e bibliotecas do sistema que possuem código-fonte disponível no Android Open Source Project (AOSP). Durante a operação normal, essa partição é montada somente leitura; seu conteúdo muda apenas durante uma atualização OTA.
fornecedor
Contém aplicativos e bibliotecas do sistema que não possuem código-fonte disponível no Android Open Source Project (AOSP). Durante a operação normal, essa partição é montada somente leitura; seu conteúdo muda apenas durante uma atualização OTA.
dados do usuário
Armazena os dados salvos pelos aplicativos instalados pelo usuário, etc. Essa partição normalmente não é afetada pelo processo de atualização do OTA.
cache
Área de retenção temporária usada por alguns aplicativos (acessar esta partição requer permissões especiais de aplicativo) e para armazenamento de pacotes de atualização OTA baixados. Outros programas usam esse espaço com a expectativa de que os arquivos possam desaparecer a qualquer momento. Algumas instalações de pacotes OTA podem resultar na limpeza completa dessa partição. O cache também contém os logs de atualização de uma atualização OTA.
recuperação
Contém um segundo sistema Linux completo, incluindo um kernel e o binário de recuperação especial que lê um pacote e usa seu conteúdo para atualizar as outras partições.
misc
Pequena partição usada pela recuperação para ocultar algumas informações sobre o que está fazendo, caso o dispositivo seja reiniciado enquanto o pacote OTA está sendo aplicado.

Vida de uma atualização OTA

Uma atualização típica do OTA contém as seguintes etapas:

  1. O dispositivo realiza check-in regularmente nos servidores OTA e é notificado da disponibilidade de uma atualização, incluindo o URL do pacote de atualização e uma sequência de descrição para mostrar ao usuário.
  2. Atualize os downloads em um cache ou partição de dados e sua assinatura criptográfica é verificada nos certificados em /system/etc/security/otacerts.zip . O usuário é solicitado a instalar a atualização.
  3. O dispositivo é reiniciado no modo de recuperação, no qual o kernel e o sistema na partição de recuperação são inicializados em vez do kernel na partição de inicialização.
  4. O binário de recuperação é iniciado pelo init. Ele encontra argumentos da linha de comando em /cache/recovery/command que apontam para o pacote baixado.
  5. A recuperação verifica a assinatura criptográfica do pacote em relação às chaves públicas em /res/keys (parte do disco RAM contido na partição de recuperação).
  6. Os dados são retirados do pacote e usados ​​para atualizar as partições de inicialização, sistema e / ou fornecedor, conforme necessário. Um dos novos arquivos deixados na partição do sistema contém o conteúdo da nova partição de recuperação.
  7. O dispositivo reinicia normalmente.
    1. A partição de inicialização recém-atualizada é carregada e é montada e começa a executar binários na partição do sistema recém-atualizada.
    2. Como parte da inicialização normal, o sistema verifica o conteúdo da partição de recuperação em relação ao conteúdo desejado (anteriormente armazenado como um arquivo em /system ). Como são diferentes, a partição de recuperação é atualizada com o conteúdo desejado. (Nas inicializações subsequentes, a partição de recuperação já contém o novo conteúdo, portanto, não é necessário reflash.)

A atualização do sistema está completa! Os logs de atualização podem ser encontrados em /cache/recovery/last_log. # .

Atualizar pacotes

Um pacote de atualização é um arquivo .zip que contém o binário executável META-INF/com/google/android/update-binary . Após verificar a assinatura no pacote, a recovery extrai esse binário em /tmp e executa o binário, transmitindo os seguintes argumentos:

  • Atualize o número da versão da API binária . Se os argumentos transmitidos para a atualização binária forem alterados, esse número será incrementado.
  • Descritor de arquivo do tubo de comando . O programa de atualização pode usar esse canal para enviar comandos de volta ao binário de recuperação, principalmente para alterações na interface do usuário, como a indicação de progresso para o usuário.
  • Nome do arquivo do arquivo .zip pacote de atualização .

Um pacote de atualização pode usar qualquer binário vinculado estaticamente como o binário de atualização. As ferramentas de construção de pacotes OTA usam o programa atualizador ( bootable/recovery/updater ), que fornece uma linguagem de script simples que pode executar muitas tarefas de instalação. Você pode substituir qualquer outro binário em execução no dispositivo.

Para obter detalhes sobre as funções binárias do atualizador, sintaxe edify e funções internas, consulte Inside OTA Packages .

Migrando de Liberações Anteriores

Ao migrar da versão Android 2.3 / 3.0 / 4.0, a principal mudança é a conversão de toda a funcionalidade específica do dispositivo de um conjunto de funções C com nomes predefinidos em objetos C ++. A tabela a seguir lista as funções antigas e os novos métodos que servem a uma finalidade aproximadamente equivalente:

Função C Método C ++
device_recovery_start () Device :: RecoveryStart ()
device_toggle_display ()
device_reboot_now ()
RecoveryUI :: CheckKey ()
(também RecoveryUI :: IsKeyPressed ())
device_handle_key () Device :: HandleMenuKey ()
device_perform_action () Device :: InvokeMenuItem ()
device_wipe_data () Device :: WipeData ()
device_ui_init () ScreenRecoveryUI :: Init ()

A conversão de funções antigas para novos métodos deve ser razoavelmente direta. Não se esqueça de adicionar a nova função make_device() para criar e retornar uma instância da sua nova subclasse Device.