2. Sumário
● Caixa Mágica
● Android
– Arquitectura e Arranque
– Root e Recovery
– Rom's
– Testar no emulador
– Alterar APK's
3. Caixa Mágica
● Criadores da principal distribuição de Linux portuguesa;
● Parcerias com os principais fabricantes de hardware (HP, Intel, JP
Inspiring Knowledge, Insys, etc.);
● Envolvida em vários projectos europeus com parceiros de renome
internacional (Intel, SAP, etc.);
● Master Afiliate do Linux Professional Institute (LPI);
● Projectos com as principais empresas/organizações portuguesas (PT/Sapo,
EDP, AMA, ZON, Ministério da Educação, Ministério da Justiça, etc.).
4. Android
● Base Linux;
● Módulos de hardware;
● SDK da Google;
● Google experience (Não AOSP);
● Um linux que finalmente tem sucesso
no mainstream
8. Android
● Mas preciso de um boot loader especial é?
● Sim e não:
– Precisam de desbloquear o “Bootloader”, porque só através dele
conseguem instalar e arrancar para uma “Recovery” e instalar novas
ROM's;
– Os boot loaders por omissão não têm essa capacidade, só arrancam
para o sistema.
http://www.addictivetips.com/mobile/what-is-bootloader-and-how-to-unlock-boot
loader-on-android-phones-complete-guide/
● ATENÇÃO – Desbloquear o “bootloader” faz um reset de
fábrica ao dispositivo – Perdem todas as vossas
configurações, aplicações, etc.
9. Android
● E como desbloqueio esse “boot loader”
no meu dispositivo XYZ?
– Nos modelos nexus (Google Phones) é
relativamente simples:
● Instalar o Android SDK no PC;
● Arrancar o XYZ em modo bootloader
(Arrancar com um combinação de botões
pressionada... vejam último link);
10. Android
● Ligar por cabo USB ao PC e se em Windows
esperar que as drivers sejam instaladas;
● No terminal executar:
fastboot oem unlock
– E em outros dispositivos?
● Uiii... aí normalmente têm de
aproveitar algum bug para
conseguirem ter “root” e só
assim conseguem desbloquear
11. Android
● O meu conselho é procurarem aqui pelo vosso
dispositivo:
http://forum.xda-developers.com/
http://www.androidpt.com/
http://www.needrom.com/
● As “recoveries” mais conhecidas são:
https://www.clockworkmod.com/
http://teamw.in/project/twrp2
12. Android
● Mais dicas sobre como fazer root:
– http://www.guidingtech.com/24035/root-android-bin4ry-univer
sal/
– http://pplware.sapo.pt/smartphones-tablets/android/4-aplicacoe
s-para-fazer-root-ao-seu-android/
– http://www.kingoapp.com/android-root.htm
● E instalar recoveries:
– http://www.guidingtech.com/24096/install-custom-recovery-ro
m-android/
– http://forum.xda-developers.com/showthread.php?t=2334554
– http://www.addictivetips.com/mobile/how-to-install-a-custom-
recovery-to-an-android-phone-device/
13. Android
● Têm um equipamento
Samsung?
Então usem o “Odin”
para instalar roms e
recoveries:
http://forum.xda-develo
pers.com/galaxy-s3/the
mes-apps/27-08-2013-o
din-3-09-odin-1-85-vers
ions-t2189539
– Grande problema com o
“Odin”: Windows Only
15. Android
● Ok... já tenho uma recovery instalada...
E agora?
● 2 Hipóteses:
– Mais simples → Usar como base uma rom
existente;
– Mais difícil → Basear na imagem original;
16. Android
● Basear numa rom existente:
– Procurar uma rom existente → XDA
– Formato “zip” → Unzip
– Usar o modo recovery para instalar a
ROM
– Testar e ver se nos agrada, e perceber o
que queremos alterar...
17. Android
● Basear na imagem original:
– Temos de ter o “zip” da imagem original do
equipamento...
● Se temos root a forma mais simples é:
1) Fazer um reset total ao equipamento (devem ter essa opção
nas configurações);
2) Reiniciar
3) Instalar a aplicacão “Terminal Emulator” e lançá-la:
https://play.google.com/store/apps/details?
id=jackpal.androidterm
18. Android
4) Na aplicação executar:
su
tar -c system/* >> sdcard/system.tar
5) E esperamos...
6) Vamos ter no final no nosso cartão de memória um
ficheiro chamado “system.tar” que copiamos para o
nosso PC
7) E vamos também precisar do kernel, que é o
ficheiro:
boot.img
19. Android
● Já temos os ficheiros principais vamos lá a
fazer coisas:
● Criem uma pasta para desenvolvimento:
mkdir android/{orig,dev}
cd android
● Copiem a rom em que se vão basear ou os
ficheiros que criaram da vossa rom stock para:
cp XYZ android/orig/
20. Android
● Descompactem a rom base para a dir de
desenvolvimento:
cd dev
unzip ../orig/rom.zip
● Ou descompactem o system.tar e copiem o boot.img:
cd dev
tar xvf ../orig/system.tar
cp ../boot.img .
21. Android
● Têm de ficar com este conjunto de
ficheiros/directorias:
24. Android
● O fundamental desta pasta a nível de
costumização é a pasta “app” e o
ficheiro build.prop.
– Em “app” colocam as aplicações (apks)
que não querem que possam ser
desinstaladas, e que querem que tenham
permissões extra no sistema.
25. Android
– Launchers e outras aplicações essenciais
devem estar aqui;
– Normalmente é daqui que retiram as
aplicações extra que o vosso dispositivo
trás e que querem remover.
– ATENÇÃO – Remover coisas a mais pode
tornar o vosso telemóvel inutilizável...
26. Android
– Alterar o vosso launcher por omissão é tão
simples como remover o que não quiserem
e colocar aqui o que quiserem.
– Só devem colocar um... o Android detecta
e usa-o automaticamente no arranque;
28. Android
● Em “data/” devem ter (se não existir
criem à mão):
mkdir data/{app,data}
29. Android
● E em “data/app” colocam as aplicações
que podem querem remover, e que
precisam de menos privilégios.
30. Android
● Para extrair o boot.img descarreguem
isto:
http://android-serialport-api.googlecode.com/files/an
droid_bootimg_tools.tar.gz
Abram:
tar xzvf android_bootimg_tools.tar.gz
31. Android
● Agora fazem:
./unpackbootimg -i ./boot.img
E ficam com os ficheiros de arranque, em particular o
“ramdisk”...
Mais à frente explico como abrir e alterar isto.
● Para reempacotar:
./mkbootimg --kernel boot.img-zImage --ramdisk
boot.img-ramdisk.gz -o myboot.img
32. Android
● Criem, se não existir, a dir e sub-dirs
“META-INF”:
mkdir META-INF/com/google/android
33. Android
● Lá dentro deverão ter binário chamado
“update-binary” (Qualquer rom tem este
binário, descarreguem uma qualquer para o
irem buscar se necessário)
● E um script chamado “updater-script”
– Este script é um ficheiro de texto, que usa uma
linguagem tipo shell scripting muito básica (Edify) e
que inclui todos os passos a executar na instalação
da ROM
34. Android
● Têm aqui bastante informação sobre a
sintaxe desta linguagem:
http://wiki.cyanogenmod.org/w/Doc:_
About_Edify
● Mas querem um exemplo?
38. Android
● Mas eu queria que a ROM aparecesse
com o meu nome no dispositivo...
Onde mudo isso?
39. Android
● Na pasta “System” estava lá um ficheiro
chamado “build.prop”...
● Este ficheiro pode ser editado e permite
alterar várias configurações de sistema:
– Nome da imagem;
– Força de sinal;
– Densidade...
40. Android
● Vejam aqui algumas coisas que podem
mudar:
http://forum.xda-developers.com/showthread.p
hp?t=1697040
Mas mudar o nome da Rom como é?
Ok, é mudar na propriedade:
ro.build.display.id=A Minha ROM
41. Android
● E com estas dicas vamos lá criar a
rom... que não é mais do que fazer um
zip da pasta:
cd dev
zip -r myrom.zip
42. Android
● Copiamos o ficheiro “myrom.zip” para o
cartão de memória do dispositivo;
● Arrancamos para a Recovery e limpamos
a cache e a dalvik-cache;
● Formatamos o /system e a /data
● E escolhemos instalar zip de um ficheiro...
43. Android
● Et voilá...
- Se arrancar excelente...
– Se não... recomecem... com pequenas
alterações
– Consigo testar sem ser num dispositivo a
sério?
44. Android
● Testar no emulador android...
– Tem a vantagem de ser seguro;
– Tem a desvantagem de não termos
recovery, e por isso não conseguimos
testar tudo...
– E como fazer:
45. Android
● Testar no emulador android...
– Para instalar o emulador é necessário fazer o download do SDK de
Android a partir de http://developer.android.com/sdk/index.html
– Após isto é necessário extrair o mesmo. Para tal pode-se usar o
seguinte comando:
$ cd ~/android_devel
$ mkdir ~/android_devel
$ tar xf android-sdk_rXX.X-linux.tgz
46. Android
● Testar no emulador android...
– Após isto vamos ficar com uma pasta android-sdk-linux. Vamos então entrar
em android-sdk-linux/tools e executar o binário com o nome "android" que se
encontra na mesma. Para tal basta fazer:
$ cd ~/android_devel/android-sdk-linux/tools
$ ./android
– No programa que abrimos vamos seleccionar "android SDK Tools", "android
SDK Platform-Tools" e as APIs para as quais pretendemos desenvolver. Por
fim é só clicar em instalar.
– Depois de o download estar completo podemos sair da aplicação.
47. Android
● Testar no emulador android...
– Para criarmos o emulador temos de abrir então o Android Virtual Device
Manager
$ ./android avd
– Neste podemos então criar uma nova AVD clicando em "New...". Depois
configuramos as opções da AVD e confirmamos em "OK".
– Para correr o emulador criado basta seleccionar o mesmo na lista e clicar
em "Start...". Também podemos correr o mesmo a partir da shell
introduzindo o seguinte comando:
$ ./emulator @NomeDoAVD
48. Android
● Testar no emulador android...
– Para abrir a imagem da rom do emulador temos que ir a pasta do SDK e
entrar dentro das imagem de sistema
$ cd android-sdk-linux/system-images
– Nesta directoria encontramos pastas que contêm as imagens para cada API
de Android.
$ cd android-XX/default/armeabi-v7a
● Após entrarmos na directoria da API e arquitectura desejados
vamos encontrar alguns ficheiros entre os quais os seguintes.
– ramdisk.img: O boot.img do emulador. Este ficheiro é carregado pelo
kernel ao iniciar e contêm alguns ficheiros de configuração necessários
para iniciar e montar as restantes partições de sistema.
49. Android
● Testar no emulador android...
● system.img: Este ficheiro contem a partição que vai ser montada
em /system. Esta partição tem todos os ficheiros de sistema.
● userdata.img: Este ficheiro contem os dados de utilizador e é
montado em /data.
– Nunca devemos alterar estes ficheiros directamente da pasta
que contêm as imagens.
– Para tal fazemos primeiro cópias dos mesmos.
$ mkdir ~/android_devel/images
$ cp ramdisk.img system.img userdata.img
~/android_devel/images/
50. Android
● Testar no emulador android...
– De modo a descomprimir o ficheiro system.img que esta no formato de uma
partição yaffs2 temos fazer o download de dois programas para fazer o unpack
e repack da imagem.
$ cd /usr/bin
$ sudo wget http://jiggawatt.org/badc0de/android/mkfs.yaffs2.x86.tar.gz
$ sudo tar xfz mkfs.yaffs2.x86.tar.gz
$ sudo rm mkfs.yaffs2.x86.tar.gz
$ sudo wget http://unyaffs.googlecode.com/files/unyaffs
$ sudo chmod +x unyaffs
51. Android
● Testar no emulador android...
– Após instaladas criamos e mudamos para uma directoria
vazia de modo a descompactarmos a imagem.
$ mkdir -p ~/android_devel/images/open/system
$ cd ~/android_devel/images/open/system
$ unyaffs ~/android_devel/images/system.img
– Ficamos assim com a imagem descomprimida de modo a
podermos alterar.
52. Android
● Testar no emulador android...
– Quando terminadas as alterações a uma rom é
necessário comprimir novamente no formato yaffs2.
Para tal temos que estar na directoria onde está a raiz do
sistema de ficheiros da rom em questão.
– Para comprimir executamos o seguinte comando:
$ mkfs.yaffs2.x86 . ../mysystem.img
– Fica assim pronta a rom para ser utilizada no emulador.
53. Android
● Testar no emulador android...
– Para abrir a ramdisk.img fazemos:
$ cd ~/android_devel/images/open/ramdisk
$ gunzip -c ../../ramdisk.img | cpio -i
– Para fechar fazemos:
$ find . | cpio -o -H newc | gzip > ../myramdisk.img
54. Android
● Testar no emulador android...
– Para usar uma custom rom no emulador basta fazer
o seguinte:
$ cd ~/android_devel/android-sdk-linux/tools/
$ ./emulator @NomeDoAVD -system /
~/android_devel/images/open/mysystem.img -data /
~/android_devel/images/open/myuserdata.img /
-ramdisk /
~/android_devel/images/open/myramdisk.img
55. Android
● E ir buscar aplicações para colocar na
ROM?
– Ou, com root, usam uma aplicação tipo
“root explorer” e copiam da vossa pasta
“/data/app” aplicações que já instalaram
– Ou usam uns sites engraçados tipo:
● http://ifc0nfig.com/apk-downloader
● http://apps.evozi.com/apk-downloader/
56. Android
● E alterar aplicações existentes:
– Geralmente ilegal (vejam a licença)
– Pode ser possível ou não
● Se estiver em SMALI (pseudo byte code
dalvik) ou com o código obfuscado pode ser
dificil
– Mas podemos sempre extrair:
57. Android
● E como extrair:
– Colocar o aapt no path do sistema (está no
sdk);
– Descarregar o apktool:
https://code.google.com/p/android-apktool
58. Android
● E como extrair:
– Por exemplo para um pacote chamado
framework-res.apk:
java -jar ./helpers/apktool1.5.2/apktool.jar
d -f framework-res.apk framework-res/
59. Android
● E como reempacotar:
java -jar ./helpers/apktool1.5.2/apktool.jar
b framework-res/ framework-res.apk
– Fácil não é? Mas atenção o pacote
reempacotado vai ficar assinado com
chaves de desenvolvimento e deixa de ser
actualizável pelo Google Play...
60. Android
● Já que mencionei o framework-res.apk:
– Este pacote contém muitas das peças
fundamentais do vosso sistema, e está na
pasta “/system/app”
– Lá dentro podem por exemplo procurar
pelo ficheiro “default_wallpaper.jpg” que
é.... surpresa....
o wallpaper por omissão...
61. Android
● O que faltou falar:
– Quase tudo (init.rc, partições, temas, )...
– Mas já têm as bases... agora é
aprofundar....
– O Fórum XDA Developers é o vosso
melhor amigo