Compilar o código Google Android no Ubuntu 9.10

Posted: December 2, 2009 in Android

Achei muito interessante postar esse artigo primeiro ao invés de começarmos a criar aplicativos para o Android. O motivo disso, é o fato de que, conforme formos avançando com o desenvolvimento, poderemos ao mesmo tempo vasculhar o código do Android e ver o que tanto ele nos oferece.

Para começar, antes de baixarmos o código, precisamos configurar o ambiente de desenvolvimento do Ubuntu. Se você já tiver as ferramentas instaladas do ítem 1, vá para o ítem 2.


———————————————————-
1. CONFIGURAR AMBIENTE
———————————————————-

* Pacotes necessários (32-bits x86)

– Git 1.5.4 ou superior e o GNU Privacy Guard;
– JDK 5.0, atualização 12 ou superior. Java 6 não é suportado, por causa das incompatibilidades com @Override. No entanto, essa versão do Ubuntu 9.10 (Karmic Koala), não vem com os pacotes da versão 5 do Java. Em virtude disso, temos que adicionar os seguintes repositórios no arquivo /etc/apt/sources.list:

deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

– flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (opcional), build-essential, zip e curl.

Para instalar todos os pacotes acima de uma só vez, abra um shell e no prompt de comando digite:

sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

– Se você quiser instalar uma ferramenta que o ajude a encontrar vazamento de memória, pilha corrompida e estouro dos limites de array, então instale o Valgrind, uma excelente ferramenta para detectar esses tipos de problemas:

sudo apt-get install valgrind

– Para obter a versão mais recente do libreadline, instale o Intrepid (8.10):

sudo apt-get install libreadline6-dev

* Pacotes necessários (64-bits x86)

A diferença dos pacotes 64 bits para 32 bits são:

– Partes do ambiente de cross-building do 32 bits;
– Desenvolvimento X11.

Os demais pacotes são os mesmo utilizados em 32 bits. Para instalar, digite no shell:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev libreadline6-dev lib32z-dev

Para 32 bits ou 64 bits, atualize a versão default do java:

sudo update-java-alternatives -s java-1.5.0-sun

Se por acaso ocorrerem as mensagens de erros abaixo, não se preocupe. O Ubuntu apenas está informando que não existem alternativas para os plugins.

update-alternatives: error: no alternatives for firefox-javaplugin.so.
update-alternatives: error: no alternatives for iceape-javaplugin.so.
update-alternatives: error: no alternatives for iceweasel-javaplugin.so.
update-alternatives: error: no alternatives for midbrowser-javaplugin.so.
update-alternatives: error: no alternatives for mozilla-javaplugin.so.
update-alternatives: error: no alternatives for xulrunner-1.9-javaplugin.so.
update-alternatives: error: no alternatives for xulrunner-javaplugin.so.
update-alternatives: error: no alternatives for firefox-javaplugin.so.
update-alternatives: error: no alternatives for iceape-javaplugin.so.
update-alternatives: error: no alternatives for iceweasel-javaplugin.so.
update-alternatives: error: no alternatives for midbrowser-javaplugin.so.
update-alternatives: error: no alternatives for mozilla-javaplugin.so.
update-alternatives: error: no alternatives for xulrunner-1.9-javaplugin.so.
update-alternatives: error: no alternatives for xulrunner-javaplugin.so.

Como o Ubuntu não tem pacotes para as bibliotecas X11, contornaremos a situação com o seguinte comando:

sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so


———————————————————-
2. INSTALAR O REPOSITÓRIO
———————————————————-

A ferramenta utilizada no contexto do Android para trabalhar com o Git é o Repo. Para instalar, inicializar e configurar a ferramenta, siga os passos abaixo:

– Tenha certeza de que o diretório ~/bin é o diretório home e verifique se ele está em seu path. Abra o shell e execute:

cd ~
mkdir bin

– Para adicionar o diretório ~/bin no path, adicione as duas linha abaixo no arquivo ~/.bashrc:

PATH=$PATH:~/bin
export PATH

As mesmas linhas adicionadas acima, digite-as no shell. Assim não será necessário fazer logout e login. Para verificar se o diretório foi adicionado, digite:

echo $PATH

– Baixe a ferramenta Repo e certifique-se de que seja um executável:

curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo

– Crie um diretório vazio. Esse diretório é o local que ficará armazenado os arquivos:

cd ~/
mkdir mydroid
cd mydroid

– Baixe a última versão do Repo com os mais recentes bugs corrigidos:

repo init -u git://android.git.kernel.org/platform/manifest.git

– Caso queira uma versão que esteja no branch:

repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake

– Ao final, configure a ferramenta Repo com seu nome e email. Caso tenha intenção de enviar código, você deve usar um email que seja associado com uma conta no Google. Se toda a operação foi executada com sucesso, a seguinte mensagem será apresentada:

repo initialized in ~/mydroid

E dentro do diretório mydroid conterá um diretório oculto chamado .repo, onde os arquivos tais como manifest, será mantido. Para visualizá-lo, digite:

ls -la ~/mydroid

– Para baixar os arquivos no diretório de trabalho dos repositórios como especificado no default manifest, execute:

repo sync


———————————————————-
3. VERIFICAR GIT TAGS
———————————————————-

Carregue a seguinte chave pública em seu banco de dados de chave GnuPG. A chave é usada para assinar tags anotada que representam lançamentos. Execute no shell:

gpg --import

Copie a chave abaixo e cole-a no shell. Pressione Control-D para finalizar o processo de entrada de chaves.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

Depois de importadas as chaves, você pode verificar qualquer tag com:

git tag -v tagname


———————————————————-
4. COMPILAR O CÓDIGO
———————————————————-

Para compilar o código, execute no shell:

cd ~/mydroid
make

Se por acaso algum erro ocorrer referente a “run-java-tool”, tente configurar a variável de ambiente ANDROID_JAVA_HOME para $JAVA_HOME:

export ANDROID_JAVA_HOME=$JAVA_HOME

Na minha máquina, sendo um AMD X2 de 1.66 GHz e 4 GB de RAM, levou aproximadamente 3h para compilar.

Maiores detalhes, acesse o site source.android.com.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s