Gerenciamento de software Android

O Android Open Source Project (AOSP) mantém uma pilha de software completa para ser transferida por OEMs e outros implementadores de dispositivos e executada no hardware deles. Para manter a qualidade do Android, o Google colaborou com engenheiros, gerentes de produtos, designers de interface do usuário e testadores de controle de qualidade em tempo integral, bem como com todas as outras funções necessárias para levar dispositivos modernos ao mercado.

Dessa forma, mantemos diversas linhas de código para separar claramente a versão estável atual do Android da experimental instável. Implementamos a administração de código aberto e a manutenção das linhas de código do Android no ciclo de desenvolvimento de produtos maior.

Gerenciamento de códigos do AOSP

O gráfico abaixo mostra os conceitos por trás do gerenciamento de códigos e versões do AOSP.

diagrama de linhas de código
Figura 1. Código e versões do AOSP.
  1. A todo momento há uma versão mais recente da plataforma Android. Isso geralmente assume a forma de uma ramificação na árvore.
  2. Os criadores e colaboradores de dispositivos trabalham com a versão atual mais recente, corrigindo bugs, lançando novos dispositivos, testando novos recursos e assim por diante.
  3. Ao mesmo tempo, o Google trabalha internamente na próxima versão da plataforma e do framework do Android de acordo com as necessidades e metas do produto. Desenvolvemos a próxima versão do Android trabalhando com um parceiro de dispositivos em um dispositivo principal cujas especificações são escolhidas para levar o Android na direção que acreditamos que ele deve seguir.
  4. Quando a versão n+1 fica pronta, ela é publicada na árvore de origem pública e se torna a nova versão mais recente.

Termos e advertências

  • Um lançamento corresponde a uma versão formal da plataforma Android, como 1.5 ou 8.1. Um lançamento da plataforma corresponde à versão no campo SdkVersion dos arquivos AndroidManifest.xml e é definida em frameworks/base/api na árvore de origem.
  • Um projeto upstream é um projeto de código aberto do qual a pilha do Android coleta código. Além de projetos como o kernel do Linux e o WebKit, continuamos a migrar alguns projetos Android semiautônomos, como o ART, as ferramentas do Android SDK e o Bionic para funcionar como projetos upstream. Geralmente, esses projetos são desenvolvidos inteiramente na árvore pública. Em alguns casos, os desenvolvedores colaboram diretamente no projeto upstream. Para ver mais detalhes, consulte Projetos upstream. Em ambos os casos, snapshots são periodicamente usados nas versões.
  • Uma linha de código de versão (que pode consistir em mais de uma ramificação no git) sempre é considerada o único código-fonte canônico para uma determinada versão da plataforma Android. OEMs e outros grupos que criam dispositivos precisam se basear apenas em uma ramificação de versão.
  • Linhas de código experimentais são estabelecidas para capturar alterações da comunidade, para que possam ser iteradas e melhorar a estabilidade.
  • As alterações que se mostrarem estáveis poderão ser usadas em uma ramificação da versão. Isso se aplica somente a correções de bugs, melhorias de aplicativo e outras alterações que não afetam as APIs da plataforma.
  • As alterações são usadas nas ramificações da versão de projetos ascendentes (incluindo os projetos ascendentes do Android), conforme a necessidade.
  • A versão n+1 (a próxima versão principal das APIs da plataforma e da estrutura) é desenvolvida internamente pelo Google. Para ver mais detalhes, consulte Linhas de código privadas.
  • As alterações são extraídas de ramificações experimentais, upstream e de lançamento e levadas para a ramificação particular do Google conforme a necessidade.
  • Quando as APIs de plataforma para a próxima versão são estabilizadas e totalmente testadas, o Google finaliza um lançamento da próxima versão da plataforma (especificamente, uma nova SdkVersion). Isso corresponde à linha de código interna que está se tornando uma ramificação da versão pública e à nova linha de código de plataforma atual.
  • Quando uma nova versão da plataforma é finalizada, uma linha de código experimental correspondente é criada ao mesmo tempo.

Linhas de código particulares

A estratégia de gerenciamento de origem acima inclui uma linha de código que o Google mantém particular para concentrar a atenção na versão pública atual do Android.

Os OEMs e outros fabricantes de dispositivos querem, naturalmente, fornecer aparelhos com a versão mais recente do Android. Da mesma forma, os desenvolvedores de apps não querem lidar com mais versões de plataforma do que o estritamente necessário. Enquanto isso, o Google mantém a responsabilidade pela direção estratégica do Android como plataforma e produto. Nossa abordagem se concentra em um pequeno número de dispositivos principais para impulsionar recursos e, ao mesmo tempo, garantir as proteções de propriedade intelectual relacionadas ao Android.

Como resultado, o Google frequentemente possui informações confidenciais de terceiros e precisa evitar revelar recursos confidenciais até ter as proteções adequadas. Além disso, existem riscos reais para a plataforma se um excesso de versões de plataformas existir ao mesmo tempo. Por esses motivos, estruturamos o projeto de código aberto (incluindo contribuições de terceiros) para que se concentre na versão estável do Android que está pública no momento. O desenvolvimento profundo da próxima versão da plataforma ocorre de forma privada até que ela esteja pronta para se tornar uma versão oficial.

Sabemos que muitos colaboradores discordam dessa abordagem e respeitamos os diferentes pontos de vista. No entanto, essa é a abordagem que consideramos ser a melhor e a que escolhemos implementar para o Android.