1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

HOW TO CWM update zips erstellen

Dieses Thema im Forum "Root / Hacking / Modding für Lenovo IdeaPad A1" wurde erstellt von anddior, 06.07.2012.

  1. anddior, 06.07.2012 #1
    anddior

    anddior Threadstarter Android-Lexikon

    Beiträge:
    1,000
    Erhaltene Danke:
    370
    Registriert seit:
    29.11.2011
    TEIL 1 (löschen)

    Ein super Vorteil etwas aus CWM zu erledigen ist das eure Android System zu diesem Zeitpunkt nicht hochgefahren ist.
    Demensprechend ist es fast alles möglich ohne das A1 etwas meckert.

    Für Anfang möchte ich zeigen wie einfach man etwas aus A1 löschen kann.

    ich habe für diese Zweck eine zip Datei vorbereitet:

    A1_deleteSomething.zip

    Diese zip Datei ist die Basis für ein update Paket.
    Es hat diese Aufbau:

    [​IMG]

    An diese Struktur ist nichts zu ändern!
    Für andere Aufgaben können zusätzliche Ordner erstellt werden aber dass hier ist ein Minimum.

    Die Datei "update-script" im Ordner "android" beinhaltet unsere Befehle.
    Diese soll auf jeden Fall angepasst werden, je nach dem was ihr machen wollt.

    In unseren Beispiel stehet drin:

    Code:
     
    ui_print("Delete something");
    ui_print("By anddior");
    ui_print("Mounting system...");
    run_program("/sbin/busybox", "mount", "/system");
    show_progress(1, 15);
    ui_print("Deleting");
    delete("/system/app/xxx.apk", "/system/app/xxx.odex");
    ui_print("Unmounting system...");
    run_program("/sbin/busybox", "umount", "/system");
    ui_print("Removal complete!");
    
    So, falls irgendwo am Zeilenanfang eine Raute (#) stehet dann gilt diese Zeile nicht als Befehl (Auskomentierung)
    z.B:
    # ui_print("By anddior");

    So und jetzt Stück für Stück :

    Code:
     
    ui_print("Delete something");
    ui_print("By anddior");
    ui_print("Mounting system...");
    
    ui_print Befehl schreibt einfach ein Text auf dem Display

    Code:
    run_program("/sbin/busybox", "mount", "/system");
    Hier wird das /system gemountet

    Code:
    show_progress(1, 15);
    show_progress bewegt unsere Display Balken

    Code:
    ui_print("Deleting");
    wieder nur ein Info Text

    Code:
    delete("/system/app/xxx.apk", "/system/app/xxx.odex");
    delete löscht die daten.
    Hier ist die schreibweise zu beachten:
    innerhalb Anführungszeichen "xxx/xx" schreibt man den absoluten Pfad und die Dateinahme die man löschen möchte.
    Mehrere Datein werden mit "," getrennt.
    In genannten Beispiel wird xxx.apk und xxx.odex aus dem Ordner /system/app gelöscht.

    Code:
    ui_print("Unmounting system...");
    wieder nur ein Info Text

    Code:
    run_program("/sbin/busybox", "umount", "/system");
    Hier wird das /system freigegeben

    Code:
    ui_print("Removal complete!");
    wieder nur ein Info Text

    So und wie ändert man nun die Script?
    es gibt 2 Möglichkeiten.

    1:
    Extrahiert einfach die update-script aus die zip datei und passe diese an.
    Dann kopiere es wieder in zip Datei und übeschreibt die alte.

    So kann es euch nicht passieren dass ihr ein falsches zip macht.

    2:
    Einfach alles Extrahieren, update-script anpassen und wieder alles zippen.
    Wobei zum Schluß die Struktur wie oben auf mein Bild aussehen muss.
    Hier passiert öffter das man den Extrahierten Ordner zippt so dass zum Schluss ein Ordner zuviel in zip ist und update.zip funktioniert nicht mehr.

    Anmerkung:
    Es ist nicht nötig die zip Datein zu signieren soweit man aus CWM Ausführen will.
    Ich mache dies Trotzfdem aber es ist nicht zwingend erforderlich.

    Der ursprüngliche Beitrag von 15:21 Uhr wurde um 15:53 Uhr ergänzt:

    TEIL 2 (kopieren)

    Jetzt wollen wir etwas auf unsere A1 kopieren / hinzufügen.

    Dafür nehme ich die A1_restoreBuildProp Datei als Beispiel.

    Der Aufbau ist ähnlich wie im ersten Beispiel, nur dass ein Ordner mit ein Unterordner dazugekommen ist.

    [​IMG]

    ich habe also im "root / Hauptordner" unsere zip datei ein "system" Ordner hinterlegt und meine "build.prop" Datei reinkopiert.
    Der Aufbau entspricht dem Pfad in A1 !!

    Jetzt schauen wir uns die "update-script" an:
    Code:
     
     
    ui_print("Restore Build.prop");
    ui_print("Mounting system...");
    run_program("/sbin/busybox", "mount", "/system");
    show_progress(1, 15);
    ui_print("Restoring Build.prop");
    package_extract_dir("system", "/system");
    set_perm(0, 0, 06755, "/system/build.prop");
    ui_print("Unmounting system...");
    run_program("/sbin/busybox", "umount", "/system");
    ui_print("Fertig :-)");
    
    Und wieder Stück für Stück:

    Code:
    ui_print("Restore Build.prop");
    ui_print("Mounting system...");
    run_program("/sbin/busybox", "mount", "/system");
    show_progress(1, 15);
    ui_print("Restoring Build.prop");
    Diesen ersten 5 Zeilen habe ich schon im ersten Beitrag erklärt.

    Code:
    package_extract_dir("system", "/system");
    hier entpacken / extrahieren und kopieren wir den inhalt aus unsere zip und "system" Ordner in "system" Ordner auf A1.

    Code:
    set_perm(0, 0, 06755, "/system/build.prop");
    hier verteile ich die Rechte für die kopierte Datei auf A1

    Code:
    ui_print("Unmounting system...");
    run_program("/sbin/busybox", "umount", "/system");
    ui_print("Fertig :-)");
    und die letzte 3 Zeilen habe ich in ersten Beitrag erklärt.

    weiteres Beispiel zu kopieren
    Um sicher zu stellen dass alle es verstehe, gebe ich hier noch ein beispiel von kopieren:

    wir wollen die "Phone.apk" wiederherstellen / kopieren.
    Diese datei befindet sich auf A1 in Ordner "/system/app"
    Demensprechend erstelle ich in meine zip Datei genau diese Aufbau.
    Also im root / Hauptordner ein Ordner "system" und drin ein Ordner "app" und da kopiere ich meine Datein "Phone.apk" und "Phone.odex"

    Script ist fast identisch wie schon im oberen Beispiel.

    Code:
     
    package_extract_dir("system", "/system");
    set_perm(0, 0, 06755, "/system/app/Phone.apk");
    set_perm(0, 0, 06755, "/system/app/Phone.odex");
    
    weiteres Beispiel "A1_rooter.zip"

    Und als Sahne zum Schluss hier noch die beliebste A1_rooter.zip Paket.
    Das ist das erste von mir erstellte und meist runtegeladene von allem.

    Der Aufbau ist ähnlich wie im Beispiel davor:

    [​IMG]

    Um A1 zu rooten brauche ich ein "SuperUser.apk" app und eine "su" Script.
    "SuperUser.apk" kommt in Ordner "system/app"
    "su" kommt in Ordner "/system/xbin"

    und hier noch Sript dazu:

    Code:
    ui_print("Rooting LENOVO A1");
    ui_print("By anddior");
    ui_print("Mounting system...");
    run_program("/sbin/busybox", "mount", "/system");
    show_progress(1, 15);
    package_extract_dir("system", "/system");
    set_perm(0, 0, 06755, "/system/xbin/busybox");
    set_perm(0, 0, 06755, "/system/xbin/su");
    ui_print("Unmounting system...");
    run_program("/sbin/busybox", "umount", "/system");
    ui_print("Installation complete, have fun!");
    Ich denke ihr braucht keine weitere Erklärung zu diese Script da alles schon bescrieben wurde.


    Und ja, so einfach kann das rooten sein....
     
    Zuletzt bearbeitet: 06.07.2012
    solaris63, Forwarder78, Skelli und 8 andere haben sich bedankt.
  2. Locked, 19.07.2012 #2
    Locked

    Locked Gast

    Bei mir steht da nur

    Code:
    E:Error in /sdcard/test.zip
    (Status 6)
    Installation aborted.
     
  3. anddior, 19.07.2012 #3
    anddior

    anddior Threadstarter Android-Lexikon

    Beiträge:
    1,000
    Erhaltene Danke:
    370
    Registriert seit:
    29.11.2011
    Zeig mal deine script.
    Oder noch besser, lade deine zip Datei hoch
     
  4. Locked, 19.07.2012 #4
    Locked

    Locked Gast

    Ich habe jetzt das Dateiformat der bearbeitenden Datei auf ein Unix Format geändert in notepad++. Jetzt kommt das Gleiche mit Status 4

    Das ganze ist erstmal ein Testscript. Da steht noch nicht viel drin.
     

    Anhänge:

    • test.zip
      Dateigröße:
      127.5 KB
      Aufrufe:
      168
  5. anddior, 20.07.2012 #5
    anddior

    anddior Threadstarter Android-Lexikon

    Beiträge:
    1,000
    Erhaltene Danke:
    370
    Registriert seit:
    29.11.2011
    Ich habe jetzt deine Test.zip runtergeladen , entpackt, die Endung. sh aus Dateiname upater-script gelöscht, als wieder gezipt und mit cwm gestartet.
    Alles bestens, läuft durch bei mir.
    Den Anhang test.zip betrachten
     
    Zuletzt bearbeitet: 20.07.2012
  6. Locked, 20.07.2012 #6
    Locked

    Locked Gast

    ok dann hast du wohl ein anderes Android oben. Oder geht das nicht weil ich ne Custom ROM oben hab? Hab die Lite'ning ROM 3.6 (basierend auf Android 4.0.3) Oder muss ich einen anderen Kernel nehmen oder gleich ne Samsung Stock Firmware flashen?
     
  7. anddior, 20.07.2012 #7
    anddior

    anddior Threadstarter Android-Lexikon

    Beiträge:
    1,000
    Erhaltene Danke:
    370
    Registriert seit:
    29.11.2011
    Ich habe es nur mit Lenovo probiert. Aus cwm heraus.
     
  8. Locked, 20.07.2012 #8
    Locked

    Locked Gast

    aso das wird heißen mit nem Samsung Galaxy S2 wird das nicht funktionieren
     
  9. anddior, 20.07.2012 #9
    anddior

    anddior Threadstarter Android-Lexikon

    Beiträge:
    1,000
    Erhaltene Danke:
    370
    Registriert seit:
    29.11.2011
    1:1 ehe nicht.
     
  10. Locked, 20.07.2012 #10
    Locked

    Locked Gast

    wie kann ich die update-binary ändern? Glaub dass es an dieser Datei liegt.
     
  11. Androidflash, 26.01.2013 #11
    Androidflash

    Androidflash Gesperrt

    Beiträge:
    396
    Erhaltene Danke:
    68
    Registriert seit:
    19.01.2013
    Code:
    ui_print("Meine Bootanimation");
    ui_print("created by XXX");
    mount("ext4", "EMMC", "/dev/block/mmcblk0p9");
    delete("/system/media/bootanimation.zip");
    package_extract_dir("ani", "/system/media");
    unmount("ext4", "EMMC", "/dev/block/mmcblk0p9");
    ui_print("Installation Beendet");
    Installation Aborted
     
  12. Blackjubel, 27.08.2015 #12
    Blackjubel

    Blackjubel Android-Lexikon

    Beiträge:
    1,145
    Erhaltene Danke:
    969
    Registriert seit:
    17.05.2015
    Phone:
    Samsung Galaxy S5 SM-G900F
    Hi kann mir einer sagen wie ich die ordner in die rom bekomme ?
    Gruß Blackjubel
     

    Anhänge:

  13. Blackjubel, 29.08.2015 #13
    Blackjubel

    Blackjubel Android-Lexikon

    Beiträge:
    1,145
    Erhaltene Danke:
    969
    Registriert seit:
    17.05.2015
    Phone:
    Samsung Galaxy S5 SM-G900F
    Kann mir keiner helfen, wie ich den script machen muss ,das die Ordner samt Inhalt extrahiert werden .
    Gruß Blackjubel
     
  14. Blackjubel, 30.08.2015 #14
    Blackjubel

    Blackjubel Android-Lexikon

    Beiträge:
    1,145
    Erhaltene Danke:
    969
    Registriert seit:
    17.05.2015
    Phone:
    Samsung Galaxy S5 SM-G900F
    Bekomme ich die so rein die Ordner ,samt Daten ,oder was muss ich da andern .

    Code:
    ui_print("Restore Build.prop");
    ui_print("Mounting system...");
    run_program("/sbin/busybox", "mount", "/system");
    show_progress(1, 15);
    ui_print("Restoring Build.prop");
    package_extract_dir("system", "/system");
    package_extract_dir("system/app", "/system/app");
    package_extract_dir("system/lib", "/system/lib");
    package_extract_dir("system/etc", "/system/etc");
    package_extract_dir("system/vendor", "/system/vendor");
    package_extract_dir("system/cameradate", "/system/cameradate");
    package_extract_dir("system/bin", "/system/bin");
    set_perm(0, 0, 06755, "/system/build.prop");
    ui_print("Unmounting system...");
    run_program("/sbin/busybox", "umount", "/system");
    ui_print("Fertig :-)");
    
     

Diese Seite empfehlen