advertisement

Workshop on Android Rom Creation - FISTA/ISCTE 2014

50 %
50 %
advertisement
Information about Workshop on Android Rom Creation - FISTA/ISCTE 2014
Technology

Published on March 13, 2014

Author: flaviomoringa

Source: slideshare.net

Description

Workshop on Android ROM creation and modification. No programming, just good old hacking...
advertisement

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

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Android Creations - Android Creations

Find Android phones, roms, kernels, ... and guides on Android Creations. Home My Apps Mobile News Play a Game ... Copyright © 2014 ...
Read more

Mike's Android Workshop

A free task management tool for the Android operating system that allows you ... Added creation date and modified ... Mike's Android Workshop ...
Read more

FISTA 2015 - Forum of ISCTE-IUL School of Technology and ...

... A Casa do Lado (2012) e Como se desenha uma casa (2014). ... Integra a equipa de Android do sapo ... Capital, New Business Creation. Fechar. Carlos ...
Read more

The 10th BOINC Workshop

The workshop aims to stimulate new developments and activities related to volunteer computing ... Rom Walton: Support for VM ... boinc_on_android_2014.pdf ...
Read more

Android Developers

The official site for Android developers. ... Get the latest Android developer news and tips that will help you find success on Google Play.
Read more

Talisman - Android Apps on Google Play

**Included in Pocketgamer.co.uk's Top 10 Board Games on Android** Talisman: ... of the Games Workshop game uses the 4th ... Creations. $2.99. In ...
Read more

Android App Tutorials for Programming Development on lynda.com

Learn Android programming for apps with tutorials from lynda.com. Develop Android apps from scratch or incorporate Java applications into ... 10/27/2014 ...
Read more

Atualizando Motorola Backflip para ROM CyanogenMod 7 ...

... Atualizando Motorola Backflip para ROM CyanogenMod 7 – Android 2.3 ... Workshop on Android Rom Creation - FISTA/ISCTE 2014 Workshop on Android ROM ...
Read more

Hex Workshop - Free download and software reviews - CNET ...

The Hex Workshop Hex Editor by BreakPoint Software is a complete set of hexadecimal development ... Android; iOS; Windows; Mac; ... 2014: Date Added ...
Read more