Wenn das Update hängt - Editieren der updater-script

D

daddle

Enthusiast
656
Bei einigen kommt es vor, dass durch Löschen im System-Bereich (Apps) oder Installation von Xposed und entsprechender Module das Update nicht durchläuft, sondern beim Sicherheitscheck hängen bleibt.
Das passiert wenn die Zieldateien fehlen, die einen Patch kriegen sollen, oder bei unsachgemässem Restoren eines Backups, oder Zurückschreiben der build.prop aus einer älteren Version von vor dem Update. Wegen der release-keys in der build.prop versucht dann das Tab das Update #1 erneut zu installieren, was dann aber wiederum an den für das Update fehlerhaften MD-Checksums der Dateien hängen bleibt.

Hat man kein ordentliches Backup oder es wird nicht korrekt restored, müsste man eine neue FW aufspielen, die wir aber nicht haben.

Ein Ausweg bietet das uns durch das Rooten bekannte temporäre CWM, mit dem man die update.zip ohne die Sicherheitschecks des regulären Ota-Update-Verfahren flashen kann.

Wenn es also beim regulären Update-Versuch eine Fehlermeldung ausgibt (aufschreiben!), kann man die korrespondierende Prüfzeile, z.B.
"assert(apply_patch_check("/system/app/PlayGames.apk", "65efc4e4086efb7d35cbc6b8acacbfa08a888ece", "99f697c3ac007618f9cefe93b02d4fe2a817f658"));
in der entpackten update.zip löschen, den nächsten Durchlauf mit CWM starten und den nächsten Fehler entsprechend den noch weiter auftretenden Fehlermeldungen korrigieren.

Auch die Versuche, fehlende Dateien (apk und odex-files) durch versions-gerechte Kopien von anderen Usern zu ersetzen führte nicht immer zum Erfolg, warum auch immer. Besonders kritisch nach Xposed, da dies wohl auch die framework's verändert, also tief ins System eingreift, oder/und die build.prop betroffen ist. Die build.props 1-3 gibt es hier

Da viele User aber Probleme mit dem Editieren der updater-script aus der entpackten Update.zip haben, gebe ich hier eine Anleitung die das ganze vereinfacht und die Fehler durch ungewollte Struktur-Veränderung (Syntax, Formatierung) der entpackten updater-script minimiert.

Inwieweit das Tab danach noch ungestört läuft kann je nach Anzahl der vorherigen Löschaktionen, auch evtl. wichtiger System-Bestandteile, nicht garantiert werden. Aber wenn es vorher mit den Löschungen bzw. ohne die gelöschten Anteile problemlos lief, sollte es in den meisten Fällen nach dem Update über CWM unter Ausschluss der Sicherheits-Checks auch so sein.


Anleitung zum schnellen und sicherem Editieren der updater-script

Entscheidend ist, dass man dafür die updater-script mehrfach, je nach Anzahl der Fehler, editieren und jedesmal das Update neu starten musst, damit sich der nächste Fehler zeigt.

Um die Datei schnell und problemlos zu bearbeiten, installiert euch in Windows den Total Commander, und den notepad++ Editor (aus dem Web).

Damit in Total Commander (TC) der notepad++ als Standard-Editor genommen wird, in dem TC Karteireiter -> Konfigurieren -> Einstellungen -> Operation -> Viewer/Editor wählen und rechts unter "Editor für F4" den Pfad zum installierten Notepad++ Editor eintragen. Meistens: C:\Program Files (x86)\Notepad++\notepad++.exe. Über den Doppel-Pfeil-Button zum Installationsort hinführen! Mit dem "Anwenden" Button übernehmen und mit OK rausgehen

Hört sich alles etwas umständlich an, vereinfacht aber die mehrfache Fehlersuche in der updater-script sowie das mehrfache Korrigieren, Entpacken und Zurückpacken der Datei enorm. (über den Editor-Aufruf mit F4)

Man muss also die assert(apply_patch_check ... Zeile löschen, die zu der Update-Fehlermeldung passt, z.B:
-> "assert failed:apply_patch_check("/system/framework/core.odex" in dem Fall die Zeile mit
-> "assert(apply_patch_check("/system/framework/core.odex", und die daneben stehenden Zahlenschlüssel bis zum doppelten )); mit dem Semikolon löschen;
nicht die darunter stehende set_progress-Zeile.

Sollte die framework/core.odex gelöscht sein kann man versuchen sich diese Versions gerecht von jemandem hier hochladen zu lassen, einzukopieren und die Permissions zu setzen. Mit TC for Android -> Eigenschaften der Datei -> [UID 0 root GID: 0 root Benutzerrechte -rw-r--r--(644)] Und damit erst mal versuchen.

Der Pfad zur updater-script ist in diesem Pfad wenn man sie z.B. so gespeichert hast:
Code:
c:\Lifetab_P8912\ota-141205-150319.zip\META-INF\com\google\android\updater-script
Dazu im Total Commander durch mehrfaches Doppel-Klicken auf die Update.zip dem Pfad folgen bis man die updater-script sieht und diese durch Rechtsklick rot markieren; mit dem Editor notepad++ durch Aufruf mit F4 öffnen, die Abfrage ob man sie unter der gepackten Datei bearbeiten will mit Ja bestätigen, oben den Karteireiter "Suchen" wählen dann "Suchen" anklicken und ins Suchfeld core.odex eingeben, evtl. weitersuchen anklicken, bis die Zeile
-> "assert(apply_patch_check("/system/framework/core.odex", schwarz markiert, erscheint, diese dann löschen wie oben beschrieben.

Dann nach jeder Zeilen-Löschaktion li. oben im Editor Karteireiter -> Datei -> Speichern wählen, dann wird die Änderung in der updater-script gesichert. Editor schliessen.

Danach die zip wieder packen indem man sich im Verzeichnis nach oben zurück hangelt, dabei kommt die Abfrage ob man die geänderte Datei in der Zip speichern will -> mit ja bestätigen.

Dann das Update damit neu starten, dafür am besten die update.zip mit der korrigierten updater-script ins Wurzel-Verzeichnis der externen sdcard oder des internen Speichers kopieren.

Zum Kopieren die MTP-Verbindung nehmen -> Tab über USB verbunden -> im TC -> Karteireiter Befehle -> Öffne Desktop-Verzeichnis -> im entsprechenden Commander-Fenster -> Doppelklick auf Computer ->
Doppelklick auf Lifetab_P8912 -> SD-Karte (ext.sdcard) -> die vom vorherigen Schritt vorhandene Update.zip löschen -> aus dem zweiten Commander-Fenster die aktuell bearbeitete ota-150224-150320.zip ins Wurzel-Verzeichnis kopieren.

Die launcher.bat für's temporäre CWM aufrufen, im CWM-Menü -> install zip -> choose zip from external sdcard -> seine bearbeitete Update.zip auswählen.

Dann die nächste kommende Fehlermeldung entsprechend korrigieren, immer wieder Update starten usw, bis keine Fehlermeldung mehr kommt.

Andere Fehlermeldungen, z. B. zur build.prop, hier posten, Download der passenden build.props.

Dies ist die von mir erweiterte und userfreundlich gemachte Anleitung um durchs Rooten bzw den dadurch ermöglichten Änderungen in der /system die danach geänderte /system soweit möglich wiederherzustellen, damit das OTA-Update durchlaufen kann.

Hiernach ist keine Rück-Komprimieren mit 7z nötig, da wir mit TC und Notepad++ Editor direkt nur in der temporär entpackten updater-script arbeiten und diese wird beim Verlassen mit den gesicherten Veränderungen automatisch zurückgezippt.

Aber kopiert die originale Update.zip zusätzlich an einen sicheren Ort, falls man sich beim Bearbeiten der zip mal vertut.

daddle
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Gekish und -MaD-
Wow, vielen Dank für die genaue und ausführliche Anleitung.
Toll, dass du dir diese Arbeit gemacht hast.
Danke auch an diese tolle Gemeinschaft... "Android Hilfe" war hier wirklich mal Programm und gemeinsam sind hier einige Mitglieder auf die Lösung des Problems gekommen! Ich bin froh, auch mal einen kleinen Beitrag geleistet zu haben.
Gruß MaD
 
  • Danke
Reaktionen: daddle
Vielen Dank, bis jetzt hat es wunderbar funktioniert. Würde dieser Lösung auch beim Update auf Android 5 helfen? Danke!
 
Bei und während des Updates KK > Lollipop vermutlich ja, die Installation klappt, aber ob Lollipop hinterher auch läuft und keinen Bootloop macht ist sehr fraglich.
Spätestens bei Updates in Lollipop zu Lollipop wird es dann Probleme geben. Lollipop ist bei Updates auf eine intakte originale /system angewiesen.

Hast du bei dem P8912 mit KitKat Veränderungen in der System gemacht, und hast du noch das KItKat-Backup dann siehe nächsten neuen Absatz.

Neu: Mitllerweile gibt es ein Recovery-Paket auch für das P8912, Dann dieses KitKat-Rom Flashen, und danach aus dem KitKat-CWM-Backup nur die Daten über "advanced restore from external sdcard" > Backup auswählen > Data auswählen. Ist der sicherere Weg als ein komplettes Backup zu restoren.

Dann erst das Update auf Lollipop 5.02 machen, und danach erst evtl. erneut Rooten und deine Modifikationen machen.

Wenn du aber in Lollipop mit Root in der - /system ausser Root andere Veränderungen/Löschungen machst, wird danach das nächste kommende Update sicher scheitern, unabhängig davon ob du vorher entrootest (siehe weiter unten).
Man bräuchte also auch ein Recovery-Paket für Lollipop, was auch irgendwann kommen soll.

Man kann aber in Lollipo über die App SuperSU in den > App-Einstellungen > Bereinigung > Vollständiges Un-Root in Lollipop Root entfernen, nach Rebooten dann das nächste Update in Lollipop machen. Ein Update in Lollipop zu Lollipop funktioniert auf diese Weise. Das habe ich bereits mehrfach erfolgreich so gemacht

Hat man aber schon in KitKat in der /system Veränderungen und Löschungen vorgenommen (Xposed, System-Apps gelöscht, usw), dann erst das KitKat-Recovery-Paket flashen um das System wiederherzustellen und evtl. die Daten aus einem KitKat-Backup einspielen, dann die OTA's auf Lollipop.
Hat man in Lollipop Veränderungen in der /system (Löschungen in der System, Xposed ) gemacht, wird beides in Lollipop Probleme bis zum Nicht Starten nach einem neuem Update machen. Also auch dann zurück auf KitKat.

Für das P891X und das S1034X kann man das originale KitKat-Rom mit dem jeweils passenden RecoveryPaket wiederherstellen, dann aus einem CWM-Backup mit advanced restore nur die /data (deine Daten) wiederherstellen (funktioniert so nur in KitKat). Dann die OTA's auf Lollipop 5.02 durchlaufen und danach erst evtl. erneut rooten.

daddle

Edit: Mittlerweile ist auch das KK-Recovery-Paket für das P8912 zum Download veröffentlicht worden auf dem Medion-Service-Portal eures Tabs unter Software!

Beitrag erneut aktualisiert.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Gekish
Ich habe tatsächlich einige Apps aus dem System-Bereich gelöscht und leider ohne vorher eine Sicherung zu machen. Bei update auf lolilop kommt die Fehlermeldung "Chrom Browser.app" sei nicht vorhanden.
Gibt es eine Möglichkeit originale Software wieder einzuspielen oder Wiederherstellen (wie gesagt, backup ist nicht vorhanden )?

Vielen Dank, daddle!
Ich bin beeindruckt davon wie jedem hier geholfen wird
 
@Gekish

Siehe mein Edit in meinem letzten Post. Viel Erfolg.
 
  • Danke
Reaktionen: Gekish
Moin
Bin hier mal drüber gestolpert.
Ich frage mich auf welcher Programiersprache dies basiert.
Ich würde gerne mehr lernen. Vielleicht kann mir jemand helfen
 
@störte
Was soll bitte auf einer Programmiersprache basieren? Das solltest Du schon genauer und mit richtigem Bezug formulieren.
Denn mein OT (first post) und die Anleitung basiert auf deutscher Sprache.
 

Ähnliche Themen

DJ E-REX
Antworten
3
Aufrufe
2.082
daddle
D
D
  • daddle
Antworten
0
Aufrufe
3.105
daddle
D
D
  • daddle
Antworten
6
Aufrufe
4.066
daddle
D
Zurück
Oben Unten