Alex 19 16v | ||||
ferlagod | ||||
PlatinoxX | ||||
akiro-E | ||||
eduhtc | ||||
JuniorJCM | ||||
nakol21 | ||||
Wilbert Armando | ||||
ljoao | ||||
quetemeto |
No hay usuarios |
No hay usuarios |
El último usuario registrado es Conscurchondkir
Nuestros miembros han publicado un total de 2222 mensajes en 405 argumentos.
Sáb Jun 15, 2013 11:00 pm por lrc1
Ya veo que …
[ Lectura completa ]
Comentarios: 1
Vie Nov 08, 2013 11:06 am por samurai77
Alguien sabe como resolver este problemilla? Será de software o se habrá jodido el altavoz?
saludos y gracias por anticipado
Comentarios: 2
Sáb Mayo 09, 2015 7:05 am por huawei y 320
[ Lectura completa ]
Comentarios: 0
Jue Ene 29, 2015 3:02 am por LautaroLuna
Hola a todos, tengo un Huawei Y300 pero no me reconoce la memoria SD. Lo unico que me aperece es 'Instalando SD' pero nunca la instala... ya probe con varias memorias SD y ninguna las reconoce, todas las memorias funcionan.
¿Alguien sabe como solucionar este problema? estoy desesperado.... Muchas gracias!!
Comentarios: 0
Mar Jul 22, 2014 8:59 am por Pedro Blanco
Comentarios: 0
Mar Mayo 27, 2014 11:29 am por Henavia
Gracias
Comentarios: 0
Miér Sep 25, 2013 6:50 am por guillermo crusharo
Comentarios: 0
Vie Ago 30, 2013 11:08 am por draghonm
ya e actualizado la rom oficial y e probado varias cocinadas pero sigue igual ,
hay parte de la pantalla que no responde.
si alguien tiene alguna idea me podría ayudar . saludos.
Comentarios: 0
Jue Sep 27, 2012 8:08 pm por sanchez40000
[ Lectura completa ]
Comentarios: 4
Ninguno
El record de usuarios en línea fue de 104 durante el Lun Jul 31, 2017 5:13 pm
Modificar juegos (resolucion y otras cosas) Parte II
huawei :: Principal :: Tutoriales
Modificar juegos (resolucion y otras cosas) Parte II
Este paso es aún más simple, el archivo "GameInstaller.smali" encontrar la función "isRequiredFile"
Código :
. Método privado isRequiredFile (Ljava / lang / String; J) Z
. Locales 5
. Parámetros "fileName"
. Parámetro "tamaño"
. Prólogo
const / 4 v4, 0x1
. Línea 410
nueva instancia v2, Ljava / lang / StringBuilder;
invocar-directa {v2}, Ljava / lang / StringBuilder; -
sget-objeto v3, FCM gameloft / / android / Gand / GloftMCHP / GameInstaller; -> Data_Path: Ljava / lang / String;
invocar virtual {v2, v3}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2, p1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2}, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v1
. Línea 411
. Locales v1, ruta: Ljava / lang / String;
nueva instancia v0, Ljava / io / Archivo;
invocar-directa {v0, v1}, Ljava / io / Archivo; ->
. Línea 412
. Locales v0, archivo: Ljava / io / Archivo;
invocar-directa {p0, p1}, FCM gameloft / / android / Gand / GloftMCHP / GameInstaller; - replaceOconf> (Ljava / lang / String Z
movimiento número v2
si-eqz v2: cond_0
const / 4 v2, 0x0
. Línea 415
: Goto_0
volver v2
: Cond_0
invocar virtual} {v0, Ljava / io / Archivo; -> exists () Z
movimiento número v2
si-eqz v2: cond_1
invocar virtual} {v0, Ljava / io / Archivo; - Longitud> () J
movimiento en todo el resultado de la v2
cmp largo v2, v2, p2
si-eqz v2: cond_2
: Cond_1
const / 4 v2, 0x0
Ir a: goto_0
: Cond_2
const / 4 v2, 0x0
Ir a: goto_0
. Método de finalización
En él está interesado en un fragmento
Código:
invocar virtual} {v0, Ljava / io / Archivo; -> exists () Z
movimiento número v2
si-eqz v2: cond_1
invocar virtual} {v0, Ljava / io / Archivo; - Longitud> () J
movimiento en todo el resultado de la v2
cmp largo v2, v2, p2
si-eqz v2: cond_2
: Cond_1
const / 4 v2, 0x0
En este pasaje no se comprueba si existe un archivo en la memoria caché y si es así, lo mismo que su tamaño (o suma de comprobación) con la referencia? Sólo un cheque por la existencia de archivos, pero comparando el tamaño de una referencia a sí mismo
El resultado así lo
Código :
. Método privado isRequiredFile (Ljava / lang / String; J) Z
. Locales 5
. Parámetros "fileName"
. Parámetro "tamaño"
. Prólogo
const / 4 v4, 0x1
. Línea 410
nueva instancia v2, Ljava / lang / StringBuilder;
invocar-directa {v2}, Ljava / lang / StringBuilder; -
sget-objeto v3, FCM gameloft / / android / Gand / GloftMCHP / GameInstaller; -> Data_Path: Ljava / lang / String;
invocar virtual {v2, v3}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2, p1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2}, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v1
. Línea 411
. Locales v1, ruta: Ljava / lang / String;
nueva instancia v0, Ljava / io / Archivo;
invocar-directa {v0, v1}, Ljava / io / Archivo; ->
. Línea 412
. Locales v0, archivo: Ljava / io / Archivo;
invocar-directa {p0, p1}, FCM gameloft / / android / Gand / GloftMCHP / GameInstaller; - replaceOconf> (Ljava / lang / String Z
movimiento número v2
si-eqz v2: cond_0
const / 4 v2, 0x0
. Línea 415
: Goto_0
volver v2
: Cond_0
cmp largo v2, p2, p2
si-eqz v2: cond_2
const / 4 v2, 0x0
Ir a: goto_0
: Cond_2
const / 4 v2, 0x0
Ir a: goto_0
. Método de finalización
En algunos juegos, sobre todo la nueva función "isRequiredFile" no lo hace, se centran en los fragmentos de "invocar virtual {v0}, Ljava / io / Archivo; -> exists () Z", "invocar virtual {v0}, Ljava / io / Archivo; - Longitud> () J ", si se van de la mano y después de comprobar si" cmp-... ", entonces el 99% que es el control de la caché, se procede con ella es similar a la descrita anteriormente.
4. Asignación de un botón de hardware en cualquier acción
Antes de proceder a esta fase es necesario entender cómo funciona el juego, en general, sabemos que si presionó la tecla o si toco en la pantalla? Si una gran simplificación, se verá como cuando usted hace una acción con su unidad, que se bloquee el sistema (Android), el sistema transmite esta información a la aplicación activa mediante el envío de un mensaje acerca de lo sucedido. Este mensaje llega en forma de eventos a las aplicaciones de controlador de eventos, "controlador de eventos" se analiza y, si es necesario, va más tratamiento (a menudo en la biblioteca "*. so". Asimismo, al hacer clic en algún lugar de la pantalla táctil o pulsar un botón, los acontecimientos de este en el juego. Podemos tomar ventaja de esto podría ser ajustado para "controlador de eventos que, cuando se hace clic en un botón, controlador de eventos no pasa en algo que se ha presionado, y lo que tocar la pantalla en ciertas coordenadas. Programa de todos modos, si está o no meter o no en la pantalla, de manera que puede ser fácil de engañar
Por ejemplo, voy a utilizar el "Assassin's Creed". En primer lugar, echemos un vistazo a la "controlador de eventos (función)" onTouchEvent ", nos preocupa que lo que está en el" AssassinsCreed.smali ".
Código:
. Método onTouchEvent público (Landroid / ver / MotionEvent Z
. Locales 11
. Parámetros "evento"
. Prólogo
const / 4 v. 10, 0x2
const / 4 v9, 0x1
const / 4 v8, 0x0
. Línea 1002
sget v6, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> s_engineState: yo
si ne-v6, v9,: cond_0
. Línea 1004
invocar virtual {p0, p1}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; -> StateIntroVideo_onTouchEvent (Landroid / ver / MotionEvent Z
movimiento número v6
. Línea 1050
: Goto_0
volver v6
. Línea 1010
: Cond_0
invocar virtual {p1}, ver Landroid / / MotionEvent; - getAction> () que
movimiento número v0
. Línea 1011
. V0 local, la acción: I
and-int/lit16 v4, v0, 0xff
. Línea 1013
. Locales v4, la máscara: Yo
invocar virtual {p1}, ver Landroid / / MotionEvent; - getPointerCount> () que
movimiento número v1
. Línea 1014
. V1 local, cuenta: yo
const / 4 v5, 0x0
. Línea 1015
. Locales v5, pointerId: Yo
const v6, 0xff00
and-int/2addr v6, v0
shr-int/lit8 v5, v6, 0x8
. Línea 1017
si v0-nez,: cond_1
. Línea 1019
invocar virtual {p1} v8, vista Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1} v8, vista Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v8, v9, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1022
: Cond_1
const / 4 v6, 0x5
si ne-v4, v6,: cond_2
. Línea 1024
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v5, v9, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1027
: Cond_2
si ne-v0, v10,: cond_3
. Línea 1029
const / 4 v2, 0x0
. Locales v2, i: I
: Goto_1
si ge-v2, v1: cond_3
. Línea 1031
invocar virtual {p1, v2}, ver Landroid / / MotionEvent; - getPointerId> (yo)
movimiento número v3
. Línea 1032
. Locales v3, id: Yo
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v3, v10, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1029
add-int/lit8 v2, v2, 0x1
Ir a: goto_1
. Línea 1038
. Fin locales v2 # i: I
. Fin locales v3 # id: Yo
: Cond_3
si ne-v0, v9,: cond_4
. Línea 1040
const / 4 v2, 0x0
. Reinicie locales v2 # i: I
: Goto_2
si ge-v2, v1: cond_5
. Línea 1042
invocar virtual {p1, v2}, ver Landroid / / MotionEvent; - getPointerId> (yo)
movimiento número v3
. Línea 1043
. Reinicie locales v3 # id: yo
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v3, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1040
add-int/lit8 v2, v2, 0x1
Ir a: goto_2
. Línea 1046
. Fin locales v2 # i: I
. Fin locales v3 # id: Yo
: Cond_4
const / 4 v6, 0x6
si ne-v4, v6,: cond_5
. Línea 1048
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v5, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
: Cond_5
mover v6, v9
. Línea 1050
Ir a: goto_0
. Método de finalización
De particular interés para nosotros son estos fragmentos
Código:
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v5, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
Si usted hizo " ajuste de la pantalla táctil, a continuación, estos fragmentos se pueden ver ligeramente diferentes.
Por ejemplo:
Código :
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
mul-int/lit8 v6, v6, 0xa
div-int/lit8 v6, v6, 0x6
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
mul-int/lit8 v7, v7, 0x3
div-int/lit8 v7, v7, 0x2
invocar estática {v5, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
Estas piezas de código en la función "onTouchEvent", hay muchas veces, que son justas y responsables de la transmisión de información a "controlador de eventos" para la transformación posterior del juego. En consecuencia el fin de simular el tacto de la pantalla, tenemos que llamar a la "nativeOnTouch", pero no sé qué configuración que tenía que pasar. Para averiguarlo, usamos "Logcat" - ". Logcat" un mecanismo para el registro de todo lo que ocurre en el androide. Para acceder a "Logcat" que necesita para instalar la aplicación en el teléfono "aLogcat", se puede descargar el mercado. Para transferir datos desde el juego "Logcat", creamos una función temporal "LogTouch", entonces debería ser eliminado.
Código :
. Método estático privado LogTouch (IIII) V
. Locales 3
. Prólogo
const cadena v1 "/"
const cadena v2, "TouchEvent"
nueva instancia v0, Ljava / lang / StringBuilder;
invocar-direct} {v0, Ljava / lang / StringBuilder; -
invocar virtual {v0, p0}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, v1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, p1}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, v1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, p2}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, v1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, p3}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual} {v0, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v0
invocar estática {v2, v0}, Landroid / util / registro; -> d (Ljava / lang / String; Ljava / lang / String me
retorno vacío
. Método de finalización
Esta función tiene cuatro parámetros, así como "nativeOnTouch", y escribe sus valores en "Logcat". Su aplicación debe ser agregado a la misma "*. smali" archivo que contiene "controlador de eventos" "OnTouchEvent", en este caso, "AssassinsCreed.smali". La ubicación del archivo no importa, se puede colocar en cualquier lugar entre las otras características. Sin embargo, para mayor comodidad se añade justo antes de "OnTouchEvent".
Código:
...
. Línea 884
retorno vacío
. Método de finalización
. Método estático privado LogTouch (IIII) V
. Locales 3
. Prólogo
const cadena v1 "/"
const cadena v2, "TouchEvent"
nueva instancia v0, Ljava / lang / StringBuilder;
invocar-direct} {v0, Ljava / lang / StringBuilder; -
invocar virtual {v0, p0}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, v1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, p1}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, v1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, p2}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, v1}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual {v0, p3}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual} {v0, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v0
invocar estática {v2, v0}, Landroid / util / registro; -> d (Ljava / lang / String; Ljava / lang / String me
retorno vacío
. Método de finalización
. Método onTouchEvent público (Landroid / ver / MotionEvent Z
. Locales 11
. Parámetros "evento"
. Prólogo
const / 4 v. 10, 0x2
const / 4 v9, 0x1
...
Ahora ve a "controlador de eventos" "onTouchEvent", antes de cada llamada a "nativeOnTouch" Añadir llamada "LogTouch", pasarlo los mismos parámetros que en "nativeOnTouch".
Código :
. Método onTouchEvent público (Landroid / ver / MotionEvent Z
. Locales 11
. Parámetros "evento"
. Prólogo
const / 4 v. 10, 0x2
const / 4 v9, 0x1
const / 4 v8, 0x0
. Línea 1002
sget v6, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> s_engineState: yo
si ne-v6, v9,: cond_0
. Línea 1004
invocar virtual {p0, p1}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; -> StateIntroVideo_onTouchEvent (Landroid / ver / MotionEvent Z
movimiento número v6
. Línea 1050
: Goto_0
volver v6
. Línea 1010
: Cond_0
invocar virtual {p1}, ver Landroid / / MotionEvent; - getAction> () que
movimiento número v0
. Línea 1011
. V0 local, la acción: I
and-int/lit16 v4, v0, 0xff
. Línea 1013
. Locales v4, la máscara: Yo
invocar virtual {p1}, ver Landroid / / MotionEvent; - getPointerCount> () que
movimiento número v1
. Línea 1014
. V1 local, cuenta: yo
const / 4 v5, 0x0
. Línea 1015
. Locales v5, pointerId: Yo
const v6, 0xff00
and-int/2addr v6, v0
shr-int/lit8 v5, v6, 0x8
. Línea 1017
si v0-nez,: cond_1
. Línea 1019
invocar virtual {p1} v8, vista Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1} v8, vista Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v8, v9, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> LogTouch (IIII) V
invocar estática {v8, v9, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1022
: Cond_1
const / 4 v6, 0x5
si ne-v4, v6,: cond_2
. Línea 1024
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v5, v9, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> LogTouch (IIII) V
invocar estática {v5, v9, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1027
: Cond_2
si ne-v0, v10,: cond_3
. Línea 1029
const / 4 v2, 0x0
. Locales v2, i: I
: Goto_1
si ge-v2, v1: cond_3
. Línea 1031
invocar virtual {p1, v2}, ver Landroid / / MotionEvent; - getPointerId> (yo)
movimiento número v3
. Línea 1032
. Locales v3, id: Yo
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v3, v10, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> LogTouch (IIII) V
invocar estática {v3, v10, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1029
add-int/lit8 v2, v2, 0x1
Ir a: goto_1
. Línea 1038
. Fin locales v2 # i: I
. Fin locales v3 # id: Yo
: Cond_3
si ne-v0, v9,: cond_4
. Línea 1040
const / 4 v2, 0x0
. Reinicie locales v2 # i: I
: Goto_2
si ge-v2, v1: cond_5
. Línea 1042
invocar virtual {p1, v2}, ver Landroid / / MotionEvent; - getPointerId> (yo)
movimiento número v3
. Línea 1043
. Reinicie locales v3 # id: yo
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v3}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v3, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> LogTouch (IIII) V
invocar estática {v3, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
. Línea 1040
add-int/lit8 v2, v2, 0x1
Ir a: goto_2
. Línea 1046
. Fin locales v2 # i: I
. Fin locales v3 # id: Yo
: Cond_4
const / 4 v6, 0x6
si ne-v4, v6,: cond_5
. Línea 1048
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> getX (I) F
movimiento número v6
flotador-a-int v6, v6
invocar virtual {p1, v5}, ver Landroid / / MotionEvent; -> Gety (I) F
movimiento número v7
flotador-a-int v7, v7
invocar estática {v5, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> LogTouch (IIII) V
invocar estática {v5, v8, v6, v7}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
: Cond_5
mover v6, v9
. Línea 1050
Ir a: goto_0
. Método de finalización
Después de eso, los paquetes de archivo APK-que están instalados en el teléfono y ejecutar el juego. Comienza un nuevo juego, apagar el juego, ejecute "aLogCat", seleccione el menú "Borrar" y cerrar pulsando el botón "atrás". Ampliar el juego, meter el salto icono, por lo que el dedo, el menor tiempo tocando la pantalla, pero el salto ha funcionado. Una vez más, apague el juego y ejecutar "aLogCat". En "aLogCat" haga clic en "Pausa". Todo lo que ahora se puede proceder al análisis.
"Logcat" pueden ser analizados en el teléfono, pero es más conveniente para poder guardar y analizar en su computadora (haciendo clic en "Guardar" "Logcat" guardados en "aLogCat" en la tarjeta de memoria).
Desde el final del archivo de la palabra clave "TouchEvent" en busca de que necesitamos los registros. Y eso es lo que encontramos.
Código:
...
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
D / TouchEvent (2506): 0 / 1 / 753 / 390
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
D / TouchEvent (2506): 0 / 2 / 753 / 393
D / TouchEvent (2506): 0 / 2 / 753 / 393
D / TouchEvent (2506): 0 / 2 / 753 / 393
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
D / TouchEvent (2506): 0 / 2 / 751 / 395
D / TouchEvent (2506): 0 / 2 / 751 / 395
D / TouchEvent (2506): 0 / 2 / 751 / 395
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
D / TouchEvent (2506): 0 / 2 / 751 / 395
D / TouchEvent (2506): 0 / 2 / 749 / 396
D / TouchEvent (2506): 0 / 0 / 749 / 396
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
??? E / ASESINO PERDIDO TEXTURA (2506): textura actual: -1
...
Es fácil adivinar que el tercero y el parámetro de 4 ª es la coordenada de tocar la pantalla. 2 ª opción es probable que "el tipo de evento": 1 - la pantalla táctil, 2 - mover el dedo por la pantalla, 0 - tiempo de guardar el dedo en la pantalla. Bueno, la opción 1 ª es simplemente igual a 0. Ahora está claro que para lograr el salto sobre el botón, tenemos que en el momento de presionar el botón de llamada a la función "nativeOnTouch" con los parámetros 0 / 1 / 753 / 390 (emulado al tocar la pantalla), y durante la liberación con el 0 / 0 / 753 / 390 ( emulado por cortar el dedo de la pantalla).
Pero esto no es suficiente, que de alguna manera debe determinar en qué botón se pulsa, para saber que emulan el grifo en la pantalla o no. Para ello debemos obtener el código de la llave, una vez más vamos a "Logcat". Todo lo relacionado con "LogTouch" eliminar y en lugar de añadir la característica de "LogKey". Esta función abarca el botón y escribe su código en el "Logcat".
Código :
. Método estático privado LogKey (I) V
. Locales 2
. Prólogo
const cadena v1 "KeyCode"
nueva instancia v0, Ljava / lang / StringBuilder;
invocar-direct} {v0, Ljava / lang / StringBuilder; -
invocar virtual {v0, p0}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v0
invocar virtual} {v0, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v0
invocar estática {v1, v0}, Landroid / util / registro; -> d (Ljava / lang / String; Ljava / lang / String me
retorno vacío
. Método de finalización
Puede ser agregado en el mismo lugar donde fue "LogTouch". Después de eso, agrega la llamada "LogKey" en el "controlador", "onKeyDown" antes de llamar "nativeOnKeyDown" con la transferencia de la misma opción que en "nativeOnKeyDown".
Inicia el juego, cuando aparezca el menú, haga clic en el botón sobre el que queremos para colgar la acción (I presionado el botón del menú), ir al partido. Es importante presionar el botón una sola vez, y sólo lo que queremos para colgar la acción, de lo contrario a continuación, en "Logcat" sería confuso. En los registros en busca de la cadena para la palabra clave "KeyCode", esta línea será el código de nuestro botón.
En mi caso:
Código:
D / KeyCode (4155): 82
Por lo tanto el código del botón "Menú" - 82. Ahora tenemos toda la información necesaria y podemos seguir adelante. Quite todo lo que ha añadido el código para determinar los parámetros de los botones de función y "nativeOnTouch".
Ahora echemos un vistazo de cerca a los controladores de eventos "onKeyDown" y "onKeyUp".
Código :
. Método onKeyDown público (ILandroid / ver / KeyEvent Z
. Locales 6
. Parámetros "keyCode"
. Parámetros "evento"
. Prólogo
const / 4 v4, 0x1
const cadena v5, "__DBG__"
. Línea 923
const cadena v2, "__DBG__"
nueva instancia v2, Ljava / lang / StringBuilder;
invocar-directa {v2}, Ljava / lang / StringBuilder; -
const cadena v3, "Java onKeyDown ::===========================: keyCode:"
invocar virtual {v2, v3}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2, p1}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2}, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v2
invocar estática {v5, v2}, FCM gameloft / / android / Gand / GloftASCR / GLDebug; -> Información (Ljava / lang / String; Ljava / lang / String V
. Línea 925
sget v2, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> s_engineState: yo
si ne-v2, v4,: cond_2
. Línea 927
const / 4 v2, 0x4
si ne-p1, v2,: cond_0
. Línea 929
iget-objeto v2, p0, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - mVideoView>: Landroid / flash / VideoView;
invocar virtual {v2}, Landroid / flash / VideoView; - getCurrentPosition> () que
movimiento número v0
. Línea 933
. V0 local, act: Yo
const cadena v2, "__DBG__"
const cadena v2, "Java:: PLAY INTRO PRENSA VUELTA -> PAUSA Y VOLVER A CASA"
invocar estática {v5, v2}, FCM gameloft / / android / Gand / GloftASCR / GLDebug; -> Información (Ljava / lang / String; Ljava / lang / String V
. Línea 934
invocar virtual {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; -> PauseIntroVideo () V
. Línea 935
nueva instancia v2, Landroid / content / Intención;
const cadena v3, "android.intent.action.MAIN"
invocar-directa {v2, v3}, Landroid / content / Intención; -
const cadena v3, "android.intent.category.HOME"
invocar virtual {v2, v3}, el contenido Landroid / / Intención; - addCategory> (Ljava / lang / String Landroid / content / Intención;
movimientos en los resultados objeto v1
. Línea 936
. Locales v1, intentHOME: Landroid / content / Intención;
invocar virtual {p0, v1}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - startActivity> (Landroid / content / Intención V
. Línea 939
. Fin locales v0 actual #: Yo
. Fin locales v1 # intentHOME: Landroid / content / Intención;
: Cond_0
const/16 v2, 0x52
si ne-p1, v2,: cond_1
mover v2, v4
. Línea 964
: Goto_0
volver v2
. Línea 944
: Cond_1
invocar-super {p0, p1, p2}, aplicación Landroid / / de la actividad; - onKeyDown> (ILandroid / ver / KeyEvent Z
movimiento número v2
Ir a: goto_0
. Línea 955
: Cond_2
invocar estática {p1}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyDown> (I) V
. Línea 956
const/16 v2, 0x18
-eq si p1, v2,: cond_3
const/16 v2, 0x19
-eq si p1, v2,: cond_3
const/16 v2, 0x1b
si ne-p1, v2,: cond_4
. Línea 958
: Cond_3
const / 4 v2, 0x0
Ir a: goto_0
: Cond_4
mover v2, v4
. Línea 964
Ir a: goto_0
. Método de finalización
. Método onKeyUp público (ILandroid / ver / KeyEvent Z
. Locales 1
. Parámetros "keyCode"
. Parámetros "evento"
. Prólogo
. Línea 968
invocar estática {p1}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyUp> (I) V
. Línea 969
const/16 v0, 0x18
-eq si p1, v0,: cond_0
const/16 v0, 0x19
-eq si p1, v0,: cond_0
const/16 v0, 0x1b
si ne-p1, v0,: cond_1
. Línea 970
: Cond_0
const / 4 v0, 0x0
. Línea 971
: Goto_0
volver v0
: Cond_1
const / 4 v0, 0x1
Ir a: goto_0
. Método de finalización
Estos "canales" por medio de funciones "nativeOnKeyDown" y nativeOnKeyUp "transmite" al tratamiento de datos de juego de presionado y pulsa los botones, respectivamente.
Tenemos que añadir la función alternativa ("capa de función)
Código:
. Método estático privado OnKeyDownMod (I) V
. Locales 0
. Parámetro "c"
invocar estática {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyDown> (I) V
retorno vacío
. Método de finalización
. Método estático privado OnKeyUpMod (I) V
. Locales 0
. Parámetro "c"
invocar estática {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyUp> (I) V
retorno vacío
. Método de finalización
En los controladores ", onKeyDown", "onKeyUp" reemplazar la función llama "nativeOnKeyDown", "nativeOnKeyUp" nuestras funciones alternativas.
Código :
. Método onKeyDown público (ILandroid / ver / KeyEvent Z
. Locales 6
. Parámetros "keyCode"
. Parámetros "evento"
. Prólogo
const / 4 v4, 0x1
const cadena v5, "__DBG__"
. Línea 923
const cadena v2, "__DBG__"
nueva instancia v2, Ljava / lang / StringBuilder;
invocar-directa {v2}, Ljava / lang / StringBuilder; -
const cadena v3, "Java onKeyDown ::===========================: keyCode:"
invocar virtual {v2, v3}, Ljava / lang / StringBuilder; -> append (Ljava / lang / String Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2, p1}, Ljava / lang / StringBuilder; -> append (I) Ljava / lang / StringBuilder;
movimientos en los resultados objeto v2
invocar virtual {v2}, Ljava / lang / StringBuilder; - toString> () Ljava / lang / String;
movimientos en los resultados objeto v2
invocar estática {v5, v2}, FCM gameloft / / android / Gand / GloftASCR / GLDebug; -> Información (Ljava / lang / String; Ljava / lang / String V
. Línea 925
sget v2, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> s_engineState: yo
si ne-v2, v4,: cond_2
. Línea 927
const / 4 v2, 0x4
si ne-p1, v2,: cond_0
. Línea 929
iget-objeto v2, p0, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - mVideoView>: Landroid / flash / VideoView;
invocar virtual {v2}, Landroid / flash / VideoView; - getCurrentPosition> () que
movimiento número v0
. Línea 933
. V0 local, act: Yo
const cadena v2, "__DBG__"
const cadena v2, "Java:: PLAY INTRO PRENSA VUELTA -> PAUSA Y VOLVER A CASA"
invocar estática {v5, v2}, FCM gameloft / / android / Gand / GloftASCR / GLDebug; -> Información (Ljava / lang / String; Ljava / lang / String V
. Línea 934
invocar virtual {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; -> PauseIntroVideo () V
. Línea 935
nueva instancia v2, Landroid / content / Intención;
const cadena v3, "android.intent.action.MAIN"
invocar-directa {v2, v3}, Landroid / content / Intención; -
const cadena v3, "android.intent.category.HOME"
invocar virtual {v2, v3}, el contenido Landroid / / Intención; - addCategory> (Ljava / lang / String Landroid / content / Intención;
movimientos en los resultados objeto v1
. Línea 936
. Locales v1, intentHOME: Landroid / content / Intención;
invocar virtual {p0, v1}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - startActivity> (Landroid / content / Intención V
. Línea 939
. Fin locales v0 actual #: Yo
. Fin locales v1 # intentHOME: Landroid / content / Intención;
: Cond_0
const/16 v2, 0x52
si ne-p1, v2,: cond_1
mover v2, v4
. Línea 964
: Goto_0
volver v2
. Línea 944
: Cond_1
invocar-super {p0, p1, p2}, aplicación Landroid / / de la actividad; - onKeyDown> (ILandroid / ver / KeyEvent Z
movimiento número v2
Ir a: goto_0
. Línea 955
: Cond_2
invocar estática {p1}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> OnKeyDownMod (I) V
. Línea 956
const/16 v2, 0x18
-eq si p1, v2,: cond_3
const/16 v2, 0x19
-eq si p1, v2,: cond_3
const/16 v2, 0x1b
si ne-p1, v2,: cond_4
. Línea 958
: Cond_3
const / 4 v2, 0x0
Ir a: goto_0
: Cond_4
mover v2, v4
. Línea 964
Ir a: goto_0
. Método de finalización
. Método onKeyUp público (ILandroid / ver / KeyEvent Z
. Locales 1
. Parámetros "keyCode"
. Parámetros "evento"
. Prólogo
. Línea 968
invocar estática {p1}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; -> OnKeyUpMod (I) V
. Línea 969
const/16 v0, 0x18
-eq si p1, v0,: cond_0
const/16 v0, 0x19
-eq si p1, v0,: cond_0
const/16 v0, 0x1b
si ne-p1, v0,: cond_1
. Línea 970
: Cond_0
const / 4 v0, 0x0
. Línea 971
: Goto_0
volver v0
: Cond_1
const / 4 v0, 0x1
Ir a: goto_0
. Método de finalización
Dado que las funciones alternativas sin hacer nada, pero pide que el original "nativeOnKeyDown", "nativeOnKeyUp", el juego no cambió. Pero yo recomiendo el juego sigue de verificación para asegurarse de que nakosyachili nada.
Si todo está en orden, en las funciones alternativas añade el código necesario para emular la tapa de la pantalla.
En mi caso sería así:
Código :
. Método estático privado OnKeyDownMod (I) V
. Locales 5
. Parámetro "c"
. Prólogo
const/16 v4, 0x52
si ne-p0, v4,: cond_0
const / 4 v0, 0x0
const / 4 v1, 0x1
const/16 v2, 0x2F1
const/16 v3, 0x186
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
: Cond_0
invocar estática {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyDown> (I) V
retorno vacío
. Método de finalización
. Método estático privado OnKeyUpMod (I) V
. Locales 5
. Parámetro "c"
. Prólogo
const/16 v4, 0x52
si ne-p0, v4,: cond_0
const / 4 v0, 0x0
const / 4 v1, 0x0
const/16 v2, 0x2F1
const/16 v3, 0x186
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
: Cond_0
invocar estática {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyUp> (I) V
retorno vacío
. Método de finalización
Vamos a ver cómo estas funciones. Desde el principio, para comprobar qué botón se hizo clic, si el "menú", a continuación, toque en la pantalla emulando, si no, entonces simplemente transfiere la gestión de la función original. Si de repente alguien que no entendía de dónde vino el 0x52, 0x2F1 cifras, 0x186, ¿cuáles son nuestras opciones: 82 - código del botón, 753, 390 son las coordenadas de tapas, pero en hexadecimal.
Enhorabuena, lo hicimos Si usted nunca comete un error, entonces todo debería funcionar.
Nota
Usted nunca podrá hacer echa un vistazo a lo que el botón presionado, entonces el salto será a partir de cualquiera de los botones
Ejemplo
Código:
. Método estático privado OnKeyDownMod (I) V
. Locales 4
. Parámetro "c"
. Prólogo
const / 4 v0, 0x0
const / 4 v1, 0x1
const/16 v2, 0x2F1
const/16 v3, 0x186
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
. Método de finalización
. Método estático privado OnKeyUpMod (I) V
. Locales 4
. Parámetro "c"
. Prólogo
const / 4 v0, 0x0
const / 4 v1, 0x0
const/16 v2, 0x2F1
const/16 v3, 0x186
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
. Método de finalización
Usted todavía puede colgar el 2 de dos botones diferentes acciones diferentes.
Por ejemplo, un salto en el "menú" y el ataque al botón "atrás".
Código:
. Método estático privado OnKeyDownMod (I) V
. Locales 6
. Parámetro "c"
. Prólogo
const/16 v4, 0x52
const/16 v5, 0x4
si ne-p0, v4,: cond_0
const / 4 v0, 0x0
const / 4 v1, 0x1
const/16 v2, 0x2F1
const/16 v3, 0x186
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
: Cond_0
si ne-p0, v5,: cond_1
const / 4 v0, 0x0
const / 4 v1, 0x1
const/16 v2, 0x20E
const/16 v3, 0x18D
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
: Cond_1
invocar estática {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyDown> (I) V
retorno vacío
. Método de finalización
. Método estático privado OnKeyUpMod (I) V
. Locales 6
. Parámetro "c"
. Prólogo
const/16 v4, 0x52
const/16 v5, 0x4
si ne-p0, v4,: cond_0
const / 4 v0, 0x0
const / 4 v1, 0x0
const/16 v2, 0x2F1
const/16 v3, 0x186
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
: Cond_0
si ne-p0, v5,: cond_1
const / 4 v0, 0x0
const / 4 v1, 0x0
const/16 v2, 0x20E
const/16 v3, 0x18D
invocar estática {v0, v1, v2, v3}, FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed; - nativeOnTouch> (IIII) V
retorno vacío
: Cond_1
invocar estática {p0}, FCM gameloft / / android / Gand / GloftASCR / AssassinsCreed; - nativeOnKeyUp> (I) V
retorno vacío
. Método de finalización
En algunos juegos, de una función más bien "nativeOnTouch" utiliza un 3 "nativeTouchPressed", "nativeTouchMoved", "nativeTouchReleased", en este caso, "OnKeyDownMod" debe llamar "nativeTouchPressed", y "OnKeyUpMod" - "nativeTouchReleased". También tenga en cuenta que usted tiene un "espacio de nombres" "FCM / gameloft / android / Gand / GloftASCR / AssassinsCreed" será diferente.
*****************
Útiles
¿Qué sucede si el juego utiliza la caché de mal o no se inicia?
A veces esta situación, cuando el teléfono no es con apoyo oficial del juego, pero las razones para este juego no se iniciará - no. Y comienza, pero las texturas se muestran incorrectamente o no aparecen. El problema es que el juego no sabe el teléfono y cualquier teléfono desconocido piensa PowerVR. Compruebe si este es, simplemente, sólo archivo de sólo necesita "Build.prop", cambie el fabricante y el modelo de su teléfono, tales como "HTC Desire" y si el juego se ejecuta correctamente, entonces usted tiene una situación similar. Para resolver este problema, tenemos que hacer un teléfono desconocido se consideró "Boca de Dragón".
A continuación se escribe, en mayor medida, pertenece a la Gameloft Juegos.
Sin comprimir archivo AIC tenemos que encontrar 2 archivos "gi_settings.xml" y "datos.txt", por lo general se encuentran en la "res primas".
Haga clic en la "gi_settings.xml" en un editor de texto, debería ver como algo de contenido.
Código :
name="default">
Transportista>
name="sprint">
Transportista>
Los transportistas>
name="default">
Fabricante>
Dispositivo>
name="Samsung">
Fabricante>
Dispositivo>
name="SAMSUNG">
Fabricante>
Dispositivo>
name="samsung">
Fabricante>
Dispositivo>
name="motorola">
Fabricante>
Dispositivo>
name="samsung">
Modelo>
Fabricante>
Dispositivo>
name="htc">
Fabricante>
Dispositivo>
name="HTC">
Fabricante>
Dispositivo>
name="Htc">
Fabricante>
Dispositivo>
name="Sharp">
Fabricante>
Dispositivo>
name="SHARP">
Fabricante>
Dispositivo>
name="sharp">
Fabricante>
Dispositivo>
Ericsson">
Fabricante>
Dispositivo>
name="sony">
Fabricante>
Dispositivo>
name="LGE">
Fabricante>
Dispositivo>
name="lge">
Modelo>
Fabricante>
Dispositivo>
Dispositivos>
Configuración>
Este archivo está dada para cada modelo de teléfono, una memoria caché (formato de compresión de textura) para su uso. Etiqueta "
Como era de esperar, el dispositivo desconocido "PoverVR".
Código :
name="default">
Fabricante>
Y LG es un dispositivo "Tegra"
Código
name="LGE">
Fabricante>
Ahora está claro para el juego para empezar a considerar el dispositivo "Boca de Dragón", para sustituir todas las etiquetas "
Como resultado, usted debe tener
Código :
name="default">
Transportista>
name="sprint">
Transportista>
Los transportistas>
name="default">
Fabricante>
Dispositivo>
name="Samsung">
Fabricante>
Dispositivo>
name="SAMSUNG">
Fabricante>
Dispositivo>
name="samsung">
Fabricante>
Dispositivo>
name="motorola">
Fabricante>
Dispositivo>
name="samsung">
Modelo>
Fabricante>
Dispositivo>
name="htc">
Fabricante>
Dispositivo>
name="HTC">
Fabricante>
Dispositivo>
name="Htc">
Fabricante>
Dispositivo>
name="Sharp">
Fabricante>
Dispositivo>
name="SHARP">
Fabricante>
Dispositivo>
name="sharp">
Fabricante>
Dispositivo>
Ericsson">
Fabricante>
Dispositivo>
name="sony">
Fabricante>
Dispositivo>
name="LGE">
Fabricante>
Dispositivo>
name="lge">
Modelo>
Fabricante>
Dispositivo>
Dispositivos>
Configuración>
En principio esto es suficiente, pero todavía se puede, por si acaso, datos.txt "correcto y".
Código
PVRT: http://dl.gameloft.c...L_PVRTC_104.zip
ATC: http://dl.gameloft.c...NAL_ATC_104.zip
DXT: http://dl.gameloft.c...NAL_DXT_104.zip
Se especifica que la caché de usar y dónde está, para cada tipo de acelerador. Dirección de la 2 ª línea, se copia en la 1 ª y 3 ª.
Código
PVRT: http://dl.gameloft.c...NAL_ATC_104.zip
ATC: http://dl.gameloft.c...NAL_ATC_104.zip
DXT: http://dl.gameloft.c...NAL_ATC_104.zip
Así, destacamos el juego, por lo que no depende del tipo de acelerador de para "snapdragon".
Después de eso, el juego debe funcionar correctamente. Por cierto, siempre desconcertante por qué la expansión 10 veces la memoria caché en el marco del "Boca de Dragón", con los títulos "de fondos para el deseo", "El deseo de fondos para z", "El deseo de fondos para HD" si son los mismos? Por otra parte, en los juegos por lo general hay sólo tres tipos de cachés, para los aceleradores de vídeo diferentes. Esto se asegurará de que usted puede buscar un archivo "datos.txt".
Si el juego no se inicia
A veces más para que el juego no se inicia, pero las razones objetivas para ello. Por otra parte, si el modelo correcto del dispositivo en "juego comienza build.prop". Esto significa que en alguna parte del código del juego es el control de la modelo y fabricante del teléfono, lo que resultó en el juego simplemente se cierra. Es evidente que para resolver este problema es necesario para hacer el juego que ella se los dispositivos adecuados. Por ejemplo, en "HTC Desire", si es, por supuesto, respaldada por el juego. Con la ayuda de búsqueda a través de todos los "*. smali" archivo y encontrar a los que cumplan el código "Landroid / os / Construcción; -> FABRICANTE: Ljava / lang / String" o "Landroid / os / Construcción; - MODELO>: Ljava / lang / String ". Así nos encontramos con la definición del código de modelo y fabricante del teléfono.
Código :
objeto sget-v0, Landroid / os / Construcción; -> FABRICANTE: Ljava / lang / String;
objeto sget-v1, Landroid / os / Construcción; -> MODELO: Ljava / lang / String;
Tenemos que ser sustituido por
Código :
const cadena v0, "HTC"
const cadena v1, "HTC Desire"
(Variables v0, v1-enumeran a título de ejemplo, en su caso, pueden ser diferentes)
Y así con todos los archivos encontrados.
Además de la modelo y fabricante del teléfono de la misma manera en el juego también se puede comprobar la versión del firmware, o un androide, y si interfiere con el lanzamiento del juego, estas inspecciones que se proceda de manera similar.
Análisis del paquete de software
Analizar archivos de código de bytes-java "*. smali", la ocupación más complicado y un poco de dulce. Pero hay una forma en que puede descompilar APK-archivo y obtener el código fuente de Java. Si bien estas fuentes y no son adecuados para la compilación, pero un estudio del programa de hacer más fácil a veces. Para ello necesitamos dos programas dex2jar y JD gui- , deben ser extraídos a las carpetas arbitrarias. A continuación, utilizando el archivador con Guinea APK-archivo para extraer y copiar la carpeta con el "dex2jar" archivo "classes.dex". Desde el símbolo del sistema, ejecute el comando "classes.dex dex2jar.bat", como resultado de los últimos en la carpeta "dex2jar" obtener el archivo "classes.dex.dex2jar.jar". Ahora ejecute el programa "jd-gui" en su apertura, obtenidos anteriormente, el archivo "classes.dex.dex2jar.jar".
El resultado es un código legible por Java.
Si como al final de leer y comprender lo antes descripto os felicito son técnicos nucleares…
Espero les haya sido útil, aunque sea para saber como funciona el hexadecimal de android y ver la infinidad de posibilidades que tiene.
Se que es difícil todo esto pero funciona yo e hecho con otra gente variaciones para juegos que estamos asiendo nosotros y esto nos sirvió bastante.
Sin más me despido hasta pronto, hasta el próximo post.
huawei :: Principal :: Tutoriales
Sáb Mar 26, 2016 5:02 am por aldo
» rootear huawei u 8650
Dom Mar 20, 2016 1:27 pm por dchacon
» Huawei ascend P1
Jue Jul 23, 2015 8:09 am por LESLIE MEDINA
» No funciona el auricular
Mar Jul 07, 2015 4:24 pm por sirenm
» AYUDA para instalar el IDIOMA ESPAÑOL
Jue Jul 02, 2015 10:11 am por Gerardo Nava
» Cambiar idioma
Vie Jun 19, 2015 10:33 am por jose sanchez
» problemas huawei p6
Mar Jun 16, 2015 9:34 pm por jorgesg
» Problemas con la camara, el calendario y la linterna
Dom Jun 07, 2015 6:40 pm por betblas
» Huawei y220-u00
Miér Jun 03, 2015 11:23 pm por yeider