[APORTE] Decompilador\Compilador de APK´s Apktool GUI

Bueno, pues me he hecho una GUI del apktool para mi, pero ya que la tengo terminada la dejo por aqui por si a alguien le interesa.


VERSION FINAL Apktool_GUI+Update_1.0

Imagen

https://www.box.com/s/b6f7a7469b92f6f306d3

UPDATES:

1.5 --> https://www.box.com/s/66589863b8ca6ca55ceb

Añadida barra de progreso y corregido algunos errores.





No tiene barra de progreso aun, en su lugar sale un mensaje que dira unos 7 segundos, si tu PC es lento o la APK muy pesada el mensaje desaparecera antes de que se te abra la carpeta correspondiente.


Como veis es una cosa muy sencillita.


Para el que no lo sepa esto sirve para "descomprimir" las aplicaciones de android, modificarlas y volver a "comprimirlas"

El instalador también te te instala otras cosas que son necesarias, 7zip, y Java, por eso pesa tanto.

Saludos!
Gracias por el aporte.

También hay que tener en cuenta que para compilar y descompilar hacen falta tener instalados los SDK de Android y Java.
Bueno, en el instalador se incluye una version de Java, por eso pesa tanto, y e probado la aplicacion en 3 PC,s distintos al mio y compila\decompila bien sin necesidad de tener el SDK de android ni Java ya instalados, no se hasta que punto sera necesario tener el SDK de android ni que APK,s son las que precisan de el, pero ya digo que por lo pronto e probado en 3 PC,s distintos y todos an podido con un SystemUI.apk y framework-res.apk

Saludos!
hola, :)

me podéis indicar como utilizar el ApkTool GUI?
Ni sé a que botones le tengo que dar.

Si activo la casilla Asociar, me abre una ventana para que seleccione una carpeta o un documento o lo que sea. Que debo seleccionar?
(está el móvil conectado al PC)

Si le doy a decompilar, igual. Si selecciono una apk (en la tarjeta SD de mi Android) pues no pasa nada.

Tengo el SDK Manager instalado también. ¿Qué hago? [mad]

En serio pensaba que iba a ser fácil pero resulta que al final, mejor descargarse la maquina del APKTool intera. Con todos los tutoriales te enteras más! [buuuaaaa]

Jeje bueno a ver si alguien me ayuda, necesito modificar una App (Touchpal) porque el diccionario está mal y no permite añadir palabras o modificar su orden de aparición. Ej: cuando escribo "me", Touchpal me lo corrige a "le" porque estará "le" en posición 1.

en fín...

gracias!! :)

Adjuntos

Amos a ver, la APK la tienes que tener en tu PC, en C por ejemplo o en el escritorio, le das al boton decompilar y la seleccionas, dejas que trabaje y cuando termine se te abrira la carpeta de proyectos, la opcion de asociar se utiliza cuando hay un APK que necesite de otro APK o fuente para ser decompilado\compilado, algunos APK,s estan "enlazados" y se necesitan mutuamente, por ejemplo tenemos el caso mas común, SystemUI.apk necesita tener asociado un framework-res.apk para poder manipularlo...

Saludos!
Buen aporte, muchas gracias.
BitratE escribió:Gracias por el aporte.

También hay que tener en cuenta que para compilar y descompilar hacen falta tener instalados los SDK de Android y Java.

Quizás no le haga falta el sdk de android, pero para usar todas las funciones del apktools original hace falta el adb, que viene con dicho sdk. Creo que era para conectar directamente el teléfono y poder modificar aplicaciones de sistema y tal.
Buenas! He descompilado el whatsapp para cambiarle el icono en la barra de notificaciones (en ICS lo han puesto tan oscuro que en la calle si pega el sol no lo veo). Pues bien, he modificado el png, lo he sustituido por el original y ahora al compilar (selecciono la carpeta que me ha descompilado) me da error.
Este es el log que me ha dejado:
I: Checking whether sources has changed...
I: Smaling...
Exception in thread "main" java.lang.NullPointerException
at org.jf.util.PathUtil.getRelativeFile(PathUtil.java:44)
at org.jf.smali.smaliFlexLexer.getSourceName(smaliFlexLexer.java:2569)
at org.jf.smali.smaliFlexLexer.getErrorHeader(smaliFlexLexer.java:2661)
at org.jf.smali.smaliFlexLexer.nextToken(smaliFlexLexer.java:2530)
at org.antlr.runtime.CommonTokenStream.fillBuffer(CommonTokenStream.java:119)
at org.antlr.runtime.CommonTokenStream.LT(CommonTokenStream.java:238)
at org.jf.smali.smaliParser.smali_file(smaliParser.java:430)
at brut.androlib.mod.SmaliMod.assembleSmaliFile(SmaliMod.java:71)
at brut.androlib.src.DexFileBuilder.addSmaliFile(DexFileBuilder.java:43)
at brut.androlib.src.DexFileBuilder.addSmaliFile(DexFileBuilder.java:33)
at brut.androlib.src.SmaliBuilder.buildFile(SmaliBuilder.java:64)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:48)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:35)
at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:222)
at brut.androlib.Androlib.buildSources(Androlib.java:179)
at brut.androlib.Androlib.build(Androlib.java:170)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)

¿Estoy haciendo algo mal?
langos1989 escribió:Buenas! He descompilado el whatsapp para cambiarle el icono en la barra de notificaciones (en ICS lo han puesto tan oscuro que en la calle si pega el sol no lo veo). Pues bien, he modificado el png, lo he sustituido por el original y ahora al compilar (selecciono la carpeta que me ha descompilado) me da error.
Este es el log que me ha dejado:
I: Checking whether sources has changed...
I: Smaling...
Exception in thread "main" java.lang.NullPointerException
at org.jf.util.PathUtil.getRelativeFile(PathUtil.java:44)
at org.jf.smali.smaliFlexLexer.getSourceName(smaliFlexLexer.java:2569)
at org.jf.smali.smaliFlexLexer.getErrorHeader(smaliFlexLexer.java:2661)
at org.jf.smali.smaliFlexLexer.nextToken(smaliFlexLexer.java:2530)
at org.antlr.runtime.CommonTokenStream.fillBuffer(CommonTokenStream.java:119)
at org.antlr.runtime.CommonTokenStream.LT(CommonTokenStream.java:238)
at org.jf.smali.smaliParser.smali_file(smaliParser.java:430)
at brut.androlib.mod.SmaliMod.assembleSmaliFile(SmaliMod.java:71)
at brut.androlib.src.DexFileBuilder.addSmaliFile(DexFileBuilder.java:43)
at brut.androlib.src.DexFileBuilder.addSmaliFile(DexFileBuilder.java:33)
at brut.androlib.src.SmaliBuilder.buildFile(SmaliBuilder.java:64)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:48)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:35)
at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:222)
at brut.androlib.Androlib.buildSources(Androlib.java:179)
at brut.androlib.Androlib.build(Androlib.java:170)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)

¿Estoy haciendo algo mal?



Nunca descompiles y cambies .png ya que al compilar te petará.

Descompila, cambia los xml que tengas que modificar y vuelves a compilar. Ahora cuando ya esté compilada abres el .apk en una carpeta y buscas el .png en las carpetas Drawable y lo modificas.

Yo uso para cambiar .pngs el programa IcoFX.

Ahora arrastras esos .pngs modificados dentro del .apk (en la misma carpeta) y la firma y listo.
Alguien puede decirme en cristiano para que sirve esto?

Gracias
MrkHateGuiris escribió:Alguien puede decirme en cristiano para que sirve esto?

Gracias

Para modificar aplicaciones de Android: traducirlas, cambiar un icono, etc. El caso es que algo yo no he entendido bien. ¿Alguien sería tan amable de hacerme un tutorial pasito a pasito para tontos con el ejemplo que yo digo? (no se debería de tardar ni 10 minutos en hacer). El png del icono lo tengo localizado en "\res\drawable-hdpi-v11\notifybar.png"
10 respuestas