O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
This page was translated by the Cloud Translation API.
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 a implementação de 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 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 alguns acréscimos 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 usar a versão mais recente do kernel 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 de fornecedor. Os 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 então ser substituída por uma atualização over-the-air (OTA) sem recompilar os HALs.

A diferença entre a arquitetura Android legada e a arquitetura baseada em HIDL atual 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 aproveitar as vantagens da nova arquitetura. Para garantir a compatibilidade com as 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:

  • Tipos HAL . Descreve HALs binderized, passthrough, Same-Process (SP) e legado.
  • HIDL (Geral) . Contém informações gerais sobre a interface entre um HAL e seus usuários.
  • HIDL (C ++) . Contém detalhes para criar implementações C ++ de interfaces HIDL.
  • HIDL (Java) . Contém detalhes sobre o frontend Java para interfaces HIDL.
  • ConfigStore HAL . Descreve APIs para acessar itens de configuração somente leitura usados ​​para configurar a estrutura Android.
  • Sobreposições de árvore de dispositivo . Fornece detalhes sobre o uso de sobreposições de árvore de dispositivo (DTOs) no Android.
  • Vendor Native Development Kit (VNDK) . Descreve o conjunto de bibliotecas exclusivas do fornecedor para implementar HALs do fornecedor.
  • Objeto de interface do fornecedor (VINTF) . Descreve os objetos que agregam informações relevantes sobre um dispositivo e disponibiliza essas informações por meio de uma API consultável.
  • SELinux para Android 8.0 . Detalha alterações e personalizações do SELinux.

Além dos recursos neste site, os membros da equipe do 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.