O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba 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 do aplicativo . A estrutura do aplicativo é usada com mais frequência por desenvolvedores de aplicativos. Como desenvolvedor de hardware, você deve estar ciente das APIs de desenvolvedor, pois muitas delas são mapeadas diretamente para as interfaces HAL subjacentes e podem fornecer informações úteis sobre como implementar drivers.
  • Binder IPC . O mecanismo Binder Inter-Process Communication (IPC) permite que a estrutura do aplicativo cruze 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 é escondida do desenvolvedor e as coisas parecem "simplesmente funcionar".
  • Serviços do sistema . Os serviços do sistema são componentes modulares e focados, como Window Manager, Search Service ou Notification Manager. Funcionalidade exposta por APIs de estrutura de aplicativo 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 agnóstico sobre as implementações de driver de nível inferior. Usar um HAL permite que você implemente a funcionalidade sem afetar ou modificar o sistema de nível superior. As implementações de HAL são empacotadas em módulos e carregadas pelo sistema Android no momento apropriado. Para obter detalhes, consulte Hardware Abstraction Layer (HAL) .
  • Kernel do Linux . O desenvolvimento de seus drivers de dispositivo é semelhante ao desenvolvimento de um driver de dispositivo Linux típico. O Android usa uma versão do kernel Linux com algumas adições especiais, como Low Memory Killer (um sistema de gerenciamento de memória que é 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 embarcada. Essas adições são principalmente para funcionalidade do sistema e não afetam o desenvolvimento do driver. Você pode usar qualquer versão do kernel, desde que 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 obter detalhes, consulte Criando Kernels .

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

O Android 8.0 reformulou a estrutura do sistema operacional Android (em um projeto conhecido como Treble ) para tornar mais fácil, rápido e barato para os fabricantes atualizarem os 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 Android seja substituída sem reconstruir os HALs.

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

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

  • No Android 7.xe anteriores, não existe nenhuma interface formal do 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 legado 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 trabalho adicional exigido dos fabricantes de silício:

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

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

Recursos de arquitetura

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

Além dos recursos neste site, os membros da equipe Treble publicaram Treble: Atualizações rápidas de software ao criar um equilíbrio em um ecossistema de software ativo de partes interessadas globalmente distribuídas . O artigo é gratuito para membros da ACM e não membros podem comprar ou ler o resumo.