Acerca de los Parches

La funcionalidad de aplicar Parches está soportada en APK Editor Pro desde la versión 1.6.0. En general, un parche consiste en un archivo Zip que consta del archivo 'patch.txt' junto con otros archivos adicionales que son necesarios. El archivo 'patch.txt' en el interior del Zip contiene el código que especifica las distintas Reglas de Parcheado del parche en cuestión. El resto de los archivos del mencionado Zip son los recursos necesarios para la modificación que se desea realizar a una determinada aplicación.

Sin embargo, esta funcionalidad aún no tiene la madurez suficiente y es posible que los resultados no sean plenamente satisfactorios. Así que, por favor, sea muy cuidadoso cuando lo combine con otras modificaciones.

No obstante, existe ya un Editor de Parches (es un proyecto de Código Abierto) disponible en: https://github.com/SnowVolf/PCompiler

Formato de los Parches

Un Parche se compone principalmente de las Reglas de Parcheado. Actualmente, están soportadas las siguientes 8 Reglas:

· ADD_FILES

· REMOVE_FILES

· MATCH_REPLACE

· MATCH_ASSIGN

· MATCH_GOTO

· GOTO

· MERGE

· DUMMY

En una Regla, cada línea que comience con el signo ‘#’ significa que es una línea de comentario. Y cada configuración de cada paso debe escribirse en una nueva línea de código.

Por favor; revise atentamente las siguientes ilustraciones y ejemplos para tener una noción básica de cómo crear un archivo 'patch.txt'. APK Editor Pro también le provee de algunos ejemplos prácticos de distintos parches que puede Ud. guardar para echarles un vistazo a su interior, lo que le ayudará a comprender mejor su estructura y funcionamiento.

[ADD_FILES] (Añadir Archivos)

Se utiliza para añadir archivos a la aplicación que se pretende modificar.

NAME (Nombre): Especifica el Nombre de la Regla.

SOURCE (Orígen): Especifica el Nombre del Archivo en el interior del Zip para ser copiado a la aplicación que se pretende modificar.

TARGET (Destino): Especifica la Ruta de Destino dentro de la aplicación que se pretende modificar.

[REMOVE_FILES] (Eliminar Archivos)

Se utiliza para Eliminar archivos o carpetas de la aplicación sobre la que se está trabajando.

NAME (Nombre): Especifica el Nombre de la Regla.

TARGET (Destino): Especifica la Ruta de Destino a eliminar dentro de la aplicación en la que se está trabajando. Si se debieran eliminar varios archivos a la vez, será necesario proveer abajo los nombres de todos los archivos o carpetas, y cada nombre debe colocarse en una nueva línea.

Por ejemplo:

[REMOVE_FILES]

TARGET:

res/values-ru

res/values-hz

res/values​​/strings.xml

[/REMOVE_FILES]

[MATCH_REPLACE] (Buscar y Reemplazar)

Se utiliza para Buscar y Reemplazar el resultado encontrado.

Nombre: Especifica el Nombre de la Regla. (Puede dejarse en blanco, pero si se desea saltar a esta Regla desde otras ubicaciones, es necesario especificar el nombre.)

TARGET (Destino): Especifica la Ruta del Archivo para realizar la operación de buscar y reemplazar.

MATCH (Coincidencia): Especifica el Texto que se desea encontrar.

REGEX (Expresión Regular): Verdadero o Falso. Verdadero significa que la cadena coincidente es una Expresión Regular.

REPLACE (Reemplazar): Especifica el Texto que reemplazará al resultado encontrado. (Dejarlo en blanco significa eliminar el resultado encontrado.)

[MATCH_ASSIGN] (Definición de Variables)

Se emplea para definir variables.

Nombre: Especifica el Nombre de la Regla. (Puede dejarse en blanco, pero si se desea saltar a esta Regla desde otras ubicaciones, es necesario especificar el nombre.)

TARGET (Destino): Especifica la Ruta del Archivo para la operación de coincidencia.

MATCH (Coincidencia): Especifica el Texto que se desea encontrar.

REGEX (Expresión Regular): Verdadero o Falso. Verdadero significa que la cadena coincidente es una Expresión Regular.

ASSIGN (Asignar): Especifica el Nombre y el Valor de la variable. (Por ejemplo: p1 = $ {GROUP1}) Si hubiera más de una variable, entonces cada siguiente variable debe colocarse en una nueva línea.

[MATCH_GOTO] (Coincidir e Ir)

Se utiliza para buscar un texto en los archivos especificados, y en caso de encontrarse, se irá a ejecutar la Regla escrita en el campo "GOTO".

Si el texto buscado no se encontrara, entonces se ejecutará la siguiente Regla que estuviera disponible a continuación.

Nombre: Especifica el Nombre de la Regla.

TARGET (Destino): Especifica la Ruta del Archivo donde debe realizarse la operación de buscar coincidencias.

MATCH (Coincidencia): Especifica el Texto que se desea encontrar.

REGEX (Expresión Regular): Verdadero o Falso. Verdadero significa que la cadena coincidente es una Expresión Regular.

GOTO (Ir a...): Especifica el Nombre de la siguiente Regla. Si el resultado de la búsqueda es satisfactorio, entonces se ejecutará esa Regla.

[GOTO] (Redireccionar a una Determinada Regla.)

Se utiliza para Redireccionar hacia otra Regla.

GOTO (Ir a...): Especifica el Nombre de la siguiente Regla.

[MERGE] (Enlazar Recursos)

Se trata de una potente Regla que fusionará el recurso especificado con los de la aplicación que se pretende modificar. Esto significa que el recurso se añadirá junto con la refactorización de ID's para evitar conflictos entre recursos.

NAME (Nombre): Especifica el Nombre de la Regla.

SOURCE (Orígen): Nombre de archivo del Recurso que se fusionará.

[DUMMY] (Regla Falsa)

Más que una Regla en sí, es como una etiqueta que sólo contiene el campo NOMBRE. Desde la Regla “MATCH_GOTO” o “GOTO” se podría saltar a una Regla que no es tal.

A continuación, vea varios sencillos ejemplos:

# Versión Mínima Requerida del Motor de Parcheado: 1(APK Editor v1.6.0->v1.6.7) 2(APK Editor v1.6.8+)

[MIN_ENGINE_VER]

1

# Autor/ Creador del Parche.

[AUTHOR]

apkeditor

# Nombre del Paquete al que se destina el Parche.

[PACKAGE]

example_packagename.apk

# Añadir Archivos a la Ruta de Destino.

[ADD_FILES]

SOURCE:

layout.zip

TARGET:

res/layout

EXTRACT:

true

[/ADD_FILES]

# Eliminar Archivos (Pueden proveerse múltiples rutas de destino)

[REMOVE_FILES]

TARGET:

res/values-xx

res/values-yy

[/REMOVE_FILES]

# Reemplazar el contenido coincidente dentro de un Archivo de Destino. Sea cuidadoso cuando resulte REGEX=true (verdadero).

# Todas las coincidencias encontradas serán reemplazadas.

# Si REGEX=true (verdadero), el contenido MATCH (coincidente) debe estar colocado en una sola línea.

# El siguiente ejemplo eliminará el Permiso de Internet.

[MATCH_REPLACE]

TARGET:

AndroidManifest.xml

MATCH:

<uses-permission android:name="android.permission.INTERNET" />

REGEX:

false

REPLACE:

[/MATCH_REPLACE]

# MERGE está diseñado para fusionar recursos y código desde otro APK.

#

# Fusionar recursos y archivos Smali situados dentro de un archivo Zip adicional (extra.zip).

# res/values/public.xml debe proveerse dentro del Zip adicional (extra.zip).

# El Motor de Parcheado intentará refactorizar todos los ID's añadidos.

# Los ID's añadidos deben ser distintos de los ID's que ya existan actualmente.

[MERGE]

SOURCE:

extra.zip

[/MERGE]