Was ist das Applypatch-Tool und wie verwendet man es?

Ich bin kürzlich auf das applypatch-Tool gestoßen, konnte aber online keine Dokumentation dafür finden. Hier ist die Nutzungsausgabe (dies ist nach der Eingabe von 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.

Was bedeuten die Kommandozeilenoptionen? Was ist MTD? Wozu dienen all die sha1-Hashes?

Könnte jemand mit dem Ruf auch ein applypatch-Tag oder vielleicht ein Tools-Tag hinzufügen? Etwas aussagekräftiger als das, was ich gesetzt habe.

Das ist eher eine entwicklungsorientierte Frage, würde ich sagen? Was MTD betrifft, siehe Wikipedia .
Ich würde nicht sagen, dass es entwicklungsorientiert ist. Ich habe mir nur einen Code angesehen, den jemand geschrieben hatte, um auf einem Gerät ausgeführt zu werden, applypatchund war neugierig, wie er funktioniert.
Lesen Sie einfach die Quellen :-). Tatsächlich ist dieser Befehl wirklich wichtig, wenn Sie an einem fehlerhaften OTA-Update leiden (kann an nicht genügend Speicherplatz liegen) und Ihr Anbieter nur ein inkrementelles OTA-Update bereitstellt.

Antworten (3)

diffund patchsind Unix/Linux-Befehle, die verwendet werden, um leicht nach Unterschieden zu suchen, Updates an große Dateien zu senden, indem nur die Unterschiede versendet werden usw. (siehe Wikipedia ). Sie werden hauptsächlich in der Entwicklung (zur Aktualisierung des Quellcodes) verwendet, können aber auch praktischen Zwecken in Nicht-Entwicklungsumgebungen dienen.

applypatchist eines dieser Patch-Tools auf Android und wird zB für kleinere Updates (OTA und dergleichen) verwendet. Es ist also höchstwahrscheinlich nicht für den "normalen Endverbraucher" gedacht, sich direkt damit auseinanderzusetzen.

Der Befehl applypatch wird tatsächlich für das OTA-Patching verwendet. Als Beispiel habe ich die update.zip für mein VZW SCH-I915-Tablet bereitgestellt ... in meinem Fall möchte ich nicht zulassen, dass dieses OTA-Update stattfindet, also möchte ich /system/build.prop auf patchen täuschen Sie das Gerät vor, dass es bereits getan wurde. In der update.zip-Datei gibt es eine „updater-script“-Datei, die die Patches detailliert beschreibt. Die, die ich suchte, war:

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

Ich habe die entsprechende Patch-Datei auf meine SD-Karte extrahiert. Dann wird die Syntax zum Ausführen dieser Aktion auf einer sekundären Kopie von build.prop, die ich erstellt hatte (damit ich die Ausgabe vor dem Kopieren in /system überprüfen konnte), folgendermaßen geändert:

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

... die dieselbe build.prop-Datei erstellt hätte, die ich erhalten hätte, wenn ich dem OTA erlaubt hätte, fortzufahren. Ich hoffe das hilft.

Applypatch ist ein Dienstprogramm, das einen binären Patch auf eine Datei anwendet. Auf einigen Systemen wird die Wiederherstellungspartition beispielsweise erstellt, indem ein binärer Patch auf die Bootpartition angewendet wird (die beiden sind nahezu identisch und es ist einfacher, einen Patch als die gesamte Binärdatei während eines Upgrades zu packen).

Die typische Verwendung besteht darin, applypatch während der Startzeit auszuführen. Applypatch wird mit der Option -c (check) ausgeführt, die Speicherpartition, Größe und Hash angibt. Diese Argumente bestimmen, ob der Patch bereits angewendet wurde (wenn der Hash übereinstimmt, wurde er angewendet). Wenn der Patch nicht angewendet wurde, applybatch -bwird dann ausgeführt, um den Patch tatsächlich anzuwenden.

Optionen sind:

-c Datei [ sha ...]

Bestätigen Sie, dass die Datei existiert und mit mindestens einem der SHAs übereinstimmt. Der SHA kann auch als Teil des Dateinamens kodiert werden; nützlich, wenn der Dateiname eine Partition angibt. Eine Erklärung finden Sie im Quellcode. Wenn ein Dateiname mit MTD: oder EMMC: beginnt, bezieht er sich auf eine Partition statt auf eine normale Datei.

[-b Bonusdatei ] Quellziel Ziel -sha1 Zielgröße Quelldatei sha1:Patchdatei

Wendet den Patch in patchfile auf die Datei src an und erstellt target . target-sha1 und target-size werden verwendet, um zu bestätigen, dass der Patch erfolgreich war. src und target können Speicherpartitionen sein, zB Boot und Recovery. Wenn -b vorhanden ist, gibt es eine ZIP-Datei mit zusätzlichem Material an.

-s Bytes

Beenden Sie den Vorgang mit Rückkehrcode 0, wenn im Cache mindestens Byte -Speicherplatz verfügbar ist.

-l

Zeigen Sie die BSD-Lizenz an und beenden Sie sie