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

Arquitetura Android

A arquitetura do sistema Android contém os seguintes componentes:

Visão geral da arquitetura do sistema Android
Figura 1. Arquitetura do sistema Android
  • Estrutura de aplicação . A estrutura do aplicativo é usada com mais frequência pelos desenvolvedores de aplicativos. Como desenvolvedor de hardware, você deve estar ciente das APIs de desenvolvedores que são mapeadas diretamente para as interfaces HAL subjacentes e pode fornecer informações úteis sobre a implementação de drivers.
  • Fichário IPC . O mecanismo de comunicação entre processos do fichário (IPC) permite que a estrutura do aplicativo ultrapasse os limites do processo e chame o código de serviços do sistema Android. Isso permite que APIs de estrutura de alto nível interajam com os serviços do sistema Android. No nível da estrutura do aplicativo, essa comunicação está oculta do desenvolvedor e as coisas parecem "simplesmente funcionar".
  • Serviços do sistema . Os serviços do sistema são componentes modulares e focados, como o Window Manager, o Serviço de Pesquisa ou o Notification Manager. A funcionalidade exposta pelas APIs da estrutura de aplicativos se comunica com os serviços do sistema para acessar o hardware subjacente. O Android inclui dois grupos de serviços: sistema (como Window Manager e Notification Manager) e mídia (serviços envolvidos na reprodução e gravação de mídia).
  • Camada de abstração de hardware (HAL) . Um HAL define uma interface padrão para os fornecedores de hardware implementarem, o que permite que o Android seja independente das implementações de driver de nível inferior. O uso de um HAL permite implementar a funcionalidade sem afetar ou modificar o sistema de nível superior. As implementações do HAL são empacotadas em módulos e carregadas pelo sistema Android no momento apropriado. Para detalhes, consulte HAL (Hardware Abstraction Layer) .
  • Kernel do Linux . O desenvolvimento de drivers de dispositivo é semelhante ao desenvolvimento de um driver de dispositivo Linux típico. O Android usa uma versão do kernel do Linux com algumas adições especiais, como Low Memory Killer (um sistema de gerenciamento de memória mais agressivo na preservação da memória), wake locks (um serviço do sistema PowerManager ), o driver Binder IPC e outros recursos importantes para uma plataforma móvel incorporada. Essas adições são principalmente para a funcionalidade do sistema e não afetam o desenvolvimento do driver. Você pode usar qualquer versão do kernel, desde que ele suporte os recursos necessários (como o driver do fichário). No entanto, recomendamos o uso da versão mais recente do kernel do Android. Para detalhes, consulte Criando Kernels .

Linguagem de definição de interface HAL (HIDL)

O Android 8.0 re-arquitetou a estrutura do sistema operacional Android (em um projeto conhecido como Treble ) para tornar mais fácil, rápido e econômico os fabricantes atualizarem dispositivos para uma nova versão do Android. Nessa nova arquitetura, a linguagem de definição de interface HAL (HIDL, pronuncia-se "hide-l") especifica a interface entre um HAL e seus usuários, permitindo que a estrutura do Android seja substituída sem reconstruir os HALs.

O HIDL separa a implementação do fornecedor (software específico de dispositivo, de nível inferior, criado por fabricantes de silício) da estrutura do sistema operacional Android por meio de uma nova interface do fornecedor. Fornecedores ou fabricantes de SOC criam HALs uma vez e os colocam em uma partição /vendor no dispositivo; a estrutura, em sua própria partição, pode ser substituída por uma atualização sem fio (OTA) sem recompilar os HALs.

A diferença entre a arquitetura legada do Android e a atual arquitetura baseada em HIDL está no uso da interface do fornecedor:

  • No Android 7.xe versões anteriores, não existe uma interface formal de fornecedor; portanto, os fabricantes de dispositivos devem atualizar grandes partes do código do Android para mover um dispositivo para uma versão mais recente do Android:

    Figura 2. Ambiente de atualização herdado do Android
  • No Android 8.0 e superior, uma nova interface estável do fornecedor fornece acesso às partes específicas do hardware do Android, para que os fabricantes de dispositivos possam oferecer novas versões do Android simplesmente atualizando a estrutura do sistema operacional Android - sem a necessidade de trabalho adicional dos fabricantes de silício:

    Figura 3. Ambiente de atualização atual do Android

Todos os novos dispositivos lançados com o Android 8.0 e superior podem tirar proveito da nova arquitetura. Para garantir a compatibilidade direta das implementações do fornecedor, a interface do fornecedor é validada pelo VTS (Vendor Test Suite) , que é análogo ao CTS (Compatibility Test Suite) . Você pode usar o VTS para automatizar os testes de kernel HAL e OS em arquiteturas Android herdadas e atuais.

Recursos de arquitetura

Para detalhes sobre a arquitetura Android, consulte as seguintes seções:

Além dos recursos neste site, os membros da equipe da Treble publicaram o Treble: Fast Software Updates criando um equilíbrio em um ecossistema de software ativo de partes interessadas distribuídas globalmente . O artigo é gratuito para membros do ACM e não-membros podem comprar ou ler o resumo.