Este post irá crescer lentamente, em função da minha disponibilidade e paciência e igualmente em função das vossas perguntas e interesse
Como eu não sei muito destes assuntos, embora saiba mais que os estão agora a começar, é provável que cometa erros, escreva coisas menos certas. Conto convosco e com o vosso espírito critico, para irmos afinando os ensinamentos.
Este tópico é para aprendermos todos um pouco mais, mas não é para noobies. Todos têm o direito de aprender, mas também têm o dever de praticar e treinar até saber. Nada substitui a pratica. Aqui não se vai ensinar tudo. Se os termos usados forem estranhos, isso significa que ainda é cedo para se meterem nestas coisas.
Espero aprender bastante, quer com as vossas perguntas, quer com as vossas respostas, pois muitos de vós, terão algo para nos ensinar a todos. Para isto existem os fóruns.
Regra numero 1
Não se faz nada no telefone sem antes termos um backup nandroid
Regra numero 2
O telefone é resistente mas não é à prova de tudo. Podem destruir o telefone com estas brincadeiras O único responsável por alguma coisa que aconteça aos vossos telefones são vocês.
Os ensinamentos abaixo, deverão ser feitos num pc com sistema operativo Windows. Tudo isto pode ser feito em Linux e provavelmente é mais facil e mais rapido. Para já, essa parte do conhecimento está fora do âmbito deste Tutorial
O que vamos tratar aqui:
1 Obtenção da pasta system no nosso Pc
2 Como fazer o deodex da rom para poder manipular as apk's
3 Como Descompilar uma APK
4 como compilar uma apk modificada
5 como fazer o Re odex de um ficheiro
6 como flashar o ficheiro modificado
7 Como alterar uma apk
7.1Como saber as alterações que foram feitas num mod de terceiros
7.2 alterar apenas imagens
7.3 alterações básicas
7.4 alterações complexas
1º Passo (Obtenção da pasta system no nosso Pc)
A primeira coisa a fazermos é descarregar a rom que queremos mexer. Este local é tão bom como outro qualquer. Mas tem uma qualidade, é de confiança:
http://www.sammobile...irmware/?page=3
Estas rom's vêm dentro de um zip para tornar o download mais rápido. Para serem usadas no Odin, é necessário extrai o ficheiro que está dentro do zip. esse ficheiro, que é o firmaware, tem a terminação .tar.md5
Com o winrar (ou outro compressor/descompressor) editamos esse ficheiro e extraímos o ficheiro system.img. Esta é a pasta system do nosso telefone com todo o seu conteúdo. Lamentavelmente não a podemos abrir directamente.
Neste ponto criamos uma pasta no nosso pc, por exemplo c:/lab e colocamos lá dentro este ficheiro
sgs2toext4.jar (By drphrozen)
Abrimos uma janela DOS (CMD) e aqui escrevemos:
c:\lab sgs2toext4.jar
Teremos uma janela assim:
Arrastamos a imagem system.img para dentro da janela acima e esperamos que fique terminada uma outra imagem de nome: system.ext4.img
Para abrir esta imagem e finalmente ter acesso ao seu conteúdo, usamos o programa Diskinternals Linux Reader
depois de instalado: Drives > Mount Image > Raw Disk Images > Next > aqui seleciona-se a imagem system.ext4.img Abrimos essa "drive" > select all > botão direito do rato > save
e finalmente temos a pasta system da nossa rom para podermos bisbilhotar à nossa vontade.
Este primeiro passo é fundamental para podermos dar um primeiro olhar na nova rom, consultar o build.prop etc. É o primeiro contacto
2º Passo Como fazer o deodex da rom para poder manipular as apk's
Uma aplicação android tem 2 componentes principais, o código java e os resources.
As rom's da Samsung, tal como são distribuídas, são Odexed. Quer isto dizer que o código java, não está dentro das apk's. O código java de cada aplicação, é um ficheiro de nome igual à apk mas com terminação .odex.
apk de uma rom odexed abaixo
Numa rom deodexed o código java está num ficheiro de nome classes.dex que é colocado dentro da apk. Isto pode ser confirmado com o winrar editando uma apk.
apk de uma rom deodexed abaixo
O ficheiro apk contém sempre os resources, quer a rom seja Odexed ou deodexed. Dos resources fazem parte as imagens que integram a apk.
No formato Odexed não se pode editar uma apk para a modificar. Para se poder alterar uma apk, implica primeiro fazer o deodex e de seguida há que descompilar. Só então se podem fazer as alterações. A excepção a isto, são as imagens das aplicações que se podem mudar directamente na apk (no caso do s3 na pasta /res/drawable-xhdpi) para se poder alterar o aspecto de uma aplicação e até da rom. Um tema pode ser feito alterando apenas algumas imagens sem ter que fazer o deodex ou descompilar as aplicações
Pelas razões apontadas acima, é necessário fazer o deodex de uma rom para se poder alterar o codigo java ou os resources.
2.1 Download de uma rom deodex
Esta é uma forma expedita de termos os ficheiros deodex para podermos manipular, Neste caso devemos escolher uma rom que não tenha tido praticamente nenhuma intervenção. Uma rom interessante para esta opção é esta:
http://forum.xda-dev...d.php?t=1704185
2.2 Fazermos o deodex da nossa propria rom.
Existem varias hipóteses para esta opção.
2.2.1 script amestris:
http://forum.xda-dev...d.php?t=1799589
2.2.2 Kitchen DSIXDA
Este é O PROCESSO. É complexo de instalar mas simples de usar. Está um pouco fora do âmbito deste Tutorial mas talvez venha a dedicar algum tempo a este assunto. Para já têm aqui um excelente tutorial para linux, e talvez eu no final faça uma para windows. Ainda têm o post original:
http://forum.xda-dev...ad.php?t=633246
3º Passo (Como Descompilar uma APK)
Mais uma vez existem diversas formas de completarmos este passo. Aqui vamos abordar o mais simples, que é atravé da aplicação APK MAnager. Começamos por fazer o download da versão que está no hiperlink e descomprimos o seu contudo para uma pasta do nosso pc.
Colocamos a aplicação que queremos descompilar na pasta "place-apk-here-for-modding"
Duplo clique em Script.bat e temos esta janela:
começamos por escolher a opção 22 para escolher a aplicação a descompilar
opção 9 para descompilar
Quando tivermos a aplicação descompilada ela estará na pasta "projects", numa pasta com o nome da aplicação
É agora que podemos alterar à nossa vontade o código java que está na pasta smali e os resources que estão na pasta "res". Não deveremos tocar no ficheiro AndroidManifest.xml, uma vez que alterações neste ficheiro implicam que uma outra forma de hack, mais complexa, uma vez que toda a framework e todas as apk's da rom, deverão posteriormente ser assinadas com a mesma chave.
4º Passo (Como compilar uma apk modificada)
Num primeiro olhar, para compilar uma aplicação depois de modificada, deveria ser apenas escolher a opção 11. No entanto não é assim tão simples.
Começamos por escolher a opção 11. Irá aparecer na janela da APK Manager uma pergunta:
Q: "Is this a system Apk (Y/N)"
A resposta é Yes
Aparecerá uma segunda pergunta:
Aside from the signatures, would you like to copy over any additional files that you didn't modify from the original apk in order to ensure least # of errors (Y/N)
A resposta é Yes
Agora aparece um texto que termina em "press any key to continue"
Antes de continuarmos e de acordo com o texto anterior, deveremos fazer o seguinte:
Na pasta onde temos a aplicação Apk Manager apareceu uma nova pasta "keep"
Abrimos a pasta keep e apagamos todos os ficheiro que alterámos:
Se fizémos alterações de codigo java (em smali) apagamos o ficheiro "classes.dex"
se fizemos alterações em "res" abrimos a pasta /Apk_Manager_ICS/keep/res:
Se a pasta onde fizemos alterações está visivel, abrimo-la e apagamos os ficheiros alterados.
Se a pasta onde fizemos alterações não estiver visivel, voltamos para /Apk_Manager_ICS/keep
e apagamos o ficheiro "resources.arsc"
Agora podemos voltar ao Menu da Apk Manager e "press any key to continue"
Em "place-apk-here-for-modding" temos agora uma nova aplicação com o nome de unsigned_nossa_aplicação.apk
Fazemos um rename, apagando o unsigned e está pronta a flashar. Terminámos o nosso mod
5º Passo (como fazer o Re-odex de um ficheiro)
5.1 Re-Odex de um aplicação
Para esta fase necessitamos de ter um ficheiro de nome dexopt-wrapper no telefone. Faz-se o download do dito e coloca-se na pasta system/bin do telefone com explorador root
Necessitamos igualmente de ter a aplicação que queremos fazer o Re-Odex em formato deodex, na pasta system/framework do telefone
Agora através de um terminal no telefone ou do adb no pc.
Se têm o adb no vosso computador saltem este ponto. Se não têm, façam o download no hyper link acima, ponham na pasta c:\lab.
Devem ter o telefone com a Depuração USB activa activo (em definições > Opções de programador depuração de USB).
Ligam o telefone ao pc por usb, com o telefone ligado.
executam o seguinte código numa janela DOS(O exemplo abaixo é para fazer através do Adb. Apenas para exemplo, vamos admitir que queremos fazer o Re-Odex da aplicação secmms.apk
cd c:\lab\adb adb shell su dexopt-wrapper /system/framework/SecMms.apk /sdcard/new.odex /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/sec_edm.jar:/system/framework/seccamera.jar
Com o comando acima obtemos no sdcard do telefone o ficheiro secmms.odex. Devemos apagar agora a o ficheiro secmms.apk que colocámos em system/framework para não ficar esquecido.
Podemos agora fazer um zip para flashar com as duas partes da aplicação secmms. Uma é a secmms.odex que obtivemos agora, a outra é a secmms.apk deodexed, que colocámos na framework do telefone para fazer o Re-Odex.
A parte secmms.apk ainda não está terminada, pois como é uma apk deodexed, contem o ficheiro classes.dex, que temos que apagar.
Para este efeito, abrimos a aplicação deodexed secmms.apk no pc, e com o winrar editamos a aplicação e apagamos o ficheiro classes.odex. Não tem nenhum problema, uma vez que foi a partir deste classes.dex que foi feito o ficheiro secmms.odex.
E terminámos. Temos o secmms.odex e no parágrafo anterior obtivemos o secmms.apk que necessitamos para uma rom Odexed.
Fica claro que o Re-Odex é feito em função da framework do telefone e como tal é válido apenas para essa rom. Provavelmente não funcionará noutra rom.
5.2 RE-Odex de um ficheiro da framework
Este passo, do Re-odex, pode ter uma complicação adicional, se for um ficheiro da framework, pois nesse caso é necessário copiar a assinatura do ficheiro activo na framework, para o novo ficheiro modificado.
Vamos admitir que o ficheiro que estivemos a modificar é o android.policy.jar, e que temos este ficheiro em formato deodexed.
fazemos um rename ao ficheiro, para new.jar (por exemplo, para o podermos colocar em system/framework do telefone)
numa janela Dos executamos o seguinte comando:
cd c:\lab\adb adb shell su dexopt-wrapper /system/framework/new.jar /system/framework/new.odex /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/sec_edm.jar:/system/framework/seccamera.jar
agora temos o ficheiro Odexed na pasta da framework com o nome new.odex
Para continuarmos necessitamos ter a busybox instalada no telefone.
para copiar a assinatura de android.policy.odex para o novo new.odex executamos o seguinte código, partindo do principio que não fechámos o adb)
chmod 777 /system/framework/new.odex chmod 777 /system/framework/new.jar busybox dd if=/system/framework/android.policy.odex of=/system/framework/new.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
Agora temos o ficheiro new.jar pronto a flashar. Copiamos para o pc, fazemos o rename para android.policy.jar, e apagamos os dois ficheiros new.odex e new.jar que temos na framework do telefone e que já não necessitamos.
Basta fazer o zip e flashar
6º Passo (como flashar o ficheiro modificado)
Um zip para flashar tem duas componentes. O script e a pasta onde se põem os ficheiros respectivos.
Se abrirem com o winrar um zip genérico ele terá este aspecto:
Ficam com um exemplo já feito, completamente vazio, mas que podem preencher consoante as vossas necessidades:
http://www.mediafire...byp2ebzzm6dg263
O exemplo acima é bastante versátil pois permite instalar ficheiros em diversas localizações e o script está preparado para todas. O referido script está em meta-inf/com/google/android/updater-script e tem o seguinte aspecto:
show_progress(0.500000, 0); ui_print(""); ui_print("mount system..."); mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system"); ui_print("copy files..."); package_extract_dir("system", "/system"); ui_print("set permissions..."); set_perm_recursive(0, 0, 0755, 0644, "/system/app"); set_perm_recursive(0, 0, 0755, 0644, "/system/framework"); set_perm_recursive(0, 2000, 0755, 0755, "/system/bin"); set_perm_recursive(0, 0, 0755, 0755, "/system/etc/init.d"); set_perm_recursive(0, 0, 0755, 0644, "/system/lib"); set_perm_recursive(0, 0, 0755, 0644, "/system/media"); set_perm_recursive(0, 0, 0755, 0644, "/system/csc"); ui_print("unmount system..."); unmount("/system"); ui_print(""); ui_print("done, please reboot..."); ui_print("");
Têm sempre que ter o mount da partição que querem
a cópia dos ficheiros
e a atribuição das respectivas permissões.
terminam com unmount das partições.
Os ficheiros que querem flashar, colocam em /system na pasta respectiva
Podem adaptar os scripts aos vossos zip's em particular, ou podem usar este
7º Passo (Como alterar uma apk)
7.1Como saber as alterações que foram feitas num mod de terceiros
Continua..
Editado por sapec, 30 October 2012 - 10:44.