klurosu
13/05/13, 03:57:40
Antes de ir a dormir, me apetecia compartir esto.
Vamos a añadirle al boton de power 4 tipos de reinicio:
Necesitaremos:
framework-res.apk y android.policy.jar
Estas 3 imágenes (https://docs.google.com/file/d/0B4gZLyPSGvqhOWR1LWJZVnVDS0U/edit?usp=sharing)
Archivos.policy
Apk.Manager (https://docs.google.com/file/d/0B4gZLyPSGvqhVjFISzlNQXJXOVk/edit?usp=sharing) y HoloxTool_v1.0.1 (https://docs.google.com/file/d/0B4gZLyPSGvqhYlRxTXhpeTZQZ0k/edit?usp=sharing)
Al Turron!!!
NOTA:
Las líneas azules son las del menú Screenshot
Las lineas verdes son las del menú Recovery.
Las líneas naranjas son las del menú Download
Al Turron!!!
A) framework-res.apk
1. Decompila framework-res.apk con Apk.Manager
(pon “framework-res.apk” dentro de la carpeta “place-apk-here-for-modding” y ejecuta “Script.bat”. Selecciona la opción “9”)
2. Añade las 3 imágenes a la ruta res\ drawable-xhdpi (esta dentro de la carpeta “projects”)
3. Ve a res\values y abre strings.xml (añade lo siguiente antes de la linea </resources>)
__________________________________________________ __________
<string name="global_action_screenshot_txt">Capturar Pantalla </string>
<string name="global_action_recovery_txt">Modo Recovery</string>
<string name="global_action_download_txt">Modo Download</string>
__________________________________________________ __________
4. Compila framework-res.apk (mediante la opción “11” del menú de Apk.Manager y descompila de nuevo el archivo.
(solo asi se regeneran las ID’s de public.xml en res\values folder para aceptar las nuevas rutas)
5. Ahora que has descompilado de nuevo, ve a la ruta res\values y abre public.xml, localiza las siguientes líneas y apúntatelas (estas ID’s son ejemplos)
__________________________________________________ __________
<public type="drawable" name="tw_ic_lock_screenshot" id="0x0??????1) " />
<public type="drawable" name="tw_ic_lock_recovery" id="0x0??????2" />
<public type="drawable" name="tw_ic_lock_download" id="0x0??????3" />
__________________________________________________ __________
Y las siguientes también (estas ID’s son ejemplos)
__________________________________________________ __________
<public type="string" name="global_action_screenshot_txt" id="0x0?????11" />
<public type="string" name="global_action_recovery_txt" id="0x0?????22" />
<public type="string" name="global_action_download_txt" id="0x0?????33" />
__________________________________________________ __________
6. Deja abierto el archivo… lo necesitaras
B) android.policy.jar
1. Abre “android.policy.jar” con “WinRAR” y saca el archivo “clases.dex” para meterlo dentro de la carpeta “HoloxTool”…”dex” y ejecuta el archivo “HoloxTool.bat”
(selecciona la opción “2”)
2. Ve a la ruta HoloxTool_v1.0.1\database\dex\classout\com\android \internal\policy\impl y abre GlobalActions.smali.
(dentro de “\database\dex”)
3. Busca la linea ".field private mDialog:Landroid/app/AlertDialog;" y añade esto:
__________________________________________________ __________
.field private mDialog:Landroid/app/AlertDialog;
.field private mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mHandler:Landroid/os/Handler;
__________________________________________________ __________
4. Busca "[Lcom/android/internal/policy/impl/GlobalActions$Action;" e incrementa el numero de arrays para que puedan caber todas las opciones en el menú Power.
__________________________________________________ __________
.line 418
const/4 v1, 0x5 <!--- Aquí debes cambiar el numero
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
__________________________________________________ __________
Nota:
Recuerda que el numero máximo permitido es 7 (empezando de 0x0 a 0x6), seguramente tengas que eliminar alguna si tu menú power original tiene demasiadas arrays… por ejemplo el Modo Avion.
Asi debe quedar:
__________________________________________________ __________
.line 418
const/4 v1, 0x8
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
__________________________________________________ __________
5. Añadiremos una nueva instancia para poder albergar ese numero de mas
(si no, el sistema no lo aceptara)
__________________________________________________ __________
.line 416
invoke-direct/range {p0 .. p0}, Lcom/android/internal/policy/impl/GlobalActions;->onAirplaneModeChanged()V
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;
const v2, 0x??????1
const v3, 0x?????11
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Recovery;
const v2, 0x??????2
const v3, 0x?????22
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Recovery;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Download;
const v2, 0x??????3
const v3, 0x?????33
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Download;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.line 418
const/4 v1, 0x8
__________________________________________________ __________
Como veras, las ID’s que se muestran son las que tenemos en el archivo public.xml de nuestra framework-res.apk.
La primera ID de cada acción representa a los iconos nuevos.
La segunda ID de cada acción representa el origen en el sistema
Echale un ojo al archivo public.xml y asegúrate de que concuerden
No olvides que para linkear las ID’s de la framework-res.apk, debemos omitir el primer cero después de la x. (Por ejemplo…0x01080a98 seria 0x1080a98)
6. Ya tenemos añadidos los nuevos arrays para mostrarlos en el menú Power… ahora modificaremos los archivos para hacerlos consecutivos en el menú (el que veremos en el teléfono)
__________________________________________________ __________
.line 418
const/4 v1, 0x8
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
const/4 v2, 0x0
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
...
...
...
const/4 v2, 0x4
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
const/4 v2, 0x5
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
const/4 v2, 0x6
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
const/4 v2, 0x7
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
__________________________________________________ __________
7. Guarda los cambios y sal.
8. Copia los 4 archivos que hay dentro de “archivos.policy.rar” a: classout\com\android\internal\policy\impl
9. Recompila android.policy.jar mediante la opción “3” del menú de “HoloxTool_v1.0.1”.
10. copia el archivo “new-classes.dex” que hay dentro de “HoloxTool_v1.0.1\database\dex” al escritorio y renómbralo a “classes.dex”
11. Abre “android.policy.jar” con “WinRAR” y mete el archivo “classes.dex” que tienes en tu escritorio (machacará el que hay dentro)
Ahora pasa los archivos framework-res.apk y android.policy.jar que has modificado… al teléfono peeero no funcionaran las capturas de pantalla hasta que pases el archivo “screenshot” al bin de tu sistema (en el móvil , mediante RootExplorer)
http://i.imgur.com/DKaiuaD.png
Vamos a añadirle al boton de power 4 tipos de reinicio:
Necesitaremos:
framework-res.apk y android.policy.jar
Estas 3 imágenes (https://docs.google.com/file/d/0B4gZLyPSGvqhOWR1LWJZVnVDS0U/edit?usp=sharing)
Archivos.policy
Apk.Manager (https://docs.google.com/file/d/0B4gZLyPSGvqhVjFISzlNQXJXOVk/edit?usp=sharing) y HoloxTool_v1.0.1 (https://docs.google.com/file/d/0B4gZLyPSGvqhYlRxTXhpeTZQZ0k/edit?usp=sharing)
Al Turron!!!
NOTA:
Las líneas azules son las del menú Screenshot
Las lineas verdes son las del menú Recovery.
Las líneas naranjas son las del menú Download
Al Turron!!!
A) framework-res.apk
1. Decompila framework-res.apk con Apk.Manager
(pon “framework-res.apk” dentro de la carpeta “place-apk-here-for-modding” y ejecuta “Script.bat”. Selecciona la opción “9”)
2. Añade las 3 imágenes a la ruta res\ drawable-xhdpi (esta dentro de la carpeta “projects”)
3. Ve a res\values y abre strings.xml (añade lo siguiente antes de la linea </resources>)
__________________________________________________ __________
<string name="global_action_screenshot_txt">Capturar Pantalla </string>
<string name="global_action_recovery_txt">Modo Recovery</string>
<string name="global_action_download_txt">Modo Download</string>
__________________________________________________ __________
4. Compila framework-res.apk (mediante la opción “11” del menú de Apk.Manager y descompila de nuevo el archivo.
(solo asi se regeneran las ID’s de public.xml en res\values folder para aceptar las nuevas rutas)
5. Ahora que has descompilado de nuevo, ve a la ruta res\values y abre public.xml, localiza las siguientes líneas y apúntatelas (estas ID’s son ejemplos)
__________________________________________________ __________
<public type="drawable" name="tw_ic_lock_screenshot" id="0x0??????1) " />
<public type="drawable" name="tw_ic_lock_recovery" id="0x0??????2" />
<public type="drawable" name="tw_ic_lock_download" id="0x0??????3" />
__________________________________________________ __________
Y las siguientes también (estas ID’s son ejemplos)
__________________________________________________ __________
<public type="string" name="global_action_screenshot_txt" id="0x0?????11" />
<public type="string" name="global_action_recovery_txt" id="0x0?????22" />
<public type="string" name="global_action_download_txt" id="0x0?????33" />
__________________________________________________ __________
6. Deja abierto el archivo… lo necesitaras
B) android.policy.jar
1. Abre “android.policy.jar” con “WinRAR” y saca el archivo “clases.dex” para meterlo dentro de la carpeta “HoloxTool”…”dex” y ejecuta el archivo “HoloxTool.bat”
(selecciona la opción “2”)
2. Ve a la ruta HoloxTool_v1.0.1\database\dex\classout\com\android \internal\policy\impl y abre GlobalActions.smali.
(dentro de “\database\dex”)
3. Busca la linea ".field private mDialog:Landroid/app/AlertDialog;" y añade esto:
__________________________________________________ __________
.field private mDialog:Landroid/app/AlertDialog;
.field private mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mHandler:Landroid/os/Handler;
__________________________________________________ __________
4. Busca "[Lcom/android/internal/policy/impl/GlobalActions$Action;" e incrementa el numero de arrays para que puedan caber todas las opciones en el menú Power.
__________________________________________________ __________
.line 418
const/4 v1, 0x5 <!--- Aquí debes cambiar el numero
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
__________________________________________________ __________
Nota:
Recuerda que el numero máximo permitido es 7 (empezando de 0x0 a 0x6), seguramente tengas que eliminar alguna si tu menú power original tiene demasiadas arrays… por ejemplo el Modo Avion.
Asi debe quedar:
__________________________________________________ __________
.line 418
const/4 v1, 0x8
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
__________________________________________________ __________
5. Añadiremos una nueva instancia para poder albergar ese numero de mas
(si no, el sistema no lo aceptara)
__________________________________________________ __________
.line 416
invoke-direct/range {p0 .. p0}, Lcom/android/internal/policy/impl/GlobalActions;->onAirplaneModeChanged()V
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;
const v2, 0x??????1
const v3, 0x?????11
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Recovery;
const v2, 0x??????2
const v3, 0x?????22
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Recovery;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Download;
const v2, 0x??????3
const v3, 0x?????33
move-object/from16 v0, p0
invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Download;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.line 418
const/4 v1, 0x8
__________________________________________________ __________
Como veras, las ID’s que se muestran son las que tenemos en el archivo public.xml de nuestra framework-res.apk.
La primera ID de cada acción representa a los iconos nuevos.
La segunda ID de cada acción representa el origen en el sistema
Echale un ojo al archivo public.xml y asegúrate de que concuerden
No olvides que para linkear las ID’s de la framework-res.apk, debemos omitir el primer cero después de la x. (Por ejemplo…0x01080a98 seria 0x1080a98)
6. Ya tenemos añadidos los nuevos arrays para mostrarlos en el menú Power… ahora modificaremos los archivos para hacerlos consecutivos en el menú (el que veremos en el teléfono)
__________________________________________________ __________
.line 418
const/4 v1, 0x8
new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
const/4 v2, 0x0
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
...
...
...
const/4 v2, 0x4
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
const/4 v2, 0x5
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
const/4 v2, 0x6
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
const/4 v2, 0x7
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v3, v1, v2
__________________________________________________ __________
7. Guarda los cambios y sal.
8. Copia los 4 archivos que hay dentro de “archivos.policy.rar” a: classout\com\android\internal\policy\impl
9. Recompila android.policy.jar mediante la opción “3” del menú de “HoloxTool_v1.0.1”.
10. copia el archivo “new-classes.dex” que hay dentro de “HoloxTool_v1.0.1\database\dex” al escritorio y renómbralo a “classes.dex”
11. Abre “android.policy.jar” con “WinRAR” y mete el archivo “classes.dex” que tienes en tu escritorio (machacará el que hay dentro)
Ahora pasa los archivos framework-res.apk y android.policy.jar que has modificado… al teléfono peeero no funcionaran las capturas de pantalla hasta que pases el archivo “screenshot” al bin de tu sistema (en el móvil , mediante RootExplorer)
http://i.imgur.com/DKaiuaD.png