Você pode ajudar a desenvolver o sistema operacional mais amplamente instalado na história da Terra. Sim, você está aqui para embarcar na jornada de se tornar um engenheiro da plataforma Android.
Embora o caminho seja desafiador, a equipe do Android se esforça para simplificar sua jornada, a cada lançamento. E a equipe faz melhorias todos os dias por meio do trabalho direto no Android Open Source Project (AOSP).
Então sente-se, abra um terminal e vamos fazer história.
Metas
A missão deste codelab é dupla:
- Para dar uma pequena amostra de como é o fluxo de trabalho do desenvolvedor para engenheiros Android que trabalham na plataforma (o sistema operacional).
- Incentive você a fornecer feedback sobre as ferramentas, a documentação e o fluxo de trabalho do desenvolvedor do Android.
Pré-requisitos
A lista de requisitos para este codelab é derivada daquelas para desenvolvimento de plataforma geral ( AOSP ). Para fazer este codelab, configure o seguinte:
- Estação de trabalho Linux física atendendo a todos os requisitos públicos .
- Repo e a configuração do Git necessária para editar a base de código do Android.
Ambiente
Normalmente, os usuários constroem e desenvolvem diretamente na estação de trabalho. Como você pode estar trabalhando em vários terminais e muitos dos comandos usados são específicos do terminal, será necessário executá-los novamente em cada sessão do terminal. Especificamente, eles incluem os comandos source build/envsetup.sh
e lunch
.
Configurar estação de trabalho
- Instale os pacotes necessários em sua estação de trabalho.
- Ainda em um terminal, instale o Repo e obtenha credenciais para todos os repositórios Git.
Inicializar e sincronizar o código
Navegue até seu diretório inicial:
cd ~
Crie um subdiretório de trabalho local dentro dele:
mkdir aosp
Navegue até o diretório:
cd aosp
Inicialize a ramificação mestre do código-fonte do repositório AOSP (o padrão):
repo init -u https://android.googlesource.com/platform/manifest
Insira ou aceite suas credenciais do Git (nome, endereço de e-mail).
Sincronize o código-fonte:
repo sync -j8
As sincronizações iniciais podem levar uma hora ou mais.
Cada checkout de repo é representado por um arquivo de manifesto . É permitido ter mais de 1 checkout de repo por vez, desde que existam em diretórios distintos. Mas observe que cada check-out e compilação equivalem a aproximadamente 300 GB de uso (e crescente), portanto, limite-se a 2 check-outs de repo ou aumente seu sistema com uma unidade secundária.
Crie o código
Para compilar o Android, você deve selecionar um tipo de dispositivo de destino para compilar com o comando lunch
. Um destino é uma permutação de dispositivo, como um modelo específico ou fator de forma.
O destino do dispositivo incluído abaixo, aosp_cf_x86_64_phone-userdebug
, permite que você crie o dispositivo Android virtual Cuttlefish para teste sem um dispositivo físico.
Para criar e atualizar um dispositivo físico, escolha outro destino e siga as instruções para dispositivos flash .
Configure seu ambiente para criar dispositivos Android executando o seguinte comando na raiz do checkout do código-fonte:
source build/envsetup.sh
Passe o destino de compilação para o comando lunch, assim:
lunch aosp_cf_x86_64_phone-userdebug
Crie o código de qualquer lugar em seu checkout com:
m
Espere que a primeira compilação leve horas. Compilações subsequentes levam significativamente menos tempo.
Criar uma instância Acloud
Acloud é uma ferramenta de linha de comando em AOSP que auxilia os usuários na criação de dispositivos Android virtuais, neste caso o Cuttlefish.
Se você estiver na mesma sessão de terminal usada para criar o código , prossiga. Caso contrário, execute novamente o script envsetup.sh
e o mesmo comando lunch
que você usou primeiro. Então
Crie uma instância local da Acloud com:
acloud create --local-image --local-instance
Aceite as atualizações dos pacotes necessários.
Se solicitado, reinicie sua estação de trabalho para que todas as alterações entrem em vigor.
Selecione o dispositivo Cuttlefish.
Você deve ser saudado com uma sessão VNC contendo um dispositivo Android!
Você pode interagir com o dispositivo virtual em sua estação de trabalho usando o mouse e o teclado. Você também pode acompanhar a atividade nos logs enquanto usa seu dispositivo empregando o comando Android Debug Bridge (adb) logcat
:
adb logcat
Faça uma mudança
Atualize o código-fonte seguindo este exemplo de lista de alterações .
Na raiz do seu checkout (diretório
aosp/
), navegue até o projetoframeworks/native
Git:cd frameworks/native
Inicie um projeto temporário com este comando:
repo start <some-name> .
Edite
SurfaceFlinger.cpp
para incluir as atualizações da lista de alterações no seguinte local:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Encontre esta linha:
postComposition();
Substitua essas duas linhas pelo seguinte:
postComposition(); mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f}); updateColorMatrixLocked();
Crie o código:
m
Atualize a compilação no dispositivo:
adb root
adb remount
adb sync
adb reboot
acloud reconnect
Se você for solicitado a selecionar um dispositivo, escolha aquele que mostra o menor tempo decorrido. (Este é provavelmente o último na lista que você vê.) Para ver todas as instâncias de dispositivos virtuais, use os comandos
acloud list
eacloud list -v
.
Verifique se você vê uma mudança de cor no dispositivo selecionado semelhante ao que mostra a Figura 1.
Figura 1. Aparência da tela após mudança de cor bem-sucedida
Teste seu código
Esta parte do codelab utiliza um teste de exemplo que está na árvore de origem e está falhando. Isso emprega o Atest para executar o teste localmente e testar o código.
Para usar o teste, siga estas instruções:
Correr:
atest DevCodelabTest
O teste falhará. Para corrigi-lo, encontre o código-fonte do teste com falha:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Então olhe aqui
platform_testing/tests/example/devcodelab
Para obter o arquivo para editar, pegue o nome do teste em
android.test.example.devcodelab.DevCodelabTest
e substitua o.
com/
, para obter este resultado:src/android/test/example/devcodelab/DevCodelabTest.java
Então edite
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
substituir
Assert.assertTrue(false)
com
Assert.assertTrue(true)
Execute o teste novamente para verificar se você corrigiu o problema:
atest DevCodelabTest
Carregue seu código para revisão
O Repo simplifica o uso do Git agrupando comandos como git clone
para funcionar em vários repositórios Git (ou projetos) de uma só vez.
Consulte Ferramentas de controle de código-fonte para obter uma visão geral do Git e do Repo, com links para a documentação completa sobre como trabalhar com o código-fonte do Android. Consulte o repositório AOSP para obter a lista completa de projetos Git e os projetos individuais (caminhos) para ramificações associadas a cada projeto.
Para revisão de código de seus projetos no Git, você usará o sistema de revisão de código Gerrit baseado na Web.
Assumindo que você fez suas alterações nos
frameworks/native
, execute estes comandos para carregá-los:cd frameworks/native
repo start codelab .
git add .
git commit
Para sua mensagem de commit, digite o seguinte:
Android codelab change Test: manual atest
Carregue a sua alteração:
repo upload
Se você for bem-sucedido, verá uma mensagem semelhante a esta:
Upload project frameworks/native/ to remote branch master:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/master
Veja sua mudança em Gerrit
Acesse o link, impresso no terminal, que se assemelha a este:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Isso conclui o codelab inicial para o desenvolvimento da plataforma Android. Consulte Enviando patches para as próximas etapas e, para obter detalhes completos sobre o desenvolvimento do Android, consulte o restante deste site.
Reverter sua alteração
Normalmente, após o teste e após a revisão e aprovação, você envia sua alteração no Gerrit e a mescla no repositório.
Em vez disso, para fins deste codelab, reverta sua lista de alterações clicando em Abandon in Gerrit.
Em seguida, abandone a ramificação temporária associada no diretório frameworks/native
project (ou seus subdiretórios):
repo abandon codelab .
Lembre-se também de reverter as alterações feitas no arquivo de teste. Como você não repo start
, git commit
e repo upload
da alteração, você pode redefinir o próprio arquivo. Supondo que você esteja no aosp/platform_testing directory
, use o seguinte para redefinir o arquivo:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
Neste ponto, você está feito! Bom trabalho!
Obter ajuda
Se você encontrar erros durante este codelab, informe-os usando o link Rastreador de problemas na parte inferior de qualquer página. Envie perguntas para o grupo de construção de androides .