Perguntas frequentes

Esta página fornece respostas para algumas perguntas frequentes (FAQs)

Código aberto

O que é o Android Open Source Project?

Android Open Source Project (AOSP) se refere às pessoas, aos processos e ao código-fonte que compõem o Android.

As pessoas supervisionam o projeto e desenvolvem o código-fonte. Os processos são as ferramentas e os procedimentos que usamos para gerenciar o desenvolvimento do software. O resultado final é o código-fonte, que você pode usar em smartphones e outros dispositivos.

Por que abrimos o código-fonte do Android?

O Google iniciou o projeto Android em resposta às nossas próprias experiências ao lançar apps para dispositivos móveis. Queríamos ter certeza de que sempre haveria uma plataforma aberta disponível para operadoras, OEMs e desenvolvedores usarem para transformar as ideias inovadoras deles em realidade. Também queríamos evitar que houvesse um ponto central de falha, para que ninguém do setor pudesse restringir ou controlar as inovações dos outros. Nosso objetivo mais importante com o AOSP é garantir que o software Android de código aberto seja implementado da maneira mais ampla e compatível possível, para o benefício de todos.

Que tipo de projeto de código aberto o Android é?

O Google supervisiona o desenvolvimento da plataforma principal de código aberto do Android e trabalha para criar comunidades robustas de desenvolvedores e usuários. Em sua maioria, o código-fonte do Android é licenciado sob uma Licença permissiva, a Apache 2.0, em vez de uma licença copyleft (link em inglês). Escolhemos a licença Apache 2.0 porque acreditamos que ela incentiva a adoção generalizada do software do Android. Para ver mais detalhes, consulte Licenças.

Por que o Google é responsável pelo Android?

O lançamento de uma plataforma de software é algo complexo. A transparência é vital para o sucesso a longo prazo de uma plataforma, uma vez que essa característica atrai investimentos de desenvolvedores e garante condições iguais para todos. A plataforma também precisa ser um produto atraente para os usuários.

O Google dedicou os recursos de engenharia profissional necessários para garantir que o Android seja uma plataforma de software totalmente competitiva. Tratamos o projeto Android como uma operação de desenvolvimento de produtos em grande escala e firmamos as parcerias de negócios necessárias para garantir que ótimos dispositivos que executam o Android cheguem ao mercado.

Ao garantir que o Android seja um sucesso para os usuários, ajudamos a assegurar a vitalidade dele como uma plataforma e como um projeto de código aberto. Afinal, quem iria querer o código-fonte de um produto sem sucesso?

O objetivo do Google é garantir um ecossistema bem-sucedido em torno do Android. Abrimos o código-fonte do Android para que qualquer pessoa possa modificar e distribuir o software para atender às próprias necessidades.

Qual é a estratégia geral do Google para o desenvolvimento de produtos Android?

Lançamos ótimos dispositivos em um mercado competitivo. Em seguida, incorporamos as inovações e melhorias que fizemos na plataforma principal para criar a próxima versão.

Na prática, isso significa que a equipe de engenharia do Android se concentra em alguns poucos dispositivos "principais" e desenvolve a próxima versão do software Android para ser compatível com os lançamentos desses produtos. Esses dispositivos absorvem grande parte do risco do produto e abrem caminho para a ampla comunidade OEM, que lança outros dispositivos que aproveitam os novos recursos. Dessa forma, garantimos que a plataforma Android evolua de acordo com as necessidades dos dispositivos do mundo real.

Como o software Android é desenvolvido?

Cada versão de plataforma do Android (como 1.5 ou 8.1) tem um branch correspondente na árvore de código aberto. O branch mais recente é considerado a versão estável atual dele. É o branch que os fabricantes transferem para os dispositivos. Esse branch sempre é mantido de forma a estar adequado para lançamento.

Simultaneamente, há um branch experimental atual, que é onde as contribuições especulativas, como grandes recursos da próxima geração, são desenvolvidas. Correções de bugs e outras contribuições podem ser incluídas no branch estável atual do branch experimental, conforme apropriado.

Por fim, o Google trabalha na próxima versão da plataforma Android em conjunto com o desenvolvimento de um dispositivo principal. Essa ramificação contém mudanças das ramificações experimentais e estáveis, conforme apropriado.

Para conferir detalhes sobre linhas de código, ramificações e versões, consulte Gerenciamento de código do AOSP.

Por que partes do Android são desenvolvidas de forma particular?

Geralmente, leva mais de um ano para levar um dispositivo para o mercado. E, claro, os fabricantes de dispositivos querem fornecer o software mais recente possível. Por sua vez, os desenvolvedores não querem acompanhar constantemente novas versões da plataforma ao criar apps. Ambos os grupos enfrentam a tensão entre despachar produtos e não querer ficar para trás.

Para resolver isso, algumas partes da próxima versão do Android, incluindo as APIs da plataforma principal, são desenvolvidas em um branch privado. Essas APIs constituem a próxima versão do Android. Nosso objetivo é focar a atenção na versão estável atual do código-fonte do Android enquanto criamos a próxima versão da plataforma. Isso permite que desenvolvedores e OEMs usem uma única versão sem rastrear trabalhos futuros inacabados apenas para se manterem atualizados. Outras partes do sistema Android que não estão relacionadas à compatibilidade de apps são desenvolvidas de forma transparente. Nossa intenção é passar cada vez mais dessas partes para o desenvolvimento aberto com o passar do tempo.

Quando ocorre a liberação das versões do código-fonte?

Quando elas estiverem prontas. Liberar a versão do código-fonte é um processo bastante complexo. Algumas partes do Android são desenvolvidas abertamente, e o código-fonte está sempre disponível. Outras são desenvolvidas primeiro em uma árvore privada, e esse código-fonte é liberado quando a próxima versão da plataforma está pronta.

Em algumas versões, as APIs da plataforma principal estão prontas com antecedência suficiente para que possamos enviar o código-fonte para uma verificação prévia antes do lançamento do dispositivo. Em outras versões, isso não é possível. Em todos os casos, liberamos o código-fonte da plataforma quando sentimos que a versão se estabilizou e quando o processo de desenvolvimento permite.

O que está envolvido na liberação do código-fonte para uma nova versão do Android?

Liberar o código-fonte para uma nova versão da plataforma Android é um processo significativo. Primeiro, o software é integrado em uma imagem do sistema para um dispositivo e passa por várias formas de certificação, incluindo certificação regulatória governamental para as regiões onde os smartphones serão implantados. O código também passa pelo teste de operador. Essa é uma fase importante do processo, porque ajuda a detectar muitos bugs de software.

Quando a versão é aprovada pelos reguladores e operadores, o fabricante inicia a produção em massa dos dispositivos, e começamos a liberar o código-fonte.

Simultaneamente à produção em massa, a equipe do Google inicia vários esforços para preparar a versão do código-fonte. Esses esforços incluem fazer alterações finais na API, atualizar a documentação (para refletir quaisquer alterações feitas durante o teste de qualificação, por exemplo), preparar um SDK para a nova versão e lançar as informações de compatibilidade da plataforma.

Nossa equipe jurídica elabora uma aprovação final para liberar o código como código aberto. Assim como os colaboradores de código aberto são obrigados a assinar um Contrato de Licença de Colaborador atestando a posse da propriedade intelectual da contribuição deles, o Google precisa confirmar que não há problemas em fazer contribuições.

A partir do momento em que a produção em massa começa, o processo de liberação do software geralmente leva cerca de um mês. As liberações de código-fonte costumam acontecer ao mesmo tempo em que os dispositivos chegam aos usuários.

Como o AOSP se relaciona com o Programa de compatibilidade do Android?

O Android Open Source Project mantém o software Android e desenvolve novas versões. Por ser de código aberto, esse software pode ser usado para qualquer finalidade, inclusive para desenvolver dispositivos que não são compatíveis com outros dispositivos baseados no mesmo código.

A função do Programa de compatibilidade do Android é definir uma implementação de referência do Android que seja compatível com apps de terceiros escritos por desenvolvedores. Dispositivos que são compatíveis com o Android estão qualificados para participar do ecossistema do Android, incluindo o Google Play. Dispositivos que não atendem aos requisitos de compatibilidade existem fora desse ecossistema.

Em outras palavras, o Programa de compatibilidade do Android é como separamos dispositivos compatíveis com Android de dispositivos que simplesmente executam derivações do código-fonte. Aceitamos todos os usos do código-fonte, mas, para participar do ecossistema do Android, o dispositivo precisa ser identificado como compatível com Android pelo programa.

Como posso contribuir com o Android?

Você pode denunciar bugs, escrever apps para o Android ou contribuir com código-fonte para o Android Open Source Project.

Existem limites para os tipos de contribuições de código que aceitamos. Por exemplo, alguém pode querer contribuir com uma API de app alternativa, como um ambiente completo baseado em C++. Essa contribuição seria recusada, já que o Android incentiva que os apps sejam executados no Android Runtime. Da mesma forma, não poderíamos aceitar contribuições como bibliotecas GPL ou LGPL incompatíveis com nossas metas de licenciamento.

Encorajamos os interessados em contribuir com código-fonte a entrar em contato conosco por meio dos canais listados na página da Comunidade Android antes de iniciar qualquer trabalho. Para ver detalhes, consulte Contribuições.

Como faço para me tornar um autor de commit do Android?

O Android Open Source Project não tem uma noção de autor do commit. Todas as contribuições (incluindo aquelas de autoria dos funcionários do Google) passam por um sistema baseado na Web conhecido como Gerrit, que faz parte do processo de engenharia do Android. Esse sistema trabalha em conjunto com o sistema de gerenciamento de código-fonte git para gerenciar de forma limpa as contribuições do código-fonte.

Quando são submetidas, as alterações precisam ser aceitas por um aprovador designado. Os aprovadores geralmente são funcionários do Google, mas os mesmos aprovadores são responsáveis por todos os envios, independentemente da origem.

Para ver mais detalhes, consulte Como enviar patches.

Voltar ao início

Compatibilidade

O que é a "compatibilidade" com o Android?

Definimos um dispositivo compatível com Android como aquele que pode executar qualquer app criado por desenvolvedores de terceiros usando o SDK e o NDK do Android. Usamos isso como um filtro para separar dispositivos que podem participar do ecossistema de apps Android e aqueles que não podem. Os dispositivos que são devidamente compatíveis podem receber aprovação para usar a marca registrada do Android. Os dispositivos que não são compatíveis são derivados do código-fonte do Android e não podem usar a marca registrada dele.

Em outras palavras, a compatibilidade é um pré-requisito para participar do ecossistema de apps Android. Qualquer pessoa é livre para usar o código-fonte do Android. Porém, se o dispositivo não for compatível, ele não será considerado parte do ecossistema Android.

Qual é o papel do Google Play na compatibilidade?

Fabricantes de dispositivos compatíveis com Android podem querer licenciar o software cliente do Google Play. Os dispositivos licenciados se tornam parte do ecossistema de apps Android, permitindo que os usuários façam o download de apps dos desenvolvedores a partir de um catálogo compartilhado por todos os dispositivos compatíveis. O licenciamento não está disponível para dispositivos incompatíveis.

Quais tipos de dispositivos podem ser compatíveis com Android?

O software Android pode ser usado em muitos dispositivos diferentes, incluindo alguns em que apps de terceiros não serão executados corretamente. O Documento de definição de compatibilidade do Android (CDD, na sigla em inglês) detalha as configurações específicas de dispositivos que serão consideradas compatíveis.

Por exemplo, embora o código-fonte do Android possa ser transferido para ser executado em smartphones sem câmera, o CDD exige que todos os smartphones tenham uma câmera. Isso permite que os desenvolvedores contem com um conjunto consistente de recursos ao criar os apps.

O CDD continua a evoluir para refletir as realidades do mercado. Por exemplo, a versão 1.6 do CDD comporta apenas telefones celulares. Já a versão 2.1 permite que os dispositivos omitam o hardware de telefonia, possibilitando que dispositivos não telefônicos, como players de música no estilo tablet, sejam compatíveis. À medida que fizermos essas alterações, também aumentaremos o Google Play para permitir que os desenvolvedores mantenham o controle sobre onde os apps deles são disponibilizados. Para continuar no exemplo de telefonia, um app que gerencia mensagens de texto SMS não é útil em um player de mídia, então o Google Play permite que o desenvolvedor restrinja esse app exclusivamente a telefones celulares.

Se meu dispositivo for compatível, ele automaticamente terá acesso ao Google Play e à marca?

Não. O acesso não é automático. O Google Play é um serviço operado pelo Google. Atingir a compatibilidade é um pré-requisito para ter acesso ao software e à marca do Google Play. Depois que o dispositivo é qualificado como compatível com o Android, os fabricantes precisam preencher o formulário de contato incluso no licenciamento dos Serviços do Google Mobile para ter acesso ao Google Play. Entraremos em contato se pudermos ajudar.

Como posso ter o Google Play se não sou um fabricante?

O Google Play é licenciado apenas para fabricantes que comercializam dispositivos portáteis. Para dúvidas sobre casos específicos, entre em contato com android-partnerships@google.com.

Como posso ter acesso aos apps do Google para Android, como o Maps?

Os apps do Google para Android, como o YouTube, o Maps e o Gmail, são propriedades do Google que não fazem parte do Android e são licenciadas separadamente. Entre em contato com android-partnerships@google.com para esclarecer dúvidas relacionadas a esses apps.

A compatibilidade é obrigatória?

Não. O Programa de compatibilidade do Android é opcional. O código-fonte do Android é aberto, então qualquer pessoa pode usá-lo para criar qualquer tipo de dispositivo. No entanto, se os fabricantes quiserem usar o nome do Android com os produtos deles ou acessar o Google Play, será necessário primeiro demonstrar que os dispositivos são compatíveis.

Quanto custa a certificação de compatibilidade?

Não há custos para tornar um dispositivo compatível com o Android. O Teste de Compatibilidade do Android é de código aberto e está disponível para qualquer pessoa realizar testes de dispositivos.

Quanto tempo dura a compatibilidade?

O processo é automático. O Teste de Compatibilidade do Android gera um relatório, que pode ser fornecido ao Google para verificar a compatibilidade. No futuro, planejamos fornecer ferramentas de autoatendimento para fazer upload desses relatórios em um banco de dados público.

Quem determina a definição de compatibilidade?

O Google é responsável pela direção geral do Android como plataforma e produto, então ele prepara o CDD para cada versão. Ao elaborarmos o CDD para uma nova versão do Android, consultamos vários OEMs que fornecem informações sobre o conteúdo deles.

Por quanto tempo cada versão do Android será compatível com novos dispositivos?

O código do Android é aberto, então não podemos impedir que alguém use uma versão antiga para lançar um dispositivo. Em vez disso, o Google opta por não licenciar o software cliente do Google Play para uso em versões consideradas obsoletas. Isso permite que versões antigas continuem sendo fornecidas, mas esses dispositivos não usarão o nome Android e existirão fora do ecossistema de apps do Android, como se não fossem compatíveis.

Um dispositivo pode ter uma interface de usuário diferente e ainda ser compatível?

O Programa de compatibilidade do Android determina se um dispositivo pode executar apps de terceiros. Os componentes da interface do usuário fornecidos com um dispositivo (como tela inicial, discador e esquema de cores) geralmente não têm muito efeito sobre apps de terceiros. Dessa forma, os criadores de dispositivos podem personalizar a interface do usuário. O Documento de definição de compatibilidade restringe o quanto os OEMs podem mudar a interface do usuário do sistema para áreas que afetam apps de terceiros.

Quando as definições de compatibilidade são lançadas para novas versões do Android?

Nossa meta é lançar uma nova versão de CDDs quando a versão correspondente da plataforma Android convergir o suficiente para que isso seja possível. Embora não possamos liberar um rascunho final de um CDD para uma versão do software Android antes que o primeiro dispositivo principal seja lançado com esse software, os CDDs finais sempre são liberados após o primeiro dispositivo. No entanto, sempre que possível, disponibilizamos versões de rascunho de CDDs.

Como as declarações de compatibilidade dos fabricantes de dispositivos são validadas?

Não há um processo de validação para compatibilidade de dispositivos Android. No entanto, se o dispositivo for incluir o Google Play, o Google normalmente valida esse dispositivo quanto à compatibilidade antes de concordar em licenciar o software cliente do Google Play.

O que acontece se um dispositivo que declara compatibilidade demonstrar problemas quanto a isso no futuro?

Normalmente, o relacionamento do Google com os parceiros licenciados do Google Play nos permite pedir que imagens atualizadas do sistema sejam publicadas para solucionar os problemas.

Voltar ao início

Conjunto de teste de compatibilidade

Qual é a finalidade do CTS?

O Teste de Compatibilidade do Android (CTS, na sigla em inglês) é uma ferramenta usada pelos fabricantes para ajudar a garantir que os dispositivos deles sejam compatíveis e para relatar resultados de testes para validação. O CTS foi projetado para ser executado com frequência por OEMs durante todo o processo de engenharia a fim de detectar problemas de compatibilidade antecipadamente.

Que tipo de coisas o CTS testa?

O CTS atualmente testa se todas as APIs de tipos fortes compatíveis com o Android estão presentes e se comportam corretamente. Ele também testa outros comportamentos do sistema que não são APIs, como o ciclo de vida de apps e o desempenho. Planejamos adicionar suporte em futuras versões do CTS para também testar APIs parciais, como Intents.

Os relatórios do CTS serão divulgados publicamente?

Sim. Embora isso não esteja implementado atualmente, o Google pretende fornecer ferramentas de autoatendimento baseadas na Web para que os OEMs publiquem relatórios do CTS para que qualquer pessoa possa visualizá-los. Os fabricantes podem compartilhar relatórios do CTS com um público tão grande quanto quiserem.

Como o CTS é licenciado?

O CTS é licenciado sob a mesma Licença de Software Apache 2.0 que a maior parte do Android usa.

O CTS aceita contribuições?

Sim! O Android Open Source Project aceita contribuições para melhorar o CTS da mesma forma que qualquer outro componente. Na verdade, melhorar a abrangência e a qualidade dos casos de teste do CTS é uma das melhores maneiras de ajudar o Android.

Qualquer um pode usar o CTS em dispositivos já existentes?

O Documento de definição de compatibilidade exige que dispositivos compatíveis implementem o utilitário de depuração adb. Isso significa que todo dispositivo compatível (incluindo aqueles disponíveis no varejo) precisa ser capaz de executar os testes CTS.

Os codecs são verificados pelo CTS?

Sim. Todos os codecs obrigatórios são verificados pelo CTS.

Voltar ao início