[TUTORIAL] - Modding Roms Oficiales (de cualquier teléfono)

Discusiones, consultas, aportes y noticias sobre todo tipo de Tablets y Smartphones.
Responder
Avatar de Usuario
stuntfan82
Colaborador
Colaborador
Mensajes: 1868
Registrado: Jue Feb 19, 2009 10:50 pm
Ubicación: Candelaria-Misiones-Argentina
Agradecido: 0
Agradecimiento recibido: 0
Contactar:

[TUTORIAL] - Modding Roms Oficiales (de cualquier teléfono)

Mensaje por stuntfan82 »

Antes que nada algunas aclaraciones!

[*]Esto, como la mayoría de lo que está en este foro, debe ser usado a su propio riesgo. Recomienod entonces hacer un nandroid backup de su teléfono antes de intentar lo que se describe debajo.
[*]Recuerden que cada miles es un mundo y si lo están modificando es porque quieren.
[*]Tengan a mano una copia de los archivos originales.
[*]Es muy importante que se siga el orden en el que se publican las instrucciones, de modo contrario puede que no funcione.
[*]Esta es una recopilación de cosas que pude encontrar en blogs y páginas, no soy programador, lo que está posteado funciona, pero no me pregunten detalles de código porque seguramente no sepa responder. Lo que si sepa lo responderé con gusto


Indice.
0. Herramientas
0a. Herramientas del Framework-res.apk
0b. Herramientas del Services.jar

1. Edición del Framework-res.apk
1a. Decompilar and recompilar.
1b. Cambiar los colores de texto en el framework-res
1c. Cambiar los colores de la barra de progreso.
1d. Cambiar el estilo de los menúes al estilo Negro/Oscuro.
1e. Editar la info de la bateria.
1f. Signar el Framework-res.apk
1g. Cambiar las imágenes Framework-res.apk

2. Editar el Services.jar
2a. Cambiar el color del reloj de la barra de estado.

0a. Herramientas del Framework-res.apk
Aclaración: Todo fue hecho en Windows XP x86. Puede que no todo funcione en otro sistema operativo.

[url=http://"http://www.editpadlite.com/index.html#download"]Usé el Editpad lite para modificar los HTMLs.[/url]
[url=http://"http://code.google.com/p/android-apktool/issues/detail?id=66"]Usé el APKtool para decompilar y recompilar los .apk. Busquen el link al fondo para descargar el APKtool 1.3.1 Windows (versiones posteriores pueden no funcionar)[/url]
Usé el WinRAR para editar .zip y meter las imágenes en el .apk!

0b. Herramientas del services.jar

Android SDK
El archivo de edición de color que les linkeo abajo

1a. Decompilar y Recompilar el Framework-res.apk
Antes que nada copian el Framework-res.apk de /system/framework

Bajan el  APKTool, lo extraen (recomiendo a una carpeta en el C:) y corren el install.bat. Pegan en la misma carpeta framework-res.apk y corren el APKTool_Decompile.bat, esto decompila todos los .apk's en la carpeta. Una vez decompilado van apoder editar los .xml usando el Editpad Lite (o el editor que deseen).

Para recompilar sólo corren el APKTool_build.bat. Se abre una ventana y arrantran la carpeta del framework-res y apretan . Si compila solo con errores tipo "no default translation" es que compiló bien. El .apk compilado va a aparecer en la carpeta /framework-res/dist/ .

Importante! El programa no compila adecuadamente frameworks con imágenes modificadas, por lo que editen el código, según las indicaciones debajo, compilen y luego cambien las imágenes en el .apk compilado.

1b. Cambiar los colores de texto en el framework-res
Luego de decompilar vamos a editar los siguientes .xml.

/framework-res/res/layout/status_bar.xml
/framework-res/res/layout/status_bar_expanded.xml
/framework-res/res/layout/status_bar_latest_event_content.xml

Los colores están en formato hexadecimal. Siendo #ff el comienzo (la transparencia) y los siguientes 6 caracteres el color en RGB. Ej: #ff000000 es el negro y #ffffffff el blanco.

/framework-res/res/layout/status_bar.xml

Van a encontrar 2 cógidos que corresponden a lo que llaman el ticker, que son las notificaciones en sí.

/framework-res/res/layout/status_bar_expanded.xml

Este cambia la vista expandida, es decir, el nombre de la empresa (Personal, Movistar etc) y lo que aparece debajo.

/framework-res/res/layout/status_bar_latest_event_content.xml

Acá hay 3 códigos hexadecimales que son el del color del título, la descripción y la hora de la notificación, en ese orden. Es lo que aparece cuando abrimos la barra y vemos un texto, un download o lo que sea.

Una vez que hicieron los cambios, y si no van a modificar más .xml pueden compilar y seguir con los pasos debajo. Sino deben continuar editando y recién cuanod hayan finalizado la edición de xmls compilar.
1c. Cambiar los colores de la barra de progreso
Para cambiar el color de las barras de progreso de las descargas, el volumen, el progreso de carga de una página web, etc. deben ir a  /res/drawable/ y abrir el progress_horizontal.xml usando el editor que deseen. Hay un total de 9 códigos hex. Los de la primera linea son del fondo y los otros 6, en 2 líneas, son los de la barra propiemante dicha. Pueden cambiarlos a lo que quieran, usar los 6 iguales o jugar con el gradiente variando los colores.

1d. Cambiar el estilo de los menúes al estilo Negro/Oscuro

Esto nos permite cambiar el estilo de los menúes del Root explorer, Mapas, etc. que por default vienen definidos para un fondo claro.
Puse tanto el texto completo como el completo modificado de modo que puedan hacer copy-paste sin problemas

Deben ir a /framework-res/res/values/ y abrir el styles.xml en el editor de texto.

Para editar el texto de los botones deben reemplazar el siguiente código

Código: Seleccionar todo

<style name="TextAppearance.Widget.IconMenu.Item" parent="@style/TextAppearance.Small">
        <item name="textColor">?textColorPrimaryInverse</item>
    </style>
Por este

Código: Seleccionar todo

<style name="TextAppearance.Widget.IconMenu.Item" parent="@style/TextAppearance.Small">
        <item name="textColor">@color/bright_foreground_dark</item>
    </style>
Para cambiar los botones extendidos, reemplazan esto:

Código: Seleccionar todo

<style name="Theme.IconMenu" parent="@style/Theme">
        <item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
        <item name="background">@null</item>
        <item name="itemTextAppearance">@style/TextAppearance.Widget.IconMenu.Item</item>
        <item name="horizontalDivider">@drawable/divider_horizontal_bright</item>
        <item name="verticalDivider">@drawable/divider_vertical_bright</item>
        <item name="itemBackground">@drawable/menu_selector</item>
        <item name="itemIconDisabledAlpha">?disabledAlpha</item>
        <item name="moreIcon">@drawable/ic_menu_more</item>
    </style> 
Por esto

Código: Seleccionar todo

<style name="Theme.IconMenu" parent="@style/Theme">
        <item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
        <item name="background">@null</item>
        <item name="itemTextAppearance">@style/TextAppearance.Widget.IconMenu.Item</item>
        <item name="horizontalDivider">@drawable/divider_horizontal_dark_opaque</item>
        <item name="verticalDivider">@drawable/divider_vertical_dark</item>
        <item name="itemBackground">@drawable/menu_selector</item>
        <item name="itemIconDisabledAlpha">?disabledAlpha</item>
        <item name="moreIcon">@drawable/ic_menu_more</item>
    </style>
Y también esto

Código: Seleccionar todo

<style name="Theme.ExpandedMenu" parent="@style/Theme">
        <item name="listViewStyle">@style/Widget.ListView.Menu</item>
        <item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
        <item name="background">@null</item>
        <item name="itemTextAppearance">?textAppearanceLargeInverse</item>
    </style>
Por esto

Código: Seleccionar todo

<style name="Theme.ExpandedMenu" parent="@style/Theme">
        <item name="listViewStyle">@style/Widget.ListView</item>
        <item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
        <item name="background">@null</item>
        <item name="itemTextAppearance">?textAppearanceLarge</item>
            <item name="itemBackground">@drawable/menu_selector</item>
    </style>
Y por últimos van a /res/drawable/ y abren el menu_selector.xml y cambian esto

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/highlight_pressed" />
    <item android:state_enabled="false" android:state_selected="true" android:drawable="@drawable/highlight_disabled" />
    <item android:state_enabled="true" android:state_selected="true" android:drawable="@drawable/highlight_selected" />
    <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/highlight_disabled" />
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/highlight_selected" />
</selector>
Por esto (se agregó la linea del fondo nomás):

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/highlight_pressed" />
    <item android:state_enabled="false" android:state_selected="true" android:drawable="@drawable/highlight_disabled" />
    <item android:state_enabled="true" android:state_selected="true" android:drawable="@drawable/highlight_selected" />
    <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/highlight_disabled" />
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/highlight_selected" />
    <item android:drawable="@drawable/screen_background_dark" />
</selector>
1e. Editar la info de la bateria
Para esto vamos a reemplazar 3 .xml y agregar un cuarto que los pueden bajar de aquí

Las ubicaciones de los archivos son,

/framework-res/res/drawable/stat_sys_battery.xml
/framework-res/res/drawable/stat_sys_battery_charge.xml
/framework-res/res/drawable/zzz_stat_sys_battery_1.xml (el nuevo!)

/framework-res/res/values/public.xml

Una vez reemplazados los .xml deben añadir las imágenes al /res/drawable/drawable-hdpi-v4 porque sino no va a bootear, ya que el .xml va a entrar en un loop buscándolas. Deberían quedarles 101 del estado de la batería y 103 de lo que es la fase de carga, carga llena y desconocida. Unas 204 en total que empizan por "stat_sys_battery...". Si se reemplazan adecuadamente el framework-res.apk no tira errores. El modo de reemplazar los archivos se explica más abajo.
1f. Signar el Framework-res.apk
Esto es quizás lo más delicado. Es posible que sin signar los archivos y reemplazando como se explica debajo funcione. Si quieren son libres de probar, sólo toma tiempo, yo ya me quemé  :D
Ahora deben compilar según el paso 1a. Una vez compilado vamos a signar ese archivo utilizando los siguientes archivos
Deben tener instalado el java para poder usarlo.
Una vez bajados los archivos los extraen a una carpeta, por ej: c:\SignApk
Mueven el Archivo recompilado a esa dirección (o lo copian)
Abren el CMD, van a la carpeta donde extrajeron todo y ahí tipean:

Código: Seleccionar todo

java -jar signapk.jar certificate.pem key.pk8 framework-res.apk  framework-res-signado.apk
Esto les va a generar un nuevo archivo .apk, framework-res-signado.apk que van a tener que renombrar cuando lo peguen en la SD.
Ahora al estar el .apk signado el Android lo reconoce como válido. Pero va a generar FCs, sobre todo de las apps de google, si no se signa como el resto de los .apk de google.
Entonces, una vez hecho todo esto abren con el WinRAR este archivo y el original y reemplazan en este nuevo archivo la carpeta "META-INF" y el archivo "AndroidManifest.xml". Esto hace que el archivo este signado por los amigos de google.
1g. Cambiar las imágenes del Framework-res.apk

Si sólo quieren cambiar algunas imágenes se pueden ahorrar todo lo anterior, sabiendo que los colores de las fuentes no van a variar. Simplemente abran el .apk usando el WinRAR y reemplacen respetando los nombres originales. Pueden abrir el apk de cualquier ROM o theme para este caso, no importa si es lo mismo que usan uds, lo importante es el nombre la imágen.

Importante! Cuando agreguen las imágenes al WinRAR fíjense que figure "update mode = add and replace files" y "compression method = normal".

Ahora sí tienen un nuevo framework-res.apk signado, modeado a su gusto y listo para usarse.
Restaría ahora modificar el services.jar que edita, entre otras cosas, el color del reloj de la barra de notificaciones
2a. Cambiar el color del reloj de la barra de estado
Antes que nada deben tener el Android SDK instalado (lo bajan gratis y no lo tienen ni que abrir)

1 - Vayan [url=http://"http://forum.xda-developers.com/showthread.php?t=535630"]acá[/url] y bajen el colorchangev3.jar-remove-zip.zip

2 - Borren la última parte de modo que quede solo colorchangev3.jar y pónganlo en la carpeta "tools" del android sdk. Ejemplo: C:\Android\android-sdk-windows\tools

3 - Hagan una carpeta llamada "framework" y muevan el services.jar a esa carpeta

4 - Creen un zip de la carpeta que van a llamar theme.zip
Quedaría así el theme.zip: /framework/services.jar

5 - Abran el CMD, vayan a la ruta de la carpeta y tipeen lo siguiente:

Código: Seleccionar todo

java -Xmx512M -jar colorChangev3.jar theme.zip clock=FFFFFFFF date=FFFFFFFF
Esto cambia el reloj y la fecha a blanco. Pueden poner más o menos opciones según lo que deseen cambiar. Usen siempre el mismo formato: opcion=XXXXXXXX para cada uno.

Opciones:
       

Código: Seleccionar todo

clock - ARGB color for the clock text
        date - ARGB color for the date
        ongoing - ARGB color for "Ongoing" Label
        latest - ARGB color for "Notifications" Label
        none - ARGB color for "No Notifications" Label
        clear - ARGB color for text on Clear Notifications button
        network - ARGB color for network name (T-Mobile usually)
        roam - Not sure where this color shows up, possibly network name when roaming
Es el mismo código de colores que antes.

Puede que tarde en compilar. Si tira un error que no encuentra el archivo hicieron mal alguno de los pasos anteriores.

Para finalizar sólo deben reemplazar los archivos en la carpeta /system/framework
Para ello los copian primero a /system y cambian los permisos a rw-r--r-- y una vez hecho esto reemplazan los originales por los nuevos en /system/framework.
Rebootean (ojo, tarda) y tienen su nuevo theme.
Si entra en un loop y no bootea, o hicieron algun paso mal o puede que, como cada miles es un mundo aparte no funcione con el suyo. Hacen nandroid restore y vuelven a lo que tenían o vuelven a revisar los pasos y prueban nuevamente.

Espero que les sirva y como siempre se agradecen los agradecimientos, valga la redundacia.

[CREDITOS] al user algunahay de GrupoAndroid
Última edición por Anonymous el Vie Jul 29, 2011 10:32 pm, editado 1 vez en total.
Blink 182
xTreme Argimmer
xTreme Argimmer
Mensajes: 1228
Registrado: Vie Jun 06, 2008 8:37 pm
Ubicación: Al costado del Mundo!
Agradecido: 0
Agradecimiento recibido: 0
Contactar:

Re:[TUTORIAL] - Modding Roms Oficiales (de cualquier teléfono)

Mensaje por Blink 182 »

Enorme aporte walterre™ se agradece.
Responder