|
||
|
![]() |
![]() |
ROMs y desarrollo HTC Desire HD ROMs y desarrollo HTC Desire HD |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Guia rapida sobre uso de apktool (Descompilar, Modificar y Compilar apk)
Visto que hay personas que intentan hacer sus MODs, aqui os dejo una pequeña guia rapida de como poder utilizar la herramienta apktool para descompilar y compilar .apk
Lo primero que tenemos que hacer, es descargarnos el apktool de aqui: apktool Una vez descargado esto, descomprimimos el .rar en una carpeta, que en este caso yo voy a llamar apktool (puede tener el nombre que quieras y lo podemos descomprimir en el lugar que quieras) Vamos a empezar a trastear con las aplicaciones. Podemos hacer dos distinciones: ROMS Sense -Descomprimimos el apktool.rar donde nosotros queramos, en este caso yo lo voy a descomprimir en el Escritorio. -Copiamos el framework-res.apk, com.htc.resources.apk y la .apk de la Rom que queramos modificar, por ejemplo SystemUI.apk -Desde la linea de comandos de windows o tambien llamado CMD (podemos encontrarlo haciendo click en el boton de inicio de windows y tecleando CMD) nos situamos en la carpeta apktool del escritorio. Para moverse por distintas carpetas desde el CMD utilizaremos el comando: Código:
cd (nombre de la carpeta) Código:
cd.. Código:
cd Desktop/apktool Código:
apktool if framework-res.apk Código:
apktool if com.htc.resources.apk Código:
I: Framework installed to: C:\Users\TitooDJ\apktool\framework\1.apk I: Framework installed to: C:\Users\TitooDJ\apktool\framework\2.apk Código:
apktool d (nombre de la aplicacion).apk Código:
apktool d Systemui.apk Código:
apktool d -f (nombre de la aplicacion).apk Aqui es cuando llega el momento de modificar todo lo que queramos. Una vez hecho ya todas las modificaciones, procederemos a compilar lo que hemos modificado con el siguiente comando Código:
apktool b (nombre de la carpeta de la aplicacion) Código:
apktool b Systemui Una vez compilado, abrimos la carpeta de la aplicacion, en mi caso SystemUI, y ahi veremos que se han creado dos carpetas nuevas, una con el nombre build y otra con el nombre dist. En la carpeta Build, estan los archivos de la aplicacion pero ya compilados, mientras que en la carpeta Dist, ya esta creado el .apk. En el caso de que sea un .apk del sistema no hace falta firmarlo, pero si no lo es, hay que firmarlo. Para ello yo utilizo la herramienta apkmanager. Es muy intiutiva, pero de todas maneras si necesitais una ayuda, decirmelo y modifico el tuto explicando como firmar .apk ROM No Sense (CM7, Miui,...) -Descomprimimos el apktool.rar donde nosotros queramos, en este caso yo lo voy a descomprimir en el Escritorio. -Copiamos el framework-res.apk, com.htc.resources.apk y la .apk de la Rom que queramos modificar, por ejemplo SystemUI.apk -Desde la linea de comandos de windows o tambien llamado CMD (podemos encontrarlo haciendo click en el boton de inicio de windows y tecleando CMD) nos situamos en la carpeta apktool del escritorio. Para moverse por distintas carpetas desde el CMD utilizaremos el comando: Código:
cd (nombre de la carpeta) Código:
cd.. Código:
cd Desktop/apktool Código:
apktool if framework-res.apk Código:
I: Framework installed to: C:\Users\TitooDJ\apktool\framework\1.apk Código:
apktool d (nombre de la aplicacion).apk Código:
apktool d Systemui.apk Código:
apktool d -f (nombre de la aplicacion).apk Aqui es cuando llega el momento de modificar todo lo que queramos. Una vez hecho ya todas las modificaciones, procederemos a compilar lo que hemos modificado con el siguiente comando Código:
apktool b (nombre de la carpeta de la aplicacion) Código:
apktool b Systemui Una vez compilado, abrimos la carpeta de la aplicacion, en mi caso SystemUI, y ahi veremos que se han creado dos carpetas nuevas, una con el nombre build y otra con el nombre dist. En la carpeta Build, estan los archivos de la aplicacion pero ya compilados, mientras que en la carpeta Dist, ya esta creado el .apk. En el caso de que sea un .apk del sistema no hace falta firmarlo, pero si no lo es, hay que firmarlo. Para ello yo utilizo la herramienta apkmanager. Es muy intiutiva, pero de todas maneras si necesitais una ayuda, decirmelo y modifico el tuto explicando como firmar .apk Espero que os halla ayudado y que os animeis a crear vuestros mods y luego los compartais con todos nosotros. |
Los siguientes 24 usuarios han agradecido a titoodj su comentario: | ||
|
#2
|
||||
|
||||
Mañana me pongo manos a la obra , e intentaré ponerle efectos de transición al tema que te dije. Se los voy a coger al mod d Sada de la runny 4.0 ,con su permiso claro está.Se me olvidaba muchas gracias por el tuto
Última edición por padelking Día 27/11/11 a las 01:31:39. |
Los siguientes 2 usuarios han agradecido a padelking su comentario: | ||
#3
|
||||
|
||||
![]() ![]() |
#4
|
||||
|
||||
titodj gracias por el tuto. yo tengo un problema con al framework. cuando la decompilo bien pero al compilarla no me crea la carpeta dist, la build si pero la otra no. sabes que puede pasar?
__________________
|
#5
|
||||
|
||||
![]() |
#6
|
||||
|
||||
si es que llevo tiempo intentando hacerlo, yo antes usaba apkmanager pero tmp me salia, y hace cosa de dos semanas empece con apktool a ver si me salia. pense que era algo que podia hacer mal y para probar hice la prueba de decompilarla y sin tocar nada volver a compilar y nada no me sale la carpeta dist y en el script me aparecen varios errores. no se que puede pasar, por que decompilarla lo hace bien, estoy perdido ya no se que mas pruebas hacer.
__________________
|
#7
|
||||
|
||||
si es que llevo tiempo intentando hacerlo, yo antes usaba apkmanager pero tmp me salia, y hace cosa de dos semanas empece con apktool a ver si me salia. pense que era algo que podia hacer mal y para probar hice la prueba de decompilarla y sin tocar nada volver a compilar y nada no me sale la carpeta dist y en el script me aparecen varios errores. no se que puede pasar, por que decompilarla lo hace bien, estoy perdido ya no se que mas pruebas hacer.
![]() |
#8
|
||||
|
||||
la de la runny
__________________
|
#9
|
||||
|
||||
|
#10
|
||||
|
||||
__________________
|
#11
|
||||
|
||||
![]() mira yo no se las pruebas y las vueltas que le he dado a esto, mirate tu tuto de como usar apkmanager que ahi ya puse un post para que veas desde cuando llevo intentandolo... en fin gracias man, apuntate tres!!!
__________________
|
#12
|
||||
|
||||
De nada tio! Es que a mi tambien me paso. El problema es que algunos themers, dejan algunos archivos .9.png corruptos, y asi da problemas a la hora de compilar.
|
#13
|
||||
|
||||
A ver titoodj te cuento...
Quiero entre otras cosas animar el icono de la sincronizacion es decir que de la sensacion que da vueltas que se encuentra en la framework-res.apk. Lo primero que hice hace un monton de tiempo es meterle las imagenes en el drawable-hdpi y claro no se movian. Lo segundo fue introducir un stat_notification_sync.xml en la carpeta drawable de otra framework que si tenia movimento el icono con sus correspondientes imagenes y tampoco se mueve. Me di cuenta que en la carpeta values esta el public.xml en el que se le hace unos "llamamientos" a estas imagenes del icono. Ahora: -Si sustituyo un public de una framework que si se mueve por el de la mia que no se mueve me da error al compilar. Aqui creo que es por que me faltan imagenes, por que el nuevo public tiene añadidas mas imagenes de las que yo le proporciono, no de la sincro si no de otras cosas mas. -Si por el contrario a mi public que no se mueve le añado las lineas de codigos(asi no me faltaran imagenes como creo que es el caso del error anterior) donde se le hacen los "llamamientos" a las imagenes tambien me da error al compilar. Asi que de momento no puedo avanzar, ya he tenido en cuenta siempre utilizar una apk original sin modificar previamente. Saludossss
__________________
|
#14
|
||||
|
||||
muy bueno el post compa, gracias por el trabajo. No se si te sirve agregar que tambien las apk pueden ser descompiladas y compiladas con winrar, yo uso solo winrar para los mod, me parece mas rapido para hacer todo, pero calculo es solo una cuestion de gustos, a parte con sabiduria has añadido el concepto de imagenes .9.png que desconocia completamente y las que calculo no podran ser descompiladas con mi metodo. Podrias agregar un anexo explicando bien esto, porque me parecio interesante y desconocido para mi
__________________
![]() ![]() |
#15
|
||||
|
||||
A ver titoodj te cuento...
Quiero entre otras cosas animar el icono de la sincronizacion es decir que de la sensacion que da vueltas que se encuentra en la framework-res.apk. Lo primero que hice hace un monton de tiempo es meterle las imagenes en el drawable-hdpi y claro no se movian. Lo segundo fue introducir un stat_notification_sync.xml en la carpeta drawable de otra framework que si tenia movimento el icono con sus correspondientes imagenes y tampoco se mueve. Me di cuenta que en la carpeta values esta el public.xml en el que se le hace unos "llamamientos" a estas imagenes del icono. Ahora: -Si sustituyo un public de una framework que si se mueve por el de la mia que no se mueve me da error al compilar. Aqui creo que es por que me faltan imagenes, por que el nuevo public tiene añadidas mas imagenes de las que yo le proporciono, no de la sincro si no de otras cosas mas. -Si por el contrario a mi public que no se mueve le añado las lineas de codigos(asi no me faltaran imagenes como creo que es el caso del error anterior) donde se le hacen los "llamamientos" a las imagenes tambien me da error al compilar. Asi que de momento no puedo avanzar, ya he tenido en cuenta siempre utilizar una apk original sin modificar previamente. Saludossss ![]() ![]() muy bueno el post compa, gracias por el trabajo. No se si te sirve agregar que tambien las apk pueden ser descompiladas y compiladas con winrar, yo uso solo winrar para los mod, me parece mas rapido para hacer todo, pero calculo es solo una cuestion de gustos, a parte con sabiduria has añadido el concepto de imagenes .9.png que desconocia completamente y las que calculo no podran ser descompiladas con mi metodo. Podrias agregar un anexo explicando bien esto, porque me parecio interesante y desconocido para mi
![]() Fede lo que se hace con el winrar es descomprimir, no descompilar. Si tu extraes con el winrar un archivo .apk, por ejemplo los xml cuando los abras te van a salir con caracteres raros, mientras que si los descompilas, te va a salir lo que esta realmente en el xml. Al igual que hay algunas imagenes que si no descompilas el apk, no te salen. Te recomiendo que lo pruebes hacer lo del tutorial. Puedes meterle mano a muchas mas cosas para los temas. Si quieres, y tienes tiempo, te recomiendo que te bajes mi MOD del ICE HD, y lo flashes, para que veas los cambios que he hecho y lo que se puede hacer modificando xml, como añadir el movimiento de la bateria cada 1%, pantalla de fondo para ajustes, lista de apps, quicksettings, barra de notificaciones, etc. Miratelo ![]()
__________________
|
Gracias de parte de: | ||
#16
|
||||
|
||||
no me dejas pasar una!! esta mal usado el termino descompilar por mi, seria descomprimir tienes toda la razon, para los fines practicos de mis mod en realidad es lo unico que uso jeje, pero ya me dare una dosis de xml para ver que se puede tocar
__________________
![]() ![]() |
#17
|
||||
|
||||
![]() ![]()
__________________
|
#18
|
||||
|
||||
Bueno pues esto es el log despues de indicarle que me compile la carpeta, aqui lo que hago es la opcion segunda, es decir, copiado de imagenes en drawable-hdpi, añadir stat_notify_syncanim0.xml a drawable, copiado del supuesto codigo en public.xml, el codigo te lo pongo al final del post.
W: Could not find sources I: Checking whether resources has changed... I: Building resources... (skipping index file 'C:\Documents and Settings\Propietario\Escritorio\APK T OOL\framework-res\res\drawable-hdpi\Thumbs.db') C:\Documents and Settings\Propietario\Escritorio\APK TOOL\framework-res\res\valu es\public.xml:3223: error: Public symbol drawable/stat_notify_sync_anim2 declare d here is not defined. C:\Documents and Settings\Propietario\Escritorio\APK TOOL\framework-res\res\valu es\public.xml:3229: error: Public entry identifier 0x1080362 entry index is larg er than available symbols (index 866, total symbols 866). C:\Documents and Settings\Propietario\Escritorio\APK TOOL\framework-res\res\valu es\public.xml:3229: error: Public symbol drawable/stat_notify_sync_anim8 declare d here is not defined. C:\Documents and Settings\Propietario\Escritorio\APK TOOL\framework-res\res\valu es\public.xml:3230: error: Public entry identifier 0x1080363 entry index is larg er than available symbols (index 867, total symbols 866). C:\Documents and Settings\Propietario\Escritorio\APK TOOL\framework-res\res\valu es\public.xml:3230: error: Public symbol drawable/stat_notify_sync_anim9 declare d here is not defined. Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce ption: could not exec command: [aapt, p, -F, C:\DOCUME~1\PROPIE~1\CONFIG~1\Temp\ APKTOOL1613637532135704357.tmp, -x, -S, C:\Documents and Settings\Propietario\Es critorio\APK TOOL\framework-res\res, -M, C:\Documents and Settings\Propietario\E scritorio\APK TOOL\framework-res\AndroidManifest.xml] at brut.androlib.res.AndrolibResources.aaptPackage(An drolibResources.jav a:193) at brut.androlib.Androlib.buildResourcesFull(Androlib .java:301) at brut.androlib.Androlib.buildResources(Androlib.jav a:248) at brut.androlib.Androlib.build(Androlib.java:171) at brut.androlib.Androlib.build(Androlib.java:154) at brut.apktool.Main.cmdBuild(Main.java:174) at brut.apktool.Main.main(Main.java:59) Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\D OCUME~1\PROPIE~1\CONFIG~1\Temp\APKTOOL161363753213 5704357.tmp, -x, -S, C:\Docume nts and Settings\Propietario\Escritorio\APK TOOL\framework-res\res, -M, C:\Docum ents and Settings\Propietario\Escritorio\APK TOOL\framework-res\AndroidManifest. xml] at brut.util.OS.exec(OS.java:83) at brut.androlib.res.AndrolibResources.aaptPackage(An drolibResources.jav a:191) ... 6 more Aqui acaba el log, el codigo lo pego en una linea cualquiera y es este <public type="drawable" name="stat_notify_sync_anim1" id="0x0108035a" /> <public type="drawable" name="stat_notify_sync_anim10" id="0x0108035b" /> <public type="drawable" name="stat_notify_sync_anim2" id="0x0108035c" /> <public type="drawable" name="stat_notify_sync_anim3" id="0x0108035d" /> <public type="drawable" name="stat_notify_sync_anim4" id="0x0108035e" /> <public type="drawable" name="stat_notify_sync_anim5" id="0x0108035f" /> <public type="drawable" name="stat_notify_sync_anim6" id="0x01080360" /> <public type="drawable" name="stat_notify_sync_anim7" id="0x01080361" /> <public type="drawable" name="stat_notify_sync_anim8" id="0x01080362" /> <public type="drawable" name="stat_notify_sync_anim9" id="0x01080363" /> Este codigo lo pego en una linea cualquiera ya que vi que en el otro no guardaba un orden y todos los comandos del notify_sync no estaban ordenados, es decir uno seguido del otro. Lo que si me he fijado que el notepad++ que es el que uso para esto si desplazo una linea de codigo con un intro para pegar el codigo nuevo, me pone una flecha delante del codigo desplazado, no se por que hace eso, me imagino que sera para que sepas que linea fue donde realizaste la modificacion por si la pierdes de vista. Lo que hice en varias ocasiones fue borrarla y rellenar el espacio con espacios en blancos pero tambien me daba error, y dejandola tambien me da error. El stat_notify que incluyo en drawable contiene el siguiente codigo nada mas: <?xml version="1.0" encoding="UTF-8"?> <animation-list android ![]() xmlns:android="http://schemas.android.com/apk/res/android"> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim1" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim2" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim3" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim4" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim5" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim6" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim7" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim8" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim9" /> <item android:duration="70" android:drawable="@drawable/stat_notify_sync_anim10" /> </animation-list> Venga a ver si damos con ello. Saludosssss
__________________
|
#19
|
||||
|
||||
invalid resource directory name: /home/usuario/Escritorio/framework-res/res/drawable-sw600dp-xhdpi
invalid resource directory name: /home/usuario/Escritorio/framework-res/res/layout-sw600dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-w480dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/layout-w600dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-sw600dp-w1024dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-w720dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-sw600dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-w500dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-sw600dp-land invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-h720dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/drawable-sw600dp-hdpi invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-w360dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-w600dp invalid resource directory name: /home/usuario/Escritorio/framework-res/res/values-sw600dp-w1280dp Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL4575115301100587215.tmp, -x, -S, /home/usuario/Escritorio/framework-res/res, -M, /home/usuario/Escritorio/framework-res/AndroidManifest.xml] at brut.androlib.res.AndrolibResources.aaptPackage(An drolibResources.java:193) at brut.androlib.Androlib.buildResourcesFull(Androlib .java:301) at brut.androlib.Androlib.buildResources(Androlib.jav a:248) at brut.androlib.Androlib.build(Androlib.java:171) at brut.androlib.Androlib.build(Androlib.java:154) at brut.apktool.Main.cmdBuild(Main.java:182) at brut.apktool.Main.main(Main.java:67) Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL4575115301100587215.tmp, -x, -S, /home/usuario/Escritorio/framework-res/res, -M, /home/usuario/Escritorio/framework-res/AndroidManifest.xml] at brut.util.OS.exec(OS.java:83) at brut.androlib.res.AndrolibResources.aaptPackage(An drolibResources.java:191) ... 6 more |
|
#20
|
||||
|
||||
nose xq pero a mi no me compila ni con apktool(comandos ms-dos) ni con android multitool si logro descompilar SystemUI y hacer modificaciones pero no compila nada se crea la carpeta build/apk pero no hay nada adentro y no se crea la carpeta Dist
|
![]() |
![]() |
||||||
|
Herramientas | |