O Google voltou atrás ao exigir que os OEMs suportassem A/B virtual em novos dispositivos Android 11, o que teria aberto o caminho para atualizações contínuas.
Atualização 1 (25/01/2021 às 14h06 horário do leste dos EUA): Antes do lançamento do Android 11, o Google parece ter voltado atrás em exigir que os dispositivos de lançamento suportem A/B virtual. Clique aqui para obter mais informações. O artigo publicado em 7 de abril de 2021 está preservado abaixo.
Com o Android 7.0 Nougat, o Google introduziu um esquema de partição projetado para acelerar as atualizações de software. No Nougat, o Google adicionou suporte para duplicar certas partições para que as partições inativas possam ser atualizadas em segundo plano e depois trocadas para ativas com uma reinicialização rápida. Esse A configuração da "partição A/B" permite "atualizações contínuas" ocorrerá em dispositivos Android compatíveis, assim como o Chrome OS do Google. No entanto, o Google nunca exigiu o uso de partições A/B, pois há muitos dispositivos por aí que não suportam atualizações contínuas. No entanto, isso pode mudar com o Android 11, já que o Google está tornando obrigatório que dispositivos recém-lançados suportem partições A/B virtuais.
Para obter informações básicas, as partições A/B referem-se ao conjunto de partições somente leitura que são duplicadas. As partições duplicadas normalmente incluem as partições de sistema, fornecedor, inicialização e produto. Quando o telefone está baixando uma atualização, o atualizador corrige o conjunto inativo de partições (um “slot”) em segundo plano. Assim que a atualização terminar de ser aplicada ao slot inativo, o usuário será solicitado a reinicializar o dispositivo. Quando o usuário reinicia o dispositivo, o slot inativo troca de lugar pelo slot ativo, finalizando o processo de atualização. O slot ativo anteriormente permanece intacto se houver um problema ao inicializar o slot recém-atualizado. Quando a próxima atualização chegar, esse processo será repetido. Se você estiver interessado em uma explicação mais técnica, consulte a documentação do desenvolvedor do Google em partições A/B.
Por outro lado, dispositivos sem partições A/B, como o Samsung Galaxy S20, OPPO Find X2 e muitos outros, aplicam atualizações por meio de um atualizador dedicado em um processo de recuperação. Isso expulsa o usuário do Android e impossibilita que ele use o dispositivo por vários minutos, potencialmente perdendo notificações, chamadas ou mensagens de texto importantes. O Google acredita que simplificar o processo de atualização faz com que mais pessoas realmente façam uma atualização assim que ela for lançada; na verdade, em maio de 2017, O Google descobriu que uma porcentagem maior de usuários do Pixel do que de usuários do Nexus estava executando a atualização de segurança mais recente. É claro que o usuário pode agendar atualizações para ocorrerem quando não estiver usando ativamente o dispositivo, mas muitos usuários simplesmente não atualizam o dispositivo, mesmo quando solicitado. Além disso, por não ter partições A/B, o usuário perde um de seus benefícios inerentes: protegê-los contra atualizações mal feitas do sistema.
Por exemplo, quando Xiaomi lançou pela primeira vez a atualização do Android 10 para o Mi A2 Lite, muitos usuários descobriram que seus dispositivos não estavam inicializando. Felizmente para eles, o Mi A2 Lite possui partições A/B para atualizações contínuas, então usuários em nossos fóruns encontraram que eles poderiam usar um comando fastboot para configurar o bootloader para inicializar o conjunto de partições intocado e anteriormente ativo. Assim, as partições A/B não apenas fornecem aos usuários um processo de atualização muito mais rápido, mas também atuam como uma proteção contra falhas para atualizações mal feitas. OEMs que não implementaram partições A/B ainda podem projetar sua própria maneira de se proteger contra OTA falhas, mas por que passar por esse problema quando essa proteção faz parte do design do A/B partições? Para sua referência, aqui está um resumo parcial (e reconhecidamente desatualizado) lista de dispositivos que suportam partições A/B para atualizações contínuas, e aqui está um tutorial sobre como verificar se o seu próprio dispositivo suporta o recurso.
Pode parecer intrigante por que certos OEMs gostam A Samsung cobra US$ 1.400 por um smartphone, mas não oferece um recurso tão bacana. O motivo geralmente se resume ao armazenamento: os OEMs não querem sacrificar alguns gigabytes de espaço de armazenamento para oferecer suporte a atualizações contínuas. Telefones como o Samsung Galaxy S20 têm um tonelada de software pré-instalado, portanto, a duplicação de partições como /system e /product resultará na duplicação de muitos arquivos e aplicativos enormes. O Google conseguiu implementar partições A/B sem sacrificar muito o espaço de armazenamento graças a um truque inteligente para contornar o problema de duplicação de arquivos .odex massivos. Outro motivo pelo qual os OEMs podem ter optado por não implementar partições A/B é o custo: acompanhar as recomendações do Google mudanças constantes nos esquemas de partição do Android exigem muito esforço, como XDA Recognized Developer topjohnwu vou te contar. A menos que os OEMs sejam forçados a fazê-lo, muitos não se preocuparão em mudar o que já funciona para eles.
Finalmente, porém, o Google parece estar estabelecendo a lei no Android 11. Ao forçar a adoção de partições A/B virtuais em dispositivos recém-lançados, eles praticamente garantiram que os OEMs terão que oferecer suporte a atualizações contínuas para seus dispositivos do final de 2020 e 2021. Conforme detectado pelo desenvolvedor reconhecido XDA luca020400, Yifan Hong, engenheiro de software do Google na equipe do Project Treble, enviou um commit ao AOSP Gerrit intitulado "Exigir lançamentos A/B virtuais em R." O commit atualiza o Vendor Test Suite, ou VTS, que é um teste automatizado no qual todos os dispositivos devem passar para serem considerados compatíveis com o Project Treble. O novo teste verifica se a propriedade do sistema "ro.virtual_ab.enabled
"está definido como verdadeiro e se"ro.virtual_ab.retrofit
"é definido como falso em dispositivos com nível de API de envio 30 ou superior. Em outras palavras, este teste verifica se um dispositivo lançado com Android 11 ou superior suporta partições A/B virtuais. Partições A/B “virtuais” foram introduzidas com o Android 10 junto com “partições dinâmicas”, que são partições redimensionáveis dinamicamente. Elas têm o mesmo conceito das partições A/B normais, exceto que podem ser redimensionadas livremente.
Se um dispositivo iniciado com Android 11 não suportar partições A/B virtuais, ele falhará no VTS. Se o dispositivo falhar no VTS, ele não poderá ser fornecido com o Google Mobile Services. Em outras palavras, o Google efetivamente exigiu que os OEMs suportassem partições A/B virtuais e, por extensão, atualizações contínuas.
Atualização: Virtual A/B não é necessário para Android 11
Quando informamos pela primeira vez em abril que o Google está exigindo que todos os dispositivos de lançamento do Android 11 sejam compatíveis com o mecanismo de atualização virtual A/B, houve muita empolgação porque isso finalmente faria com que os telefones Samsung tivessem atualizações contínuas. Infelizmente, acontece que o Google decidiu não tornar o suporte A/B virtual um requisito. Android 11 Documento de definição de compatibilidade (CDD) atualmente lê "implementações de dispositivos DEVEM suportar atualizações do sistema A/B" em vez de suporte "DEVE". Parece que em algum momento antes do lançamento do Android 11, o Google decidiu voltar atrás em sua decisão de exigir suporte A/B virtual, provavelmente em a pedido de vários OEMs. Isto acontece com bastante frequência, mas nunca é comunicado ao público, pois apenas a versão final do CDD é publicada on-line.