Tudo o que você precisa saber sobre o Project Mainline do Android

O Project Mainline é a maior mudança no Android desde o Project Treble. Aqui está o que significa e o que todos os módulos fazem, Confira!

Uma das maiores mudanças no Android nos últimos anos que passou despercebida, relativamente falando contra sua importância, foi a introdução de Linha principal do projeto no Android 10. O Google exige a inclusão de módulos Mainline específicos nas versões do Android, com Android 11 entrando com um total obrigatório combinado de 25 módulos Mainline. Aqui está uma explicação sobre o que é o Project Mainline e o que ele pretende resolver, juntamente com uma lista de todos os módulos do Project Mainline do Android.

O que é o Projeto Mainline?

Para entender corretamente o Projeto Mainline, teremos que rebobinar um pouco. Se você voltar alguns anos, muitas das conversas sobre as atualizações do Android giram em torno do problema de fragmentação. A fragmentação foi um dos maiores desafios para o Google resolver no Android na era Ice Cream Sandwich - Lollipop. Embora o Android como plataforma recebesse atualizações regulares em um padrão amplamente previsível, essas atualizações costumavam demorar muito para chegar às mãos dos consumidores finais, quando chegavam. Portanto, enquanto o Google corrigia bugs críticos e problemas de segurança no nível da plataforma, o lançamento real dessas alterações deixou muito a desejar. Havia/há muitos intermediários (fornecedor de SoC, OEMs, operadoras, etc.) e muitas partes móveis envolvidas na entrega de atualizações para seu telefone, e o problema de fragmentação não parecia resolver-se sem a necessidade de algum trabalho contundente intervenções.

Um dos maiores esforços para resolver este problema veio na forma de Projeto Agudos ao lado do Android 8.0 Oreo, que envolveu uma grande rearquitetura do Android, separando os componentes da estrutura do sistema operacional Android dos HALs do fornecedor e do kernel do Linux. O Projeto Treble, em essência, modularizou o Android separando a estrutura do sistema operacional do software de nível inferior específico do dispositivo. Dessa forma, os fabricantes de dispositivos (OEMs) não precisam esperar que os fabricantes de silício (fornecedor de SoC) atualizem o código de implementação do fornecedor, e os OEMs podem atualizar a estrutura do sistema operacional Android de forma independente. O resultado final é a adoção mais rápida de versões mais recentes do Android pelo OEM, pois elas não precisam mais esperar que o intermediário (fornecedor do SoC) termine seu trabalho antes de começar a fazer deles.

Embora a situação de atualização do Android não tenha melhorado drasticamente logo de cara com o Project Treble, ela possibilitou amplamente o OEM participação nos betas do Android 10 e Android 11, além de tornar mais fácil para os OEMs atualizarem mais dispositivos de forma mais rápida Linha do tempo. Além disso, todo o conceito do GSI (Generic System Image) teve um grande impacto no desenvolvimento do mercado de reposição em nossos fóruns.

O desenvolvedor inicializa o Android 11 em 22 dispositivos mais antigos com um Project Treble GSI

O Projeto Mainline estende os esforços do Projeto Treble. Enquanto a Treble reduziu a dependência dos OEMs dos fornecedores de SoC para cada atualização do sistema operacional, a Mainline reduz a dependência do Google dos OEMs para fornecer atualizações de segurança aos principais componentes do sistema operacional. O Project Mainline estende a filosofia Treble para partes mais críticas da estrutura do Android, removendo os OEMs como intermediários dependentes dessa equação. O objetivo do Project Mainline é que o Google assuma o controle dos componentes da estrutura e dos aplicativos do sistema que são críticos para a segurança e manutenção da consistência do desenvolvimento longe dos OEMs. Projeto Mainline é corretamente referido como o maior mudança para o Android desde o Projeto Treble.

Para o Project Mainline, o Google usa os módulos Mainline que são fornecidos por meio da estrutura do Google Play Services e da Google Play Store. Cada módulo Mainline é entregue como um arquivo APK, um arquivo APEX ou como um APK-in-APEX. Quando um módulo Mainline está sendo atualizado, o usuário vê uma notificação "Google Play System Update" (GPSU) em seu dispositivo. Efetivamente, para fornecer atualizações a componentes críticos, o Google evitou a necessidade de esperar que um OEM lançasse uma atualização, optando por fazer a tarefa por conta própria.

Como Estados do Google no site do Android:

Os componentes modulares do sistema permitem que os parceiros do Google e do Android distribuam atualizações de maneira ampla, rápida e contínua para os dispositivos dos usuários finais de maneira não intrusiva. Por exemplo, a combinação de fragmentação de codec de mídia e bugs críticos pode retardar drasticamente a adoção de aplicativos e o envolvimento do usuário. Atualizações frequentes para módulos relacionados à mídia podem reduzir a fragmentação do codec para tornar o comportamento do aplicativo de mídia mais consistente em diferentes dispositivos Android e corrigir bugs críticos para aumentar a confiança do usuário.

O Android 10 ou superior converte componentes de sistema selecionados em módulos, alguns dos quais usam o formato de contêiner APEX (introduzido no Android 10) e outros usam o formato APK. A arquitetura modular permite que os componentes do sistema sejam atualizados com correções de bugs críticos e outros melhorias conforme necessário, sem afetar implementações de fornecedor de nível inferior ou aplicativos de nível superior e Serviços.

Como Ars Technica menções:

O Project Mainline, também conhecido como "Atualizações do sistema do Google Play", foi introduzido no Android 10 como um grande esforço para tornar os principais componentes do sistema do Android mais modulares e atualizáveis. A Mainline introduziu um novo tipo de arquivo "APEX" especificamente para componentes do sistema, com o objetivo de enviar o código principal do Android por meio da Play Store com a mesma facilidade com que você envia uma atualização de aplicativo. Anteriormente, o único bloco de código que podia ser enviado do Android era o APK, um tipo de arquivo originalmente projetado para aplicativos de terceiros. Isso veio com todos os tipos de restrições de segurança e só poderia ser iniciado no final do processo de inicialização, então o APEX foi criado com componentes de sistema mais poderosos em mente. Os APEXs só podem ser criados pelo Google ou pelo fabricante do seu dispositivo, para que possam ser visivelmente mais poderosos e abrigar componentes críticos de inicialização, como o tempo de execução do aplicativo.

O Mainline não é apenas uma solução técnica, mas também sobre como fazer com que mais partes do Android sejam distribuídas centralmente por Google, que envolve negociar com fabricantes de dispositivos e fazer com que todos concordem em enviar o mesmo bloco de código. Os módulos Mainline acabam se tornando obrigatórios para serem enviados, então o Mainline é, na verdade, uma grande colaboração com os fabricantes de dispositivos para garantir que um único módulo de todo o ecossistema atenda às necessidades de todos. Nem todo módulo Mainline é um módulo APEX ultrapoderoso - alguns são apenas APKs que agora são códigos Android distribuídos pelo Google.

Linha principal do projeto — Módulos

Com o Android 10, o Google exigiu a inclusão de 13 módulos Mainline específicos. Com o Android 11, o número total de módulos obrigatórios é 25. Aqui está a lista completa, juntamente com alguns detalhes importantes:

nome do módulo

Nome do pacote

Tipo

Dispositivo atualizado ou lançado com o Android 11

Dispositivo lançado com Android 10

Dispositivo atualizado para Android 10

adbd

com.google.android.adbd

ÁPICE

Deve

sem suporte

sem suporte

Tempo de execução da API de rede neural do Android

com.google.android.neuralnetworks

ÁPICE

Deve

sem suporte

sem suporte

Login do portal cativo

com.google.android.captiveportallogin

APK

Deve

Fortemente recomendado

Opcional

Transmissão celular

com.google.android.cellbroadcast

ÁPICE

Deve

sem suporte

sem suporte

Conscriptar

com.google.android.conscrypt

ÁPICE

Deve

Fortemente recomendado

Opcional

Resolvedor de DNS

com.google.android.resolv

ÁPICE

Deve

Fortemente recomendado

Opcional

IU de documentos

com.google.android.documentsui

APK

Deve

Deve

Opcional

ExtServices - APK

com.google.android.ext.services

APK

Deve

Deve

Deve

ExtServices - ÁPICE

com.google.android.extservices

ÁPICE

Deve

sem suporte

sem suporte

Biblioteca IPsec/IKEv2

com.google.android.ipsec

ÁPICE

Deve

sem suporte

sem suporte

Codecs de mídia

com.google.android.media.swcodec

ÁPICE

Deve

Deve

Opcional

Componentes da estrutura de mídia

com.google.android.media

ÁPICE

Deve

Deve

Opcional

provedor de mídia

com.google.android.mediaprovider

ÁPICE

Deve

sem suporte

sem suporte

Metadados do Módulo

com.google.android.modulemetadata

APK

Deve

Deve

Deve

Componentes da Pilha de Rede

com.google.android.networkstack

APK

Deve

Fortemente recomendado

Opcional

Configuração de permissão de pilha de rede

com.google.android.networkstack.permissionconfig

APK

Deve

Fortemente recomendado

Opcional

Controlador de permissão - APK

com.google.android.permissioncontroller

APK

Deve

Deve

Deve

Controlador de permissão - ÁPICE

com.google.android.permission

ÁPICE

Deve

sem suporte

sem suporte

Extensões do SDK

com.google.android.sdkext

ÁPICE

Deve

sem suporte

sem suporte

Statsd

com.google.android.os.statsd

ÁPICE

Deve

sem suporte

sem suporte

Pacote de Versão do Trem de Telemetria

com.google.mainline.telemetry

APK

Deve

sem suporte

sem suporte

Tethering

com.google.android.tethering

ÁPICE

Deve

sem suporte

sem suporte

Dados de fuso horário

com.google.android.tzdata

ÁPICE

Não deve

Deve

Opcional

Dados de fuso horário 2

com.google.android.tzdata2

ÁPICE

Deve

sem suporte

sem suporte

Wi-fi³

com.google.android.wifi

ÁPICE

Deve

sem suporte

sem suporte

Para fornecer algum contexto às colunas acima, a coluna intitulada "Dispositivo atualizado ou lançado com Android 11" inclui detalhes sobre se o módulo deve estar presente (ou não deve ser presente, no caso de dados de fuso horário devido à inclusão de sua alternativa) em todos os dispositivos que foram atualizados para o Android 11 ou estão iniciando com o Android 11 fora do caixa. Da mesma forma, os dispositivos iniciados com o Android 10 precisam incluir alguns módulos, são altamente recomendados para incluir alguns outros e não são suportados pelo restante. Para dispositivos atualizados para o Android 10 (em oposição aos lançados com Android), a lista de módulos necessários é menor.

O que cada módulo Mainline faz?

Aqui está uma breve explicação para cada um dos módulos Mainline:

adbd

O módulo adbd gerencia adb de linha de comando e sessões de depuração IDE. A modularização do adbd permite que o Google forneça melhorias de desempenho e correções de bugs mais rapidamente. Isso é crucial, pois alguns bugs no passado estavam relacionados ao consumo de bateria e podiam fazer com que os dispositivos continuassem usando 100% da CPU até que o telefone morresse. Portanto, obter essas correções é crucial para o Google, pois o adb é amplamente usado por desenvolvedores de aplicativos e OEMs para testes.

Tempo de execução da API de redes neurais do Android

Esta é uma biblioteca que fica entre um aplicativo e os drivers de back-end. A API, por sua vez, é uma API Android C para executar operações de aprendizado de máquina com uso intensivo de computação em dispositivos móveis e para permitir operações de inferência aceleradas por hardware.

CellBroadcast

Cell Broadcast refere-se a alertas de emergência e não emergenciais (como alertas AMBER). Este módulo se preocupa com tarefas em torno desses alertas e com outras funções auxiliares, como decodificação de SMS e geofencing para alertas de emergência sem fio.

Conscriptar

O módulo Conscrypt lida com a implementação TLS do Android e outras funções criptográficas, como geradores de chaves, cipers e resumos de mensagens. O envio como um módulo permite que o Google acelere as melhorias de segurança, sem precisar depender de atualizações OTA.

Resolvedor de DNS

Como o nome indica, o resolvedor de DNS resolve o DNS, ou seja, converte URLs legíveis por humanos em endereços IP. O módulo contém o código que implementa o resolvedor de stub de DNS, e enviá-lo como um módulo permite que o Google forneça melhor proteção ao usuário contra interceptação de DNS e ataques de atualização de configuração.

IU de documentos

Documents UI é o módulo responsável por controlar o acesso a arquivos específicos para componentes que lidam com permissões de documentos. Como afirma o Google, tornar o acesso e as permissões de armazenamento em um módulo aumenta a privacidade e a segurança dos usuários finais, enquanto o recurso de sobreposição de recursos de tempo de execução (RRO) permite que os OEMs tematizem a experiência (referindo-se ao aplicativo Arquivos), se necessário para. Como um módulo, todos os dispositivos Google-Android serão fornecidos com a mesma experiência de interface do usuário do Documents.

ExtServices

Este módulo inclui componentes de estrutura para a funcionalidade principal do sistema operacional, como classificação de notificação, estratégias de correspondência de texto de preenchimento automático, cache de armazenamento, watchdog de pacote e outros serviços.

Biblioteca IPsec/IKEv2

Este módulo de biblioteca se preocupa com recursos novos e existentes em torno da LAN sem fio interfuncional (IWLAN) e VPNs, como negociar parâmetros de segurança como chaves, algoritmos e túneis configurações. A ideia de modularizar essas funções é promover a consistência do ecossistema e fornecer uma maneira de fornecer soluções rápidas para problemas de segurança e interoperabilidade.

São três módulos bifurcados, mas com funções dependentes umas das outras. Esses módulos de mídia lidam com tipos e códigos de mídia, interagem com o ExoPlayer, expõem controles de transporte e informações de reprodução para a estrutura, otimizam metadados indexados, etc. Lembrar Stagefright, o exploit que mudou o Android e trouxe o próprio conceito de atualizações mensais de segurança para a plataforma? Essa exploração dependia de vulnerabilidades na biblioteca de reprodução de mídia. Portanto, uma modularização dos componentes de mídia permite que o Google reaja rápida e amplamente caso sejam encontrados bugs de segurança neste componente frequentemente visado.

A função deste módulo é imediatamente clara em seu nome, embora seu propósito não seja. O módulo Module Metadata contém... metadados sobre a lista de módulos no dispositivo. E é sobre isso.

Componentes de pilha de rede, configuração de permissão de pilha de rede, login de portal cativo

O módulo Network Stack Components fornece serviços IP comuns, monitoramento de conectividade de rede, detecção de portal de login cativo. O módulo de configuração de permissão define a permissão que permite que outros módulos executem tarefas relacionadas à rede. O módulo Captive Portal Login lida com Captive Portals — páginas da web que são exibidas quando conectado a certas redes Wi-Fi públicas, onde o usuário é solicitado a inserir detalhes para obter acesso à Internet acesso.

Controlador de permissão

Este módulo fornece políticas de privacidade atualizáveis ​​e elementos de interface do usuário sobre concessão e gerenciamento de permissões. Se isso soa familiar para o que o Package Installer faz, é porque é. Funções como concessão de permissões de tempo de execução, gerenciamento e rastreamento de uso faziam parte do aplicativo Package Installer até o Android 9. No Android 10, o aplicativo Package Installer é dividido em seções para permitir que a lógica de permissões seja atualizada. O módulo Permission Controller é fornecido como um arquivo APK e, no Android 11, o módulo pode revogar automaticamente as permissões de tempo de execução para aplicativos que não foram usados ​​por um longo período de tempo.

Extensões do SDK

Este módulo é um pouco difícil de entender e consequentemente explicar. Cada versão do Android recebe um nível de SDK (geralmente +1 de seu antecessor). Quando um aplicativo tem como alvo um SDK específico, presume-se que o desenvolvedor levou em consideração o comportamento da plataforma e as alterações de API que a versão do Android trouxe.

O módulo SDK Extensions decide o nível de "extensão SDK" do dispositivo e expõe APIs para aplicativos para consultar o nível de extensão SDK. Isso é tudo o que a documentação oficial menciona. ArsTechnica, embora, menciona que esta é provavelmente uma camada de API secundária que será enviada pela Play Store.

Statsd, pacote de versão do trem de telemetria

Statsd é responsável por coletar as métricas do dispositivo. O Telemetry Train Version Package, por outro lado, não contém código ativo ou qualquer funcionalidade própria. Ele simplesmente contém um número de versão para o "Trem de Telemetria", que o Google diz ser um conjunto de módulos relacionados a métricas. Com base no número da versão, o Google Play exibe a versão do patch de segurança para os usuários finais e descobre se há atualizações disponíveis para os módulos relacionados à métrica.

Tethering

O módulo Tethering compartilha a conexão de Internet do dispositivo com outros dispositivos clientes conectados por meio de Wi-Fi, USB, Bluetooth ou Ethernet. O módulo inclui os componentes tethering e suas dependências. Ao usar este módulo Tethering, os OEMs podem contar com uma única implementação de referência padrão e trazer uma experiência consistente em todos os dispositivos.

Dados de fuso horário

O módulo de dados de fuso horário atualiza o horário de verão (DST) e os fusos horários em dispositivos Android, padronizando os dados (que podem e muda com bastante frequência em resposta a razões religiosas, políticas e geopolíticas) e o mecanismo de atualização em todo o ecossistema. O Android 8.1 e o Android 9 usaram um mecanismo de atualização de dados de fuso horário baseado em APK, e o Android 10 o substitui por um mecanismo de atualização de módulo baseado em APEX. O Google afirma que o AOSP continua a incluir o código de plataforma necessário para atualizações baseadas em APK, então os dispositivos atualizados para o Android 10 ainda podem receber atualizações de dados de fuso horário fornecidas pelo parceiro por meio do APK. No entanto, o Google alerta que as atualizações baseadas em APK substituem uma atualização baseada em APEX.

Wi-fi

Este é o módulo para a funcionalidade Wi-Fi. Os usuários finais agora podem obter uma experiência Wi-Fi consistente em dispositivos Android, bem como corrigir problemas de interoperabilidade por meio de atualizações de módulos, aplicativos os desenvolvedores podem reduzir a fragmentação da plataforma e os OEMs podem atender aos requisitos da operadora e, ao mesmo tempo, reduzir os custos individuais personalizações.


Felizmente, este artigo destaca o quão importante é o Project Mainline para o ecossistema Android do Google.