O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Arquitetura Android

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

Visão geral da arquitetura do sistema Android
Arquitetura do sistema Figura 1. Android
  • Estrutura de aplicativos. 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 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. Android inclui dois grupos de serviços: sistema (como Window Manager e Gerente de Notificação) e mídia (serviços envolvidos na tocar e gravar mídia).
  • Camada de abstracçã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 mais 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. Usa o Android uma versão do kernel Linux com algumas adições especiais, tais como assassino pouca memória (um sistema de gerenciamento de memória que é mais agressivo na memória preservando), bloqueios de vigília (a PowerManager serviço do sistema), o motorista Binder IPC, e outras características 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 mais detalhes, consulte Edifício Kernels .

Linguagem de definição da interface HAL (AIDL / HIDL)

Android 8.0 re-arquitetado quadro OS Android (em um projeto conhecido como Treble) para torná-lo mais fácil, mais rápido e menos dispendioso para os fabricantes de dispositivos de atualização 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. No Android 10, os recursos HIDL foram incorporados ao AIDL. Desde então, HIDL está obsoleto e só é usado por subsistemas que ainda não foram convertidos para AIDL.

O Treble 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. Fornecedores ou fabricantes SOC construir HALs uma vez e colocá-los em um /vendor de partição no dispositivo; quadro, em sua própria partição, pode, então, ser substituída por uma atualização over-the-air (OTA) sem recompilar o HAL.

A diferença entre a arquitetura Android legada e a arquitetura atual, baseada em IDL, 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:

    Ambiente de atualização Figura 2. Legado 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 novos lançamentos do Android simplesmente atualizando a estrutura do sistema operacional Android, sem a necessidade de trabalho adicional dos fabricantes de silício:

    Ambiente de atualização Figura 3. Android atual

Todos os novos dispositivos lançados com Android 8.0 e superior podem aproveitar as vantagens da nova arquitetura. Para assegurar a compatibilidade para a frente de implementações de fornecedores, a interface do fornecedor é validada pelo fornecedor de testes Suite (VTS) , que é análogo ao Teste a compatibilidade 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 de HAL . Descreve HALs binderized, passthrough, Same-Process (SP) e legado.
  • AIDL . Documentação sobre AIDL, se ela é usada geralmente ou como uma interface HAL.
  • 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 front-end Java para interfaces HIDL.
  • ConfigStore HAL . Descreve APIs para acessar itens de configuração somente leitura usados ​​para configurar a estrutura do Android.
  • Dispositivo sobreposições árvore . Fornece detalhes sobre o uso de sobreposições de árvore de dispositivos (DTOs) no Android.
  • Vendor Native Development Kit (VNDK) . Descreve o conjunto de bibliotecas exclusivas do fornecedor para implementar HALs do fornecedor.
  • Objecto fornecedor de interface (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 o Android 8.0 . Detalha alterações e personalizações do SELinux.

Além de recursos neste site, membros da equipe de Agudos publicada Treble: Rápido Software Updates, criando um equilíbrio em um Active Software ecossistema de Globalmente Distribuído Stakeholders . O artigo é gratuito para membros da ACM e não membros podem comprar ou ler o resumo.