Top Banner
Rom's Android Como criar/modificar uma ROM para Android
62

Workshop on Android Rom Creation - FISTA/ISCTE 2014

Dec 18, 2014

Download

Technology

Flávio Moringa

Workshop on Android ROM creation and modification. No programming, just good old hacking...
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Rom's AndroidComo criar/modificar uma ROM para Android

Page 2: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Sumário● Caixa Mágica

● Android

– Arquitectura e Arranque

– Root e Recovery

– Rom's

– Testar no emulador

– Alterar APK's

Page 3: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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.).

Page 4: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Base Linux;

● Módulos de hardware;● SDK da Google;● Google experience (Não AOSP);● Um linux que finalmente tem sucesso

no mainstream

Page 5: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android

● Arquitectura:

Page 6: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● O arranque:

http://www.kpbird.com/2012/11/in-depth-android-boot-sequence-process.html

Page 7: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android

Page 8: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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-bootloader-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.

Page 9: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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);

Page 10: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 11: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 12: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Mais dicas sobre como fazer root:

– http://www.guidingtech.com/24035/root-android-bin4ry-universal/

– http://pplware.sapo.pt/smartphones-tablets/android/4-aplicacoes-para-fazer-root-ao-seu-android/

– http://www.kingoapp.com/android-root.htm● E instalar recoveries:

– http://www.guidingtech.com/24096/install-custom-recovery-rom-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/

Page 13: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Têm um equipamento

Samsung?

Então usem o “Odin” para instalar roms e recoveries:

http://forum.xda-developers.com/galaxy-s3/themes-apps/27-08-2013-odin-3-09-odin-1-85-versions-t2189539

– Grande problema com o “Odin”: Windows Only

Page 14: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Uma recovery:

Page 15: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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;

Page 16: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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...

Page 17: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 18: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android4) 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

Page 19: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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/

Page 20: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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 .

Page 21: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Têm de ficar com este conjunto de

ficheiros/directorias:

Page 22: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Em System devem ter:

Page 23: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Mas depende da vossa rom. O essencial

são (o /semc pode não existir):

Page 24: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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.

Page 25: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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...

Page 26: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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;

Page 27: Workshop on Android Rom Creation - FISTA/ISCTE 2014

AndroidTanto

lixo...

Page 28: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Em “data/” devem ter (se não existir

criem à mão):

mkdir data/{app,data}

Page 29: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● E em “data/app” colocam as aplicações

que podem querem remover, e que precisam de menos privilégios.

Page 30: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Para extrair o boot.img descarreguem

isto: http://android-serialport-api.googlecode.com/files/android_bootimg_tools.tar.gz

Abram:

tar xzvf android_bootimg_tools.tar.gz

Page 31: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 32: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Criem, se não existir, a dir e sub-dirs

“META-INF”:

mkdir META-INF/com/google/android

Page 33: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 34: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Têm aqui bastante informação sobre a

sintaxe desta linguagem:

http://wiki.cyanogenmod.org/w/Doc:_About_Edify

● Mas querem um exemplo?

Page 35: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Uma versão comum do updater-script:

Page 36: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Uma versão comum do updater-script:

Page 37: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Uma versão comum do updater-script:

Page 38: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Mas eu queria que a ROM aparecesse

com o meu nome no dispositivo...

Onde mudo isso?

Page 39: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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...

Page 40: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Vejam aqui algumas coisas que podem

mudar:

http://forum.xda-developers.com/showthread.php?t=1697040

Mas mudar o nome da Rom como é? Ok, é mudar na propriedade:

ro.build.display.id=A Minha ROM

Page 41: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 42: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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...

Page 43: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Et voilá...

- Se arrancar excelente... – Se não... recomecem... com pequenas

alterações

– Consigo testar sem ser num dispositivo a sério?

Page 44: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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:

Page 45: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 46: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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.

Page 47: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 48: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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.

Page 49: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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/

Page 50: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 51: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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.

Page 52: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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.

Page 53: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 54: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 55: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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/

Page 56: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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:

Page 57: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● E como extrair:

– Colocar o aapt no path do sistema (está no sdk);

– Descarregar o apktool:

https://code.google.com/p/android-apktool

Page 58: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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/

Page 59: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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...

Page 60: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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...

Page 61: Workshop on Android Rom Creation - FISTA/ISCTE 2014

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

Page 62: Workshop on Android Rom Creation - FISTA/ISCTE 2014

Android● Obrigado...

Dúvidas, ideias, críticas:

[email protected]