Guia de coluna de atualização do Android OTA

Guia de coluna de atualização do Android OTA


Desde 2017, escrevo alguns artigos relacionados às atualizações do Android OTA, principalmente apresentando o sistema de atualização A/B introduzido do Android 7.1, incluindo o sistema A/B anterior, para a partição dinâmica posterior e para a partição A/B virtual recente e alguns tópicos recentes do Android OTA.

Não é exagero dizer que esta é atualmente a coluna mais sistemática e abrangente sobre atualizações Android OTA em toda a rede.

A partir do início deste ano, decidi dedicar mais energia ao Android OTA. Analisarei os novos recursos do Android Q(10) e do Android R(11) em detalhes e acompanharei a versão mais recente do Android o mais rápido possível dentro o ano.

Por favor, perdoe-me por mudar algumas colunas de gratuitas para pagas, porque eu coloco muita energia em cada artigo, e cada artigo tenta explicar claramente a causa e o efeito do problema. Se for totalmente gratuito, realmente não há motivação para atualizar. Obrigado por sua compreensão e tolerância ~~ Também sou muito grato aos amigos que se inscreveram por seu apoio e reconhecimento.

Se você se inscreveu na coluna paga, certifique-se de me adicionar no WeChat e colocá-lo no "Grupo de perguntas e respostas VIP da coluna de partição dinâmica e partição virtual".

Responda "wx" nos bastidores da conta oficial "Rocky Watching the World" para obter o WeChat pessoal.

Até agora, escrevi artigos relacionados a atualizações do Android OTA, incluindo as seguintes séries:

Observação:

  • As duas séries "Android A/B System" e "Android Update Engine Analysis" foram concluídas e as demais ainda estão sendo atualizadas.

  • "Android Dynamic Partition" e "Android Virtual A/B Partition" são colunas pagas, o preço inicial é 29,9 e o preço será ajustado à medida que o conteúdo aumenta

    • O preço atual do "Android Dynamic Partition" é 49,9,
    • Atualmente, o preço do "Android Virtual A/B Partition" é de 49,9, subindo gradualmente e finalmente ajustado para 299.
  • "Ferramentas relacionadas ao Android OTA" inclui principalmente a análise e discussão das ferramentas existentes relacionadas ao Android OTA, bem como a publicação de algumas ferramentas OTA escritas por mim.

Este artigo resume todos os artigos dessas séries neste artigo e os explica um por um para facilitar a leitura seletiva e o aprendizado sistemático.

Este artigo está dividido basicamente em duas partes:

  • A primeira parte é uma entrada rápida, que fornece links para todos os artigos, clique para pular diretamente;

  • A segunda parte faz uma breve introdução ao conteúdo de cada artigo, podendo escolher temas de interesse para ler de acordo com as suas necessidades.

1. Entrada rápida

A introdução básica da série "Sistema Android A/B" foi concluída.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12140293.html

A série do código principal "Android Update Engine Analysis" foi concluída.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12140296.html

Partição Dinâmica Série "Android Dynamic Partition" , sendo atualizada.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12140166.html

Série Virtual A/B "Android Virtual A/B Partition" , sendo atualizada.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12121868.html

A ferramenta de atualização "Ferramentas relacionadas ao Android OTA" está sendo atualizada.

outros artigos

2. Breve introdução

1. Introdução básica: série "Sistema Android A/B"

A série "Android A/B System" é baseada no código anterior AOSP 7.1.1_r23 do sistema A/B. Embora a versão do código seja relativamente antiga, alguns conteúdos não são mais aplicáveis ​​após a introdução de partições dinâmicas no Android 10( Q), mas a maior parte do conteúdo ou operações ainda é relevante após o Android 11®.

Como uma série introdutória de todo o sistema A/B, se você ainda não conhece o sistema Android A/B, é recomendável ler primeiro os artigos desta coluna para ter uma compreensão geral do sistema A/B.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12140293.html

  • Visão geral da análise OTA do sistema Android A/B (1)

    Link: https://blog.csdn.net/guyongqiangx/article/details/71334889

    Introduzido principalmente:

    • O que é um sistema A/B
    • Particionamento do sistema A/B
    • O estado do sistema A/B e
    • Comutação de escalonamento do sistema A/B
  • Análise OTA do sistema Android A/B (2) Geração de imagem do sistema

    Link: https://blog.csdn.net/guyongqiangx/article/details/71516768

    Introduzido principalmente:

    • A diferença entre o espelhamento do sistema A/B e o espelhamento de conteúdo no modo de atualização OTA tradicional
    • Variáveis ​​Makefile relacionadas ao sistema A/B
    • Geração de arquivo de imagem do sistema A/B, incluindo recovery.img, boot.img, system.img, userdata.img, cache.img, vendor.img
  • Android A/B System OTA Analysis (3) Comunicação entre o sistema principal e o bootloader

    Link: https://blog.csdn.net/guyongqiangx/article/details/72480154

    Introduzido principalmente:

    • Como o sistema principal do Android se comunica com o bootloder durante atualizações OTA tradicionais

    • Análise detalhada da interface HAL boot_control do sistema principal Android comunicando-se com o bootloader no sistema A/B

      • Definição de interface e implementação de boot_control

        • Implementação da Plataforma Google Brillo
        • Implementação do edison na plataforma Intel
        • Implementação da Plataforma QualComm
        • Implementação da plataforma Broadcom STB
      • ferramenta de teste de boot_control bootctl

      • A chamada de boot_control

        • bootloader chama boot_control
        • Sistema principal do Android boot_control_android chama boot_control
        • update_verifier chama boot_control
  • Sistema Android A/B Análise OTA (4) Inicialização e atualização do sistema

    Link: https://blog.csdn.net/guyongqiangx/article/details/72604355

    Introduzido principalmente:

    • O bootloader lê e verifica o processo de boot_control
    • Como o sistema linux inicia e trava na partição do sistema Android
    • Como o sistema principal e o sistema de recuperação do Android são iniciados
    • Produção de pacote de atualização do sistema A/B
      • Produção de pacotes completos
      • Criação de pacotes incrementais/de diferença
    • Log de amostra de atualização para mecanismo de atualização
  • Análise OTA do sistema Android A/B (5) Parâmetros do cliente

    Link: https://blog.csdn.net/guyongqiangx/article/details/122430246

    Introduzido principalmente:

    • Parâmetros suportados pelo cliente update_engine_client

    • Como os parâmetros do segmento do cliente update_engine_client são analisados ​​e passados ​​para o serviço do mecanismo de atualização

    • Como atualizar usando arquivos remotos e locais

    • Como definir os parâmetros de deslocamento e tamanho ao atualizar

  • Android A/B System OTA Analysis (6) Como obter o deslocamento e o tamanho da carga útil

    Link: https://blog.csdn.net/guyongqiangx/article/details/122498561

    Introduzido principalmente:

    • Formato do arquivo zip
    • 3 maneiras de obter o deslocamento e o tamanho de payload.bin no pacote de atualização do sistema A/B update.zip
      • O Android O começa a gerar dados de deslocamento e tamanho automaticamente
      • Use zipinfo para calcular manualmente os dados de deslocamento e tamanho
      • Use a ferramenta de script zip_info.py para calcular os dados de deslocamento e tamanho

2. Módulo principal: série "Android Update Engine Analysis"

A série "Android Update Engine Analysis" é baseada no código anterior AOSP 7.1.1_r23 do sistema A/B. Embora a versão do código seja relativamente antiga, o conteúdo da parte de processamento da partição do Update Engine está no Android 9§, Andrid 10 (Q) e Android 11® e subseqüentes Há atualizações uma após a outra, mas o processo principal do próprio Mecanismo de Atualização não foi alterado, portanto, mesmo que você trabalhe na versão do Android com base em partição dinâmica ou A/B virtual, o processo principal do Update Engine ainda tem valor de referência.Comparado com o código mais recente, A O código anterior para o sistema /B era mais simples e fácil de entender.

Por exemplo, a operação geral de todo o sistema A/B, compilando e empacotando, usando o Update Engine Client para atualizar e o Update Engine Service para receber dados, analisar a carga útil e gravar os dados na partição ainda é a mesma no Android 10(Q) e Android 11®.

A diferença é que quando o Android 10(Q) começa a atualizar o manifesto após receber o payload, a partição dinâmica primeiro usará os dados do manifesto para atualizar a tabela de partições (lpmetadata) da partição dinâmica no cabeçote do superdispositivo Depois que a tabela de partição é atualizada, de acordo com a partição Os dados na tabela mapeiam algumas partes do superdispositivo para outro slot e, em seguida, executam a mesma atualização anterior com base nesses dois slots.

Para o sistema A/B virtual a partir do Android 11®, depois de receber o manifesto da carga útil e começar a atualizar, a partição A/B virtual primeiro usará os dados no manifesto para atualizar a tabela de partições (lpmetadata) do dinâmico partição na cabeça do superdispositivo e, em seguida, da área livre do superdispositivo ou aloque espaço da partição de dados para construir e mapear outro slot.

Portanto, ao contrário da partição dinâmica, o outro slot do A/B virtual não existe no sistema (na verdade existe durante a partição dinâmica), e é mapeado através do espaço livre do super dispositivo ou dos arquivos da partição de dados , por isso é chamado de A/B virtual, porque apenas um conjunto realmente existe no dispositivo.

Após o mapeamento do dispositivo virtual, o sistema realiza a mesma atualização do sistema A/B anterior com base em um slot real e um slot virtual. Após a conclusão da atualização, o sistema reinicia e inicia a partir do slot virtual. Se o slot virtual for iniciado com sucesso, os dados no slot virtual começarão a ser mesclados no slot real. Se o slot virtual falhar ao iniciar, o sistema retornará ao slot real.

Portanto, exceto pelo processamento diferente das partições (o A/B virtual também terá uma operação de mesclagem), o processo principal do Update Engine é basicamente o mesmo do Android 7(N) para a versão mais recente.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12140296.html

  • Análise do Android Update Engine (1) Makefile

    Link: https://blog.csdn.net/guyongqiangx/article/details/77650362

    Este artigo analisa principalmente o Makefile do Update Engine linha por linha com base no código do Android 7.1.1, de forma a obter a estrutura modular de todo o código do Update Engine, incluindo quais bibliotecas e arquivos executáveis ​​são gerados e quais ferramentas de depuração são disponível.

    No Android 10(Q), o Android.mk do módulo Update Engine foi substituído pelo Androi.bp. A análise original do Android.mk não é mais aplicável, mas ainda recomendo que você leia o arquivo Androi.bp para entender o toda a estrutura do módulo do Update Engine.

  • Análise do Android Update Engine (2) arquivos Protobuf e AIDL

    Link: https://blog.csdn.net/guyongqiangx/article/details/80819901

    Introduzido principalmente:

    • O arquivo update_metadata.proto que descreve a estrutura de carga, antes da introdução de partições dinâmicas no Android 10(Q), este arquivo tem algumas pequenas atualizações, mas os pontos principais não mudaram muito.
    • Descreva o arquivo IUpdateEngine.aidl da interface do serviço Update Engine e analise a relação hierárquica entre o serviço fichário do Update Engine e a interface com base no arquivo compilado a partir da interface.

    Em relação a como compilar e transformar AIDL, e a relação de implementação com o serviço de binder é mais complicado, eu pessoalmente acho que não é necessário saber relacionar, não há necessidade de investir muito tempo nessa parte.

  • Análise do mecanismo de atualização do Android (3) Processo do cliente

    Link: https://blog.csdn.net/guyongqiangx/article/details/80820399

    Analise principalmente o update_engine_client em torno do cliente do Update Engine, incluindo:

    • Dependências para o arquivo update_engine_client

    • Tratamento de parâmetros de update_eingine_client

      • Como analisar argumentos de linha de comando

      • Como lidar com suspender, retomar, cancelar, reset_status, seguir, atualizar e outras operações, além de chamar o serviço Update Engine Service

  • Análise do mecanismo de atualização do Android (4) Processo do servidor

    Link: https://blog.csdn.net/guyongqiangx/article/details/82116213

    Analise principalmente o processo do servidor Update Engine update_engine, incluindo:

    • Dependências para arquivos do servidor do mecanismo de atualização
    • Análise linha por linha do arquivo de entrada main.cc
    • Como update_engine_daemon é inicializado e o serviço de fichário é criado
    • Como o Update Engine implementa a notificação de retorno de chamada
  • Análise do Android Update Engine (5) Mecanismo de ação do Server Core

    Link: https://blog.csdn.net/guyongqiangx/article/details/82226079

    Introduzido principalmente:

    • Os blocos de construção do mecanismo Action, incluindo Action, Action Processor e Action Pipe
    • Analisou as operações de processamento do mecanismo Action, incluindo iniciar e interromper o processamento, pausar e retomar o processamento e terminar o trabalho no final
    • Relacionamento hierárquico de várias ações
      • ResumoAção, Ação
      • InstallPlanAction, DownloadAction, FilesystemVerifierAction, PostinstallRunnerAction
    • Após o ApplyPayload receber a solicitação de atualização, como criar o ActionPipe e iniciar a atualização
    • Como criar e executar ações como suspender, retomar, cancelar e resetStatus
  • Análise do Android Update Engine (6) Ação detalhada do núcleo do servidor

    Link: https://blog.csdn.net/guyongqiangx/article/details/82390015

    Análise detalhada do código de implementação das 4 principais ações do Update Engine:

    • InstallPlanAction

    • DownloadAction

    • FilesystemVerifierAction

    • PostinstallRunnerAction

  • Análise do Android Update Engine (7) FileWriter de DownloadAction

    Link: https://blog.csdn.net/guyongqiangx/article/details/82805813

    Análise mais detalhada da operação DownloadAction, onde FileWrite é o núcleo de todos os dados de gravação de atualização:

    • Quando o DownloadAction grava os dados recebidos?
    • Estrutura detalhada do arquivo Payload
    • Como os dados de atualização recebidos são gravados? (Operação de gravação do DeltaPerformer)
      • Como atualizar os dados recebendo informações de andamento?
      • Como analisar os dados do cabeçalho do pacote de atualização para obter os dados do DeltaArchiveManifest?
      • Como verificar a assinatura?
      • Como extrair informações de partição do DeltaArchiveManifest?
      • Como faço para atualizar as informações de status de atualização?
      • Como extrair o InstallOperation de cada partição e verificar o hash dos dados do payload?
      • Execute a operação de atualização de InstallOperation em detalhes
      • Como extrair a assinatura dos dados de atualização?

    Essa parte do código está localizada na função DeltaPerformer::Write(), e a importância dessa função não pode ser subestimada. Portanto, este artigo é a principal prioridade de todo o Mecanismo de Atualização e vale a pena ser lido repetidamente.

    Muitas alterações na seguinte partição dinâmica e A/B virtual estão Write()localizadas no fluxo de processamento de arquivos .

    Até o momento, a análise do processo no dispositivo Android está concluída.

  • Análise do Android Update Engine (8) Análise do script de criação do pacote de atualização

    Link: https://blog.csdn.net/guyongqiangx/article/details/82871409

    Introduzido principalmente:

    • Como fazer pacotes de atualização completos e incrementais?
    • Ferramenta de criação de pacote de atualização de análise linha por linha ota_from_target_files
    • Analise o payload linha por linha para gerar o script brillo_update_payload
      • Como gerar arquivo de carga útil
      • Como gerar um hash de dados de carga útil e dados de metadados
      • Como gravar a assinatura da carga útil e os metadados de volta no arquivo de carga útil
      • Como extrair os dados de propriedades do arquivo de carga útil

    Se você deseja conhecer o processo de produção do pacote de atualização detalhado, recomenda-se a leitura detalhada deste artigo. E no final do artigo, as etapas de linha de comando do uso do delta_generator para gerar a carga útil são resumidas.

  • Android Update Engine Analysis (9) 6 operações da ferramenta delta_generator

    Link: https://blog.csdn.net/guyongqiangx/article/details/122351084

    Ele apresenta principalmente a ferramenta delta_generator que gera dados diferenciais em tempo de compilação:

    • Revise as etapas para gerar arquivos de carga útil usando delta_genertor
    • Análise do código-fonte do programa principal delta_generator
    • 6 operações suportadas pelo delta_generator
  • Android Update Engine Analysis (10) Gerar carga útil e hash de metadados

    Link: https://blog.csdn.net/guyongqiangx/article/details/122393172

    Ele apresenta principalmente como delta_generator gera carga útil e hash de metadados:

    • Como calcular o hash de carga útil e metadados
    • Como gravar o hash calculado de volta no arquivo de carga útil
    • Como calcular manualmente o hash de carga útil e metadados na linha de comando
    • Como analisar manualmente os dados do cabeçalho da carga útil
    • Como calcular e verificar manualmente o hash do payload
  • Análise do Android Update Engine (11) Atualizar assinatura de carga útil

    Link: https://blog.csdn.net/guyongqiangx/article/details/122597314

    Introduzido principalmente:

    • Resumir a geração e o processamento de dados de carga útil

    • Como atualizar a assinatura do arquivo de carga útil

  • Android Update Engine Analysis (12) Verifique a assinatura da carga útil

    Link: https://blog.csdn.net/guyongqiangx/article/details/122634221

    Introduzido principalmente:

    • Como gerar a chave pública usada para autenticação

    • Como verificar a assinatura do payload usando a chave pública

    • Processo de verificação de assinatura de carga útil

    • Como verificar assinaturas manualmente usando ferramentas de linha de comando

    • Como usar ferramentas protobuf para restaurar dados de assinatura de metadados

  • Android Update Engine Analysis (13) Extraindo dados de propriedade de carga útil

    Link: https://blog.csdn.net/guyongqiangx/article/details/122646107

    Introduzido principalmente:

    • Como o delta_generator extrai dados de propriedades da carga útil
    • Como extrair manualmente os dados de atributo do payload
  • Android Update Engine Analysis (14) Gerar dados de carga útil

    Link: https://blog.csdn.net/guyongqiangx/article/details/122753185

    Introduzido principalmente:

    • Revisado o processo de geração de carga útil
    • Análise do código-fonte do delta_generator gerando carga útil
    • Introduzida a estrutura payload_config que gera dados de carga útil
    • Como os dados de carga são finalmente montados?
  • Análise do mecanismo de atualização do Android (15) Estratégia FullUpdateGenerator

    Link: https://blog.csdn.net/guyongqiangx/article/details/122767273

    Apresenta principalmente a estratégia de geração do pacote completo e todo o processo de chamada.

  • Análise do mecanismo de atualização do Android (16) Estratégia do ABGenerator

    Link: https://blog.csdn.net/guyongqiangx/article/details/122886150

    Apresenta principalmente a estratégia de geração e o processo de chamada do pacote diferencial. Para a estratégia do pacote completo, o processo de geração do pacote diferencial é mais complicado. Recomenda-se seguir o artigo para ler o código-fonte em detalhes.

  • Análise do mecanismo de atualização do Android (17) Geração e aplicação de 10 tipos de dados InstallOperation

    Link: https://blog.csdn.net/guyongqiangx/article/details/122942628

    As 10 operações usadas para atualizar a geração e gravação de dados no arquivo de carga útil são analisadas em detalhes:

    • Operações ZERO, REPLACE_XZ, REPLACE_BZ e REPLACE
    • Operações REPLACE_XZ, REPLACE_BZ e REPLACE
    • operação ZERO
    • operação DESCARTAR
    • Operações MOVE e SOURCE_COPY
    • Operações BSDIFF e SOURCE_BSDIFF e operações IMGDIFF

3. Partição Dinâmica: Série "Partição Dinâmica Android"

O sistema Android A/B introduz partições dinâmicas a partir do Android 10(Q). No sistema A/B original, cada partição nos dois slots é pré-alocada com um tamanho fixo. Depois de suportar a partição dinâmica, os dois slots do sistema A/B são incluídos no superdispositivo, e as informações da tabela de partição do slot do sistema A/B são expressas pelos dados LpMetadata no cabeçalho do superdispositivo. Uma vantagem disso é que o tamanho da partição no slot pode ser ajustado dinamicamente. O problema é que as informações da tabela de partições no superdispositivo precisam ser processadas durante a atualização e a partição no superdispositivo precisa ser corretamente analisados ​​e carregados quando o sistema é iniciado.

A série "Android Dynamic Partition" é baseada nas séries "Android A/B System" e "Android Update Engine Analysis" , baseadas no código android-10.0.0_r47, e foca principalmente nas mudanças após a introdução do sistema A/B partições dinâmicas.

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12140166.html

  • Explicação detalhada da partição dinâmica do Android (1) 5 imagens permitem que você entenda o princípio da partição dinâmica

    Link: https://blog.csdn.net/guyongqiangx/article/details/123899602

    Introduzido principalmente:

    • A essência do particionamento dinâmico é adicionar, excluir, modificar e verificar os dados da tabela de partição LpMetadata
    • O princípio do mecanismo mapeador de dispositivos que suporta particionamento dinâmico
    • Partição dinâmica do Android e layout de dados de descrição de LpMetadata
      • Macro: super partição
      • Visão central: dados de metadados
      • Micro: Gemoetry e estrutura de dados de metadados
    • A estrutura de dados principal LpMetadata da partição dinâmica
    • Fornece um exemplo de Android Dynamic Partition Mapping
    • Compilação e geração de super.img
    • Análise do super.img
    • Mapeamento do super.img

    Se você deseja obter uma compreensão geral dos princípios básicos da composição de partições dinâmicas por meio de um artigo, a leitura deste artigo é suficiente.

  • Explicação detalhada da partição dinâmica do Android (2) Introdução dos módulos principais e ferramentas relacionadas

    Link: https://blog.csdn.net/guyongqiangx/article/details/123931356

    Introduzido principalmente:

    • Módulos principais relacionados ao particionamento dinâmico
      • liblp (partição lógica lib)
      • libdm (lib do mapeador de dispositivos)
      • libfs_mgr (gerenciador de sistema de arquivos lib)
      • libsparse (lib de imagem esparsa)
    • Ferramentas de depuração relacionadas à partição dinâmica
      • lpmake, lpdump, lpflash, lpunpack
      • dmctl, dmuserd
      • simg2img, img2simg, append2simg, simg_dump.py

    Se você deseja depurar partições dinâmicas ou visualizar informações de partições dinâmicas, lpdump e dmctl são as ferramentas mais usadas.

  • Explicação detalhada da partição dinâmica do Android (3) Configuração da partição dinâmica e geração de super.img

    Link: https://blog.csdn.net/guyongqiangx/article/details/124052932

    Introduzido principalmente:

    • A opção de configuração da partição dinâmica, incluindo a configuração da partição dinâmica nativa e a configuração da partição dinâmica de atualização
    • Análise de exemplo de configuração de partição dinâmica
      • hachura (Pixel 3 XL)
      • bonito (Pixel 3a XL)
      • Emulador choco
    • Verificação de parâmetros para partições dinâmicas
    • Manipulação de parâmetros e rastreamento de partições dinâmicas em Makefiles
      • Onde os parâmetros relacionados à partição dinâmica são finalmente definidos?
    • Análise de compilação e geração de partição dinâmica nativa super.img
      • super.img no modo dist
      • super.img no modo de depuração
      • super_empty.img
      • análise de script build_super_image.py

    Se você não tem certeza de como configurar partições dinâmicas e como essas configurações entram em vigor, consulte a análise neste artigo.

  • Explicação detalhada da partição dinâmica do Android (4) Processamento de partição dinâmica em OTA

    Link: https://blog.csdn.net/guyongqiangx/article/details/124224206

    Introduzido principalmente:

    • Análise de dados de partição dinâmica em carga útil
    • Como fazer um pacote de atualização para partições dinâmicas
    • Ao fazer um pacote de atualização
      • Como empacotar dados de partição dinâmica
      • Como enviar dados de partição dinâmica para o arquivo de carga útil
      • Processo de empacotamento de dados de partição dinâmica
    • ao atualizar
      • Como processar os dados do manifesto recebidos
      • Como atualizar os dados da partição dinâmica do super dispositivo
      • Atualize e mapeie o processo para partições dinâmicas

    Este artigo se concentra principalmente em como enviar as informações de partição dinâmica para o arquivo de carga útil ao fazer o pacote de atualização; como analisar as informações de partição dinâmica da carga útil e usá-las para atualização de partição dinâmica ao atualizar e atualizar.

  • Explicação detalhada da partição dinâmica do Android (5) Por que o super.img não é gerado?

    Link: https://blog.csdn.net/guyongqiangx/article/details/128005251

    Ele apresenta principalmente por que o super.img não é gerado ao compilar o dispositivo de referência AOSP, embora a partição dinâmica esteja habilitada

  • Explicação detalhada da partição dinâmica do Android (6) O mecanismo subjacente da partição dinâmica

    Link: https://blog.csdn.net/guyongqiangx/article/details/128305482

    Introduzido principalmente:

    • O duplo significado de partição dinâmica, partição dinâmica no modo de usuário
    • princípio do mapeador de dispositivos
    • O princípio do mapeamento linear de dispositivos como base para o particionamento dinâmico
      • Exemplo de mapeamento de dispositivo linear de partição manual
    • dmsetup criar explicação do parâmetro
    • Use manualmente a ferramenta dmsetup para mapear o super dispositivo

    Ele usa principalmente algumas ferramentas de linha de comando do linux para simular o mapeamento de partição dinâmica, de modo a aprofundar a compreensão do mecanismo de partição dinâmica.

  • Explicação detalhada da partição dinâmica do Android (sete) overlayfs e operação de remontagem adb

    Link: https://blog.csdn.net/guyongqiangx/article/details/128881282

    Introduzido principalmente:

    • O princípio subjacente de overlayfs
    • Como compilar e configurar overlayfs no Linux e como verificar overlayfs em tempo de execução
    • Por que introduzir overlayfs no sistema Android
    • Feche o dm-verity no Android e execute o processo de remontagem
    • Abra dm-verity no Android e execute o processo de unmuount
    • Problema de atualização OTA causado pela execução de remontagem no Android
      • A atualização OTA falha após a remontagem do adb
      • partição de remontagem adb, causando falha de redimensionamento de superpartição de atualização OTA

    Destina-se principalmente à análise e resumo de uma série de problemas causados ​​pela remontagem que são frequentemente questionados em grupos de discussão OTA.

4. Partição virtual: série "Android Virtual A/B Partition"

Endereço da coluna: https://blog.csdn.net/guyongqiangx/category_12121868.html

5. Ferramentas de atualização: série "Ferramentas relacionadas ao Android OTA"

6. Outros artigos

3. Outro

Se você já se inscreveu na coluna paga de partição dinâmica e partição virtual, certifique-se de me adicionar no WeChat, anotar a conta de assinatura e colocá-lo no "Grupo de perguntas e respostas VIP da coluna de partição dinâmica e partição virtual". Responderei às suas perguntas sobre sistemas A/B, partições dinâmicas, partições virtuais, várias atualizações OTA e assinaturas em um momento conveniente.

Além disso, tenho um grupo de discussão de atualização do Android OTA, que agora tem mais de 400 amigos, discutindo principalmente tópicos de atualização OTA para vários dispositivos, como telefones celulares, máquinas automotivas, TVs, decodificadores e tablets. Se você estiver envolvido em Trabalho de atualização OTA, bem-vindo Junte-se ao grupo para se comunicarem juntos, indique "Grupo de discussão Android OTA" ao me adicionar no WeChat. Este grupo é limitado a desenvolvedores Android OTA~

Responda "wx" nos bastidores da conta oficial "Rocky Watching the World" para obter o WeChat pessoal.

Acho que você gosta

Origin blog.csdn.net/guyongqiangx/article/details/129019303
Recomendado
Clasificación