Acceder

Ver la Versión Completa : [ TUTORIAL ] 4-way reboot Galaxy Nexus 4.1.2 Jelly bean.


Veloz46
29/10/12, 08:34:47
http://www.foro-nexus.com/images/Cabezal-Web-Android.png


Bueno pues aquí os voy a enseñar a los que quieren aprender y a los que les pueda interesar, meter el 4-Way reboot. (Reinicio normal, rápido, bootloader, recovery)

Necesitaremos tiempo, el Notepad++ o en caso de Linux Gedit, Pluma o similat, 7zip y una serie de paquetes que os dejo a continuación.

DESCARGA-1 (Pass: dev-puremod) (http://www.foro-nexus.com/showthread.php?tid=289&pid=2642#pid2642)

Tenemos que localizar el "android.policy.jar" de "system/framework"

Lo descompilamos de la siguiente manera:

1.Descomprimimos el .rar llamado "Herramientas"
2.Metemos el andoid.policy.jar dentro de dicha carpeta.
3.Ejecutamos el "cmd" (Terminal en Linux) del interior.
4.Escribimos lo siguiente:
apktool d android.policy.jar

Esto nos a descompilado el Jar en una careta llamada "android.policy.jar.out"

Ahora nos vamos asta "android.policy.jar.out/smali/com/android/internal/policy/impl"

Una vez hay, copiamos los archivos del rar llamado "Archivos adicionales"
Son 3 archivos que se llaman:
(las extesiones .smali es muy posible que no las veáis)

GlobalActions$10$1.smali
GlobalActions$10$2.smali
GlobalActions$10.smali

Una vez copiados estos archivos vamos en busca de los 2 que tenemos que modificar añadiendo lineas.

Los 2 archivos a modificar son llamados:
(las extesiones .smali es muy posible que no las veáis)

GlobalActions$SinglePressAction.smali
GlobalActions.smali

Vamos a por el primer archivo, en este caso empezamos por el GlobalActions (el mas fácil):

Buscamos la linea:

invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$2;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

.line 228
move-object/from16 v0, p0

La realmente importante es la:

invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

Por que debajo de esta vamos a poner lo siguente:

new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$10;

const v3, 0x10802c0

const v4, 0x104033a

move-object/from16 v0, p0

invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$10;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

Quedando de la siguiente manera:

invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$2;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$10;

const v3, 0x10802c0

const v4, 0x104033a

move-object/from16 v0, p0

invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$10;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

.line 228
move-object/from16 v0, p0

Ahora echo esto ya puedes guardar y vamos a por el otro archivo, llamado "GlobalActions$SinglePressAction"

Ahora buscamos el siguiente fragmento:

.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x40a
name = "SinglePressAction"
.end annotation


# instance fields
.field private final mIconResId:I

.field private final mMessage:Ljava/lang/CharSequence;

.field private final mMessageResId:I

Ahora atentos, entre la linea ".end annotation" y la "# instance fields" vamos a introducir el siguiente texto:

# static fields
.field protected static rebootMode:I

.field protected static final rebootOptions:[Ljava/lang/String;

Quedando así:

.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x40a
name = "SinglePressAction"
.end annotation


# static fields
.field protected static rebootMode:I

.field protected static final rebootOptions:[Ljava/lang/String;


# instance fields
.field private final mIconResId:I

.field private final mMessage:Ljava/lang/CharSequence;

.field private final mMessageResId:I

Y ahora después de hacer esto nos interesa justo este ultimo.

Que vendría a ser así:

# instance fields
.field private final mIconResId:I

.field private final mMessage:Ljava/lang/CharSequence;

.field private final mMessageResId:I


# direct methods
.method protected constructor <init>(II)V
.locals 1
.parameter "iconResId"
.parameter "messageResId"

Pues atentos por que dentro de ese fragmento de texto entre la linea "# direct methods" y la linea ".method protected constructor <init>(II)V" va a ir lo siguiente

.method static constructor <clinit>()V
.registers 3

const/4 v0, 0x4

new-array v0, v0, [Ljava/lang/String;

const/4 v1, 0x0

const-string v2, "Reiniciar"

aput-object v2, v0, v1

const/4 v1, 0x1

const-string v2, "R\u00e1pido"

aput-object v2, v0, v1

const/4 v1, 0x2

const-string v2, "Bootloader"

aput-object v2, v0, v1

const/4 v1, 0x3

const-string v2, "Recovery"

aput-object v2, v0, v1

sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;

return-void
.end method

Quedando de la siguiente manera:

# instance fields
.field private final mIconResId:I

.field private final mMessage:Ljava/lang/CharSequence;

.field private final mMessageResId:I


# direct methods
.method static constructor <clinit>()V
.registers 3

const/4 v0, 0x4

new-array v0, v0, [Ljava/lang/String;

const/4 v1, 0x0

const-string v2, "Reiniciar"

aput-object v2, v0, v1

const/4 v1, 0x1

const-string v2, "R\u00e1pido"

aput-object v2, v0, v1

const/4 v1, 0x2

const-string v2, "Bootloader"

aput-object v2, v0, v1

const/4 v1, 0x3

const-string v2, "Recovery"

aput-object v2, v0, v1

sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;

return-void
.end method

.method protected constructor <init>(II)V
.locals 1
.parameter "iconResId"
.parameter "messageResId"

Y listos ya puedes guardar, volver al "cmd" (terminal en Linux) y escribir lo siguiente:

apktool b android.policy.jar.out android.policy.jar

Esto nos va a compilar un archivo llamado classes.dex dentro de "android.policy.jar.out/build/apk/classes.dex"

Ese classes.dex, tenemos que cambiarlo por el original dentro del "android.policy.jar"

Abrimos el "android.policy.jar" con el 7zip, y arrastramos el nuevo "classes.dex" dentro del "android.policy.jar"

Ahora ya tienes tu archivo preparado para meterlo en la Rom y disfrutar del 4-way reboot. ;)

http://www.foro-nexus.com/showthread.php?tid=289&pid=2642#pid2642

http://www.foro-nexus.com/showthread.php?tid=289&pid=2642#pid2642

Veloz46
29/10/12, 09:02:15
Cabe decir que hay que mantener los espacios entre líneas, o sea hay que respetarlos o no funcionara.

Luego lo apunte en el post, desde Tapatalk me da un palo enorme buscar la línea donde decirlo.

Enviado desde un lugar llamado mundo... Si quieres ver mis trabajos pincha AQUÍ (veloz46.creatuforo.com)

motes
29/10/12, 13:32:33
Una vez modificado el archivo android.policy.jar podemos cambiarlo en qualquier Nexus stock?
si es asi seria un detalle que compartieras el android.policy.jar modificado...;-)
Gracias por el Tuto!!!!

Veloz46
29/10/12, 17:11:48
Una vez modificado el archivo android.policy.jar podemos cambiarlo en qualquier Nexus stock?
si es asi seria un detalle que compartieras el android.policy.jar modificado...;-)
Gracias por el Tuto!!!!

Si el archivo es de la Stock Deodexed si, pero solo para las stock, puesto que yo, AOKP, CM... Tiene diferentes cambios en ese archivo.

Si la rom Stock no está Deodexed, este tutorial no vale. (otro detalle que debería aclarar)

Enviado desde un lugar llamado mundo... Si quieres ver mis trabajos pincha AQUÍ (veloz46.creatuforo.com)

lauri19david
31/10/12, 23:02:33
Si el archivo es de la Stock Deodexed si, pero solo para las stock, puesto que yo, AOKP, CM... Tiene diferentes cambios en ese archivo.

Si la rom Stock no está Deodexed, este tutorial no vale. (otro detalle que debería aclarar)

Enviado desde un lugar llamado mundo... Si quieres ver mis trabajos pincha AQUÍ (veloz46.creatuforo.com)

Eres un máquina tío.
Mañana cuando encienda el pc me pongo a ello.
Gracias.

Enviado desde mi Nexus 7 usando Tapatalk 2

chujalt
24/03/13, 14:01:35
Probado en ROM Po_ROM_Pompero_JB para Tablet POV Protab2 XXL y funciona de maravilla....
Gracias por el tuto maquina :ok: