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]