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 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 um branch 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 estrutura Android, de acordo com as necessidades e os objetivos do produto. Desenvolvemos a próxima versão do Android trabalhando com um parceiro de dispositivo em um modelo principal cujas especificações são escolhidas para impelir o Android na direção que acreditamos que ele precisa seguir.
  4. Quando a versão n+1 estiver pronta, ela será publicada na árvore de origem pública e se tornará a nova versão mais recente.

Termos e advertências

  • Uma versão corresponde a uma versão formal da plataforma Android, como 1.5 ou 8.1. Uma versão da plataforma corresponde à versão no campo SdkVersion dos arquivos AndroidManifest.xml e é definida dentro de frameworks/base/api na árvore de origem.
  • Um projeto ascendente é um projeto de código aberto a partir 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 ascendentes. Geralmente, esses projetos são desenvolvidos inteiramente na árvore pública. Para alguns projetos ascendentes, os desenvolvedores colaboram diretamente para o projeto ascendente. Para ver mais detalhes, consulte Projetos ascendentes. Em ambos os casos, os instantâneos são periodicamente usados nas versões.
  • Uma linha de código de versão (que pode consistir em mais de um branch 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 um branch de versão.
  • Linhas de código experimentais são estabelecidas para capturar alterações da comunidade, para que possam ser iteradas visando a estabilidade.
  • As alterações que se mostrarem estáveis poderão ser usadas em um branch 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 nos branches 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 branches experimentais, ascendentes e de versão e levadas para o branch privado do Google conforme a necessidade.
  • Quando as APIs da plataforma para a próxima versão estã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 um branch da versão pública e à nova linha de código da 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 privadas

A estratégia de gerenciamento de origem acima inclui uma linha de código que o Google mantém privada 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.