¿Qué es la herramienta applypatch y cómo se usa?

Recientemente me topé con la herramienta applypatch, pero no pude encontrar ninguna documentación en línea. Aquí está la salida de uso (esto es después de escribir adb shell)

shell@android:/ $ applypatch --help                                            
usage: applypatch [-b <bonus-file>] <src-file> <tgt-file> <tgt-sha1> <tgt-size> [<src-sha1>:<patch> ...]
   or  applypatch -c <file> [<sha1> ...]
   or  applypatch -s <bytes>
   or  applypatch -l

Filenames may be of the form
  MTD:<partition>:<len_1>:<sha1_1>:<len_2>:<sha1_2>:...
to specify reading from or writing to an MTD partition.

¿Qué significan las opciones de la línea de comandos? ¿Qué es MTD? ¿Para qué sirven todos los hashes sha1?

Además, ¿podría alguien con la reputación agregar una etiqueta applypatch, o tal vez una etiqueta de herramientas? Algo más descriptivo de lo que he puesto.

Esta es más bien una pregunta orientada al desarrollo, diría yo. En cuanto a MTD, consulte Wikipedia .
Yo no diría que está orientado al desarrollo. Estaba mirando un código que alguien había escrito para ejecutarlo en un dispositivo y lo vi applypatchy tenía curiosidad por saber cómo funcionaba.
Solo lee las fuentes :-). En realidad, este comando es realmente importante si sufre una actualización OTA rota (puede deberse a que no hay suficiente espacio) y su proveedor proporciona solo una actualización OTA incremental.

Respuestas (3)

diffy patchson comandos de Unix/Linux que se utilizan para verificar fácilmente las diferencias, enviar actualizaciones a archivos grandes enviando solo las diferencias, etc. (ver Wikipedia ). Se utilizan principalmente en el desarrollo (para actualizar el código fuente), pero también pueden tener fines prácticos en entornos que no son de desarrollo.

applypatches una de esas herramientas de parches en Android y se usa, por ejemplo, para actualizaciones menores (OTA y similares). Por lo tanto, lo más probable es que no esté destinado a que el "usuario final normal" lo trate directamente.

De hecho, el comando applypatch se usa para la aplicación de parches OTA. Como ejemplo, tengo el update.zip provisto para mi tableta VZW SCH-I915... en mi caso, no quiero permitir que ocurra esta actualización OTA, así que deseo parchear /system/build.prop para engañar al dispositivo para que piense que ya se ha hecho. Dentro del archivo update.zip, hay un archivo 'updater-script' que detalla los parches. El que buscaba era:

apply_patch("/system/build.prop", "-", db0889f98b62e625283e5273bf35d790532b10bd, 5934, 7a52fd5ec0d5afcbaf159c330374dfb0c5cbc159, package_extract_file("patch/system/build.prop.p"));

Extraje el archivo de parche apropiado a mi tarjeta SD. Luego, la sintaxis para realizar esta acción en una copia secundaria de build.prop que hice (para poder verificar la salida antes de copiar en / system) se modifica así:

/system/bin/applypatch "/mnt/sdcard/build.prop" "-" "db0889f98b62e625283e5273bf35d790532b10bd" "5934" 7a52fd5ec0d5afcbaf159c330374dfb0c5cbc159:/mnt/sdcard/build.prop.p

... que creó el mismo archivo build.prop con el que habría terminado si hubiera permitido que la OTA continuara. Espero que esto ayude.

Applypatch es una utilidad que aplica un parche binario a un archivo. Por ejemplo, en algunos sistemas, la partición de recuperación se crea aplicando un parche binario a la partición de arranque (los dos son casi idénticos y es más fácil empaquetar un parche que el binario completo durante una actualización).

El uso típico es ejecutar applypatch durante el tiempo de arranque. Applypatch se ejecuta con la opción -c (marcar) que especifica la partición de almacenamiento, el tamaño y el hash. Estos argumentos determinan si el parche ya se aplicó (si el hash coincide, entonces se aplicó). Si el parche no se aplicó, entonces applybatch -bse ejecuta para aplicar realmente el parche.

Las opciones son:

-c archivo [ sha ...]

Confirme que el archivo existe y coincide con al menos uno de los SHA. El SHA también se puede codificar como parte del nombre del archivo; útil cuando el nombre del archivo especifica una partición. Consulte el código fuente para obtener una explicación. Si un nombre de archivo comienza con MTD: o EMMC:, entonces se refiere a una partición en lugar de a un archivo normal.

[-b bonusfile ] src target target-sha1 target-size src-sha1:patchfile

Aplica el parche en patchfile al archivo src , creando target . target-sha1 y target-size se utilizan para confirmar que el parche fue exitoso. src y target pueden ser particiones de almacenamiento, por ejemplo, boot y recovery. Si -b está presente, especifica un archivo zip con material adicional.

-s bytes

Salga con el código de retorno 0 si hay al menos espacio de bytes disponible en la memoria caché.

-l

Mostrar la licencia BSD y salir