Ver Mensaje Individual
  #6  
Viejo 12/05/13, 21:45:05
Array

[xs_avatar]
Kiamu Kiamu no está en línea
Usuario muy activo
· Votos compra/venta: (5)
 
Fecha de registro: may 2012
Mensajes: 1,435

NOVENO PASO: DECOMPILAR Y COMPILAR APK

Hay varios programas o kitchens para compilar y decompilar aplicaciones. Una apk es un archivo comprimido, a menos que queramos cambiar las imágenes no nos sirve con abirlo con un descompresor de archivos. Decompilar sirve para personalizar mucho Android o la propia aplicación, así como traducirla.

Para decompilar apk usaremos "Virtuous Ten Studio" un programa gratuito con algunas opciones especiales de pago.

Podemos descargarlo de ESTA página. Una vez descargado lo instalamos, es posible que nos pida instalar "Microsoft .NET Framework 4.5" para poder continuar.
Esta es la interfaz que nos encontramos:


A la hora de decompilar es fundamental decirle al programa bajo que framework tiene que trabajar. Sony incluye dos framework diferentes en sus Xperia "framework-res.apk" y "SemcGenericUxpRes.apk" presentes ambas en system/framework.

1. Dar a VTS los dos framework con los que trabajar.
Vamos a "File"/Open Settings/External tools/Apktool, damos a Add multiple framework (same tag) y damos un nombre al conjunto de framewoks que vamos a dar.

En la siguiente pantalla vamos a "use local files", navegamos hasta la carpeta donde están los framework. Nos mostrará la carpeta vacía. Aceptamos en ese carpeta.
Debería aparecernos así, dos framework con el nombre que nosotros pusimos.


Ahora ya podemos empezar a decompilar apk

2. Decompilando una apk.

Ahora vamos a File/New Proyect y:
  • En la pestaña Apktool, modificamos framework tag y escojemos el framework bajo el que está la apk que vamos a editar. Es decir, no useis un framework de CyanogenMOD para editar una apk de Sony, hay que usar el mismo framework y la misma versión de la apk.
  • Smali: Elegimos el API lever correcto, editamos una apk de Jelly Bean. API Level: 4.1 Jelly Bean
  • Import: Escogemos la apk que queremos decompilar y editar.
  • Por ultimo volvemos a project y damos un "SolutionName"
Se pondrá a decompilar, puede que tarde un rato. Depende del tamaño de la apk y la potencia de nuestro PC.


3.¿Que podemos hacer?
  • El compañero kassyan_123 nos explica como quitar el % de batería AQUI, el da el ejemplo basandose en APKTOOL. Nosotros ya tenemos la apk decompilada, solo tenemos que ir a ahí y cambiar la linea.
IM6
  • ¡A buscar como hacer cosas! :p


4.Compilar
Cuando acabemos de editar nuestro archivo simplemente hacemos click encima de el y damos a "Build project", nos entregará nuestra app compilada y firmada.


Normalmente la guarda en Mis Documentos/Virtuous Ten Studio/Projectsnombrequelehasdado/nombredelaapp/binary
Ahora solo tenemos que soltarla dentro de nuestro zip de la ROM.

Nota: VTS también nos permite editar archivos ".jar".


OCTAVO PASO: INTRODUCE MOD's DE TERCEROS EN TU ROM


Como veis realmente la parte más complicada de la cocina en Android es crear tus propios MODs, se requieren conocimientos de programación o tiempo buscando tutoriales. En todos los modelos de Android siempre encontraremos Mods hechos por teceros que podremos incluir en nuestra ROM.

No tiene mucha ciencia la cosa. Muchas veces basta con bajarte el MOD, descomprimirlo y soltar los archivos que tenga dentro en las misma carpetas; sustituyendo a los que hay por defecto.

Otras veces, estos MOD son más complejos y traen archivos nuevos o los archivos que sustituyen requieren otro tipo de permisos. En este caso hemos de darles estos permisos a la vez que instalamos la ROM, es decir, debemos editar el updater-script.
Lo primero debemos consultar el updater-script que trae nuestro MOD y hacer una lectura comprensiva de el. Tenemos que ver que permisos da, si elimina alguna aplicación, etc.
Una vez mirado los añadimos al updater-script de nuestra ROM.
Por ejemplo:

PRIMER UPDATER-SCRIPT DE UN MOD X
Código:
ui_print(" ");
ui_print(">>> Mount system...");
run_program("/sbin/mount", "/system");
run_program("/sbin/busybox","mount","/data");
ui_print(" ");
delete_recursive("/system/app/SystemUI.odex");
delete_recursive("/system/framework/android.policy.odex");
ui_print(">>> Extracting files...");
package_extract_dir("system", "/system");
package_extract_dir("data/", "/data/local");
ui_print(" ");
ui_print(">>> Unmount system...");
run_program("/sbin/umount", "/system");
run_program("/sbin/umount", "/data");
ui_print("Press thanks if it works :D ");
ui_print(">>> Reboot system...");
run_program("/sbin/sleep", "5");
run_program("/sbin/reboot");
¿Hay que añadir algo o solo con copiar los archivos que trae en sus respectivas carpetas nos sirve?
Depende. Fijate en los delete_recursive, ahí nos está elimando dos archivos. Pero SOLO elimina archivos odex, es decir si nuestra ROM es deodex no tenemos que eliminarlos. Si nuestra ROM es odex podemos eliminarlos a pelo en system/app o incluir estas dos lineas en nuestro updater-script. ¿Facil no?


SEGUNDO UPDATER-SCRIPT DE UN MOD Y
Código:
ui_print("Activating SONY Camera Driver");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/mm-gs-camctrl-test");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQDvbCTestApp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQStrMgrTest");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQUnitTest");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQVideoRendererTestApp");
ui_print("");
ui_print("Done...");
unmount("/system");
En este caso después de copiar los archivos en las carpetas correspondientes debemos añadir los permisos en azul a nuestro updater-script

Última edición por Kiamu Día 16/06/13 a las 20:11:35.
Responder Con Cita
Los siguientes 25 usuarios han agradecido a Kiamu su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]