Visão geral da arquitetura

O Android Open System Platform (AOSP) é um código-fonte Android publicamente disponível e modificável. Qualquer um pode baixar e modificar o AOSP para seu dispositivo. AOSP fornece uma implementação completa e totalmente funcional da plataforma móvel Android.

Existem dois níveis de compatibilidade para dispositivos que implementam AOSP: compatibilidade AOSP e compatibilidade Android. Um dispositivo compatível com AOSP deve estar em conformidade com a lista de requisitos do Documento de Definição de Compatibilidade (CDD) . Um dispositivo compatível com Android deve estar em conformidade com a lista de requisitos no CDD e Requisitos de software do fornecedor (VSR) e testes como os do Vendor Test Suite (VTS) e Compatibility Test Suite (CTS) . Para obter mais informações sobre a compatibilidade do Android, consulte o programa de compatibilidade do Android .

arquitetura AOSP

A pilha de software para AOSP contém as seguintes camadas:

Arquitetura de pilha de software AOSP.

Figura 1. Arquitetura de pilha de software AOSP.

A seguir está uma lista de definições para os termos usados ​​na Figura 1:

aplicativo Android
Um aplicativo criado exclusivamente usando a API do Android. A Google Play Store é amplamente usada para encontrar e baixar aplicativos Android, embora existam muitas outras alternativas. Em alguns casos, um fabricante de dispositivo pode querer pré-instalar um aplicativo Android para dar suporte à funcionalidade principal do dispositivo. Se você estiver interessado em desenvolver aplicativos Android, consulte developers.android.com
aplicativo privilegiado
Um aplicativo criado usando uma combinação das APIs do Android e do sistema. Esses aplicativos devem ser pré-instalados como aplicativos privilegiados em um dispositivo.
Aplicativo do fabricante do dispositivo
Um aplicativo criado usando uma combinação de API do Android, API do sistema e acesso direto à implementação da estrutura do Android. Como um fabricante de dispositivo pode acessar diretamente APIs instáveis ​​na estrutura do Android, esses aplicativos devem ser pré-instalados no dispositivo e podem ser atualizados somente quando o software do sistema do dispositivo for atualizado.
API do sistema
A API do sistema representa as APIs do Android disponíveis apenas para parceiros e OEMs para inclusão em aplicativos agrupados. Essas APIs são marcadas como @SystemApi no código-fonte.
API do Android
A API do Android é a API disponível publicamente para desenvolvedores de aplicativos Android terceirizados. Para obter informações sobre a API do Android, consulte Referência da API do Android .
Estrutura do Android
Um grupo de classes Java, interfaces e outros códigos pré-compilados sobre os quais os aplicativos são construídos. Partes da estrutura são acessíveis publicamente por meio do uso da API do Android. Outras partes da estrutura estão disponíveis apenas para OEMs por meio do uso das APIs do sistema. O código da estrutura do Android é executado dentro do processo de um aplicativo.
serviços do sistema
Os serviços do sistema são componentes modulares e focados, como system_server , SurfaceFlinger e MediaService. A funcionalidade exposta pela API da estrutura do Android se comunica com os serviços do sistema para acessar o hardware subjacente.
Tempo de execução do Android (ART)
Um ambiente de tempo de execução Java fornecido pelo AOSP. O ART realiza a tradução do bytecode do aplicativo em instruções específicas do processador que são executadas pelo ambiente de tempo de execução do dispositivo.
Camada de abstração de hardware (HAL)
Um HAL é uma camada de abstração com uma interface padrão para os fornecedores de hardware implementarem. HALs permitem que o Android seja agnóstico sobre implementações de driver de nível inferior. O uso de um HAL permite implementar funcionalidades sem afetar ou modificar o sistema de nível superior. Para obter mais informações, consulte a visão geral do HAL .
Daemons e bibliotecas nativas

Os daemons nativos nesta camada incluem init , healthd , logd e storaged . Esses daemons interagem diretamente com o kernel ou outras interfaces e não dependem de uma implementação HAL baseada no espaço do usuário.

Bibliotecas nativas nesta camada incluem libc , liblog , libutils , libbinder e libselinux . Essas bibliotecas nativas interagem diretamente com o kernel ou outras interfaces e não dependem de uma implementação HAL baseada no espaço do usuário.

Núcleo

O kernel é a parte central de qualquer sistema operacional e se comunica com o hardware subjacente em um dispositivo. Sempre que possível, o kernel AOSP é dividido em módulos independentes de hardware e módulos específicos do fornecedor. Para obter uma descrição, incluindo definições, dos componentes do kernel AOSP, consulte a visão geral do Kernel .

Qual é o próximo?

  • Se você for novo no AOSP e quiser começar a desenvolver, consulte a seção Introdução .
  • Se você quiser saber mais sobre uma camada específica do AOSP, clique no nome da seção na navegação à esquerda e comece com a visão geral dessa seção.