SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
Rom's Android
Como criar/modificar uma ROM para Android
Sumário
● Caixa Mágica
● Android
– Arquitectura e Arranque
– Root e Recovery
– Rom's
– Testar no emulador
– Alterar APK's
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.).
Android
● Base Linux;
● Módulos de hardware;
● SDK da Google;
● Google experience (Não AOSP);
● Um linux que finalmente tem sucesso
no mainstream
Android
● Arquitectura:
Android
● O arranque:
http://www.kpbird.com/2012/11/in-depth
-android-boot-sequence-process.html
Android
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.
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);
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
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
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/
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
Android
● Uma recovery:
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;
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...
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
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
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/
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 .
Android
● Têm de ficar com este conjunto de
ficheiros/directorias:
Android
● Em System devem ter:
Android
● Mas depende da vossa rom. O essencial
são (o /semc pode não existir):
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.
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...
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;
Android
Tanto
lixo...
Android
● Em “data/” devem ter (se não existir
criem à mão):
mkdir data/{app,data}
Android
● E em “data/app” colocam as aplicações
que podem querem remover, e que
precisam de menos privilégios.
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
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
Android
● Criem, se não existir, a dir e sub-dirs
“META-INF”:
mkdir META-INF/com/google/android
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
Android
● Têm aqui bastante informação sobre a
sintaxe desta linguagem:
http://wiki.cyanogenmod.org/w/Doc:_
About_Edify
● Mas querem um exemplo?
Android
● Uma versão comum do updater-script:
Android
● Uma versão comum do updater-script:
Android
● Uma versão comum do updater-script:
Android
● Mas eu queria que a ROM aparecesse
com o meu nome no dispositivo...
Onde mudo isso?
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...
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
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
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...
Android
● Et voilá...
- Se arrancar excelente...
– Se não... recomecem... com pequenas
alterações
– Consigo testar sem ser num dispositivo a
sério?
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:
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
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.
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
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.
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/
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
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.
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.
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
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
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/
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:
Android
● E como extrair:
– Colocar o aapt no path do sistema (está no
sdk);
– Descarregar o apktool:
https://code.google.com/p/android-apktool
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/
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...
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...
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
Android
● Obrigado...
Dúvidas, ideias, críticas:
flavio.moringa@caixamagica.pt

Mais conteúdo relacionado

Mais procurados

Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Rudson Lima
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para AndroidClaudio Pereira
 
It’s all about the game
It’s all about the gameIt’s all about the game
It’s all about the gameBruno Cicanci
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros PassosRomualdo Andre
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaGPrimola
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneHenrique Perticarati
 
Baixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkBaixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkReuel Lopes
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Tchelinux
 
Tutorial de Instalação Eclipse + Android SDK
Tutorial de Instalação Eclipse + Android SDKTutorial de Instalação Eclipse + Android SDK
Tutorial de Instalação Eclipse + Android SDKRonildo Oliveira
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogVinícius Thiengo
 
Simples pelo simples google android com robo guice
Simples pelo simples   google android com robo guiceSimples pelo simples   google android com robo guice
Simples pelo simples google android com robo guiceDiogo Souza
 
Minicurso de Android
Minicurso de AndroidMinicurso de Android
Minicurso de AndroidEdgar Eler
 
Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Comunidade Tá safo!
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 

Mais procurados (20)

Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para Android
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
It’s all about the game
It’s all about the gameIt’s all about the game
It’s all about the game
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros Passos
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Android Fat Binaries
Android Fat BinariesAndroid Fat Binaries
Android Fat Binaries
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
 
Baixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkBaixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdk
 
Ferramentas Intel Android
Ferramentas Intel AndroidFerramentas Intel Android
Ferramentas Intel Android
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
 
Tutorial de Instalação Eclipse + Android SDK
Tutorial de Instalação Eclipse + Android SDKTutorial de Instalação Eclipse + Android SDK
Tutorial de Instalação Eclipse + Android SDK
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do Blog
 
Simples pelo simples google android com robo guice
Simples pelo simples   google android com robo guiceSimples pelo simples   google android com robo guice
Simples pelo simples google android com robo guice
 
Minicurso de Android
Minicurso de AndroidMinicurso de Android
Minicurso de Android
 
Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 

Destaque

Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaFelipe Silveira
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google AndroidIury Teixeira
 
Release Notes Versao 2.16
Release Notes Versao 2.16Release Notes Versao 2.16
Release Notes Versao 2.16Plataforma CORE
 
Apresentação Aula Memoria
Apresentação Aula MemoriaApresentação Aula Memoria
Apresentação Aula MemoriaCENTEC
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaNelson Glauber Leal
 

Destaque (7)

Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
Release Notes Versao 2.16
Release Notes Versao 2.16Release Notes Versao 2.16
Release Notes Versao 2.16
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
 
Apresentação Aula Memoria
Apresentação Aula MemoriaApresentação Aula Memoria
Apresentação Aula Memoria
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 

Semelhante a Criar uma ROM Android personalizada

Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapMayron Cachina
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android NooclixIury Teixeira
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
instalação do phonegap(cordova) no windows 8.1
instalação do phonegap(cordova) no windows 8.1instalação do phonegap(cordova) no windows 8.1
instalação do phonegap(cordova) no windows 8.1Afonso Fernandes
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2Jose Berardo
 
Phonegap - Framework Mobile
Phonegap - Framework MobilePhonegap - Framework Mobile
Phonegap - Framework MobileIldyone Martins
 
Como montar o ambiente de desenvolvimento Android
Como montar o ambiente de desenvolvimento AndroidComo montar o ambiente de desenvolvimento Android
Como montar o ambiente de desenvolvimento AndroidWsdevs Desenvolvedores
 
Android e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociaisAndroid e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociaisFelipe Silveira
 
Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012guisester
 
Iniciando o desenvolvimento de uma aplicação em android
Iniciando o desenvolvimento de uma aplicação em androidIniciando o desenvolvimento de uma aplicação em android
Iniciando o desenvolvimento de uma aplicação em androidErivan Cledson
 
Crackeando aplicativos no android _by c0_m3nd4d0r
Crackeando aplicativos no android  _by c0_m3nd4d0rCrackeando aplicativos no android  _by c0_m3nd4d0r
Crackeando aplicativos no android _by c0_m3nd4d0rnunes666
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Automação de tarefas com grunt
Automação de tarefas com gruntAutomação de tarefas com grunt
Automação de tarefas com gruntRafael Lyra
 

Semelhante a Criar uma ROM Android personalizada (20)

Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGap
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
instalação do phonegap(cordova) no windows 8.1
instalação do phonegap(cordova) no windows 8.1instalação do phonegap(cordova) no windows 8.1
instalação do phonegap(cordova) no windows 8.1
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2
 
Phonegap - Framework Mobile
Phonegap - Framework MobilePhonegap - Framework Mobile
Phonegap - Framework Mobile
 
Phonegap
PhonegapPhonegap
Phonegap
 
Como montar o ambiente de desenvolvimento Android
Como montar o ambiente de desenvolvimento AndroidComo montar o ambiente de desenvolvimento Android
Como montar o ambiente de desenvolvimento Android
 
Android e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociaisAndroid e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociais
 
Setup.docx
Setup.docxSetup.docx
Setup.docx
 
Phonegap 120118153629-phpapp01
Phonegap 120118153629-phpapp01Phonegap 120118153629-phpapp01
Phonegap 120118153629-phpapp01
 
Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012
 
Iniciando o desenvolvimento de uma aplicação em android
Iniciando o desenvolvimento de uma aplicação em androidIniciando o desenvolvimento de uma aplicação em android
Iniciando o desenvolvimento de uma aplicação em android
 
Desenvolvendo com IONIC
Desenvolvendo com IONICDesenvolvendo com IONIC
Desenvolvendo com IONIC
 
Crackeando aplicativos no android _by c0_m3nd4d0r
Crackeando aplicativos no android  _by c0_m3nd4d0rCrackeando aplicativos no android  _by c0_m3nd4d0r
Crackeando aplicativos no android _by c0_m3nd4d0r
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Automação de tarefas com grunt
Automação de tarefas com gruntAutomação de tarefas com grunt
Automação de tarefas com grunt
 
Empreendedori$mo com Android
Empreendedori$mo com AndroidEmpreendedori$mo com Android
Empreendedori$mo com Android
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 

Criar uma ROM Android personalizada

  • 1. Rom's Android Como criar/modificar uma ROM para Android
  • 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:
  • 22. Android ● Em System devem ter:
  • 23. Android ● Mas depende da vossa rom. O essencial são (o /semc pode não existir):
  • 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?
  • 35. Android ● Uma versão comum do updater-script:
  • 36. Android ● Uma versão comum do updater-script:
  • 37. Android ● Uma versão comum do updater-script:
  • 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
  • 62. Android ● Obrigado... Dúvidas, ideias, críticas: flavio.moringa@caixamagica.pt