Aller au contenu

[Tutoriel] Création de ZIP à flasher pour le ClockWorkMod Recovery


Recommended Posts

Création de fichier zip pour le ClockWorkMod Recovery

Niveau: Expérimenté de la bidouille

Uniquement pour utilisateurs avancés

by Crackmort

Bonjour/Bonsoir à tous, je viens aujourd'hui vous montrer comment créer un zip pour le CWM et ainsi vous permettre de flasher tout et n'importe quoi sur votre Nexus (valable pour tout smartphone avec le CWM) ;)

J'ai appris à faire cela sur le tas à force de bidouiller donc je vais vous décrire la technique que j'utilise personnellement, ce n'est peut-être pas la meilleure mais elle ne m'as jamais fait défaut jusqu'ici, j'espère que ce sera le cas pour vous également !

==> Un zip, c'est quoi et comment ça marche?

Un zip est un fichier compressé qui permet de modifier des fichiers système via le recovery. Cela permet de modifier le système sans que celui ci soit lancer afin d'éviter les plantage pendant les manipulations.

Celui ci est composé d'un script que le recovery exécutera et de fichiers système qui serviront à remplacer les fichiers actuels.

Un zip se décompose de cette façon:

- Un dossier "META-INF" qui va contenir le script et les fichiers d'authentification aussi appelés "signature".

Remarque: Ce dossier peut aussi être visible dans les apk.

- Un dossier "system" qui va contenir les nouveaux fichiers systèmes (dans le cas où on modifie des fichiers dans le dossier système, d'autres dossiers peuvent apparaître dans certains zip tout dépend de ce que l'on doit modifier)

==> Et comment on fait alors?

Prérequis:

- Un PC sous Windows (Je ne sais pas faire sur Linux ou MacOS)

- WinRAR (ou équivalent: WinZip peut aussi faire l'affaire)

- Un zip qui servira de base: Télécharger

Remarque: Je fais tout sans jamais extraire le zip (et ainsi éviter d'avoir à le signer à nouveau), c'est là que WinRAR est utile.

1) Télécharger le zip que je vous est préparé.

2) Avec WinRAR, ouvrez le sans extraction.

3) Aller dans le dossier "META-INF", puis "com", "google", "android" et ouvrir le fichier "updater-script" avec le bloc note (Ou Notepad++).

Vous obtenez ce script:

ui_print("Nomduzip");
ui_print("By VotreNom.");
ui_print("Mounting system...");
show_progress(1, 15);
run_program("/sbin/busybox", "mount", "/system");
ui_print("File Replacement");
show_progress(1, 50);
package_extract_dir("system", "/system/chemin dossier");
ui_print("Setting permissions for the file");
show_progress(1, 75);
set_perm(0, 0, 0644, "/system/fichier");
run_program("/sbin/busybox", "umount", "/system");
ui_print("Installation is complete!")

Description des commandes les plus utilisées:

- "ui_print" permet d'afficher le message entre parenthèse.

/!\ Chaque ui_print fait passer à la ligne suivante.

- "show_progress" permet d'afficher une barre de progression entre chaque étape du script.

- "run_program" lance une commande busybox.

- "package_extract_dir" permet d'extraire un fichier du zip pour le mettre à l'emplacement désigné dans la commande qui suit. Ce fichier remplacera automatiquement l'autre du même noms.

- "set_perm" défini les permissions à mettre sur le fichier désigné dans la commande qui suit.

- "delete" permet de supprimer le fichier désigné entre parenthèse.

exemple:

delete("/system/fichier")

Le script fourni dans le zip que j'ai fait est le plus utilisé, à vous de le modifier en fonction de ce que vous avez à faire. Il suffit de mettre les bon chemins de fichiers là où il faut.

/!\ Pour la suite, je vais considérer que je dois flasher un thème que je me suis concocter en modifiant le framework-res.apk (chemin: system/framework) et SystemUI.apk (system/app).

1) Dans le zip, créer dans le dossier "system", un dossier "framework" et y placer le fichier "framework-res.apk" modifié puis toujours dans "system", créer un dossier "app" et y mettre le "SystemUI.apk" modifié.

2) Retour à la racine du zip et aller dans le dossier "META-INF", puis "com", "google", "android" et ouvrir le fichier "updater-script" avec le bloc note (Ou Notepad++).

3) Modifier le script comme suit:

ui_print("Theme");
ui_print("By Crackmort.");
ui_print("Mounting system...");
show_progress(1, 15);
run_program("/sbin/busybox", "mount", "/system");
ui_print("File Replacement");
show_progress(1, 50);
package_extract_dir("system/", "/system/");
ui_print("Setting permissions for the file");
show_progress(1, 75);
set_perm(0, 0, 0644, "/system/framework/framework-res.apk");
set_perm(0, 0, 0644, "/system/app/systemUI.apk");
run_program("/sbin/busybox", "umount", "/system");
ui_print("Installation is complete!")

Remarque: Pour la ligne package_extract_dir("system/", "/system/"); Le script va automatiquement suivre le chemin du zip pour localiser les fichiers à remplacer. Il est également possible de mettre le fichier modifié directement dans le dossier "system" du zip mais la ligne de commande devra ressemblé à ça : package_extract_dir("system/" , "/system/framework"); dans le cas du framework-res.apk. Chacun sa méthode.

Et voilà, vous avez créer votre zip pour flasher ce que vous voulez ;)

==> Comment signer un zip?

Je ne vais pas refaire un tutoriel déjà existant et assez complet sur Frandroid donc je met directement le lien:

http://forum.frandro...ne-archive-zip/ (Merci à Azathot)

Cas particuliers:

Certains zip inclus d'autres script que le recovery exécutera comme dans celui du Air Kernel où l'on peux apercevoir un cleaner.sh dont je me pose encore quelques questions sur l'utilité. (suppression des configs d'éventuels anciens kernels pour éviter les bugs? Si quelqu'un peux m'éclairer) ;)

Pour ceux que ça intéresse:

#!/sbin/sh
# clean modules
rm -rf /system/modules
rm -rf /system/lib/modules
# clean boot sound
rm -f /system/media/audio/poweron/PowerOn.*
rm -f /system/media/audio/poweron/poweron.*
# clean CMPlus stuff
rm -f /system/etc/cmplus.conf
rm -f /system/bin/cmplus
rm -f /system/bin/list
rm -f /sdcard/cmplus.conf
# clean Popcorn stuff
rm -f /system/etc/sysctl.conf
rm -rf /data/cron
# clean LeanKernelTweaks stuff
rm -f /system/xbin/installbb
rm -f /system/xbin/leantweaks
rm -rf /data/leantweaks
# clean Trinity stuff
rm -f /system/bin/fix_permissions
# clean init.d scripts
INITD_DIR=/system/etc/init.d
# GLaDOS
rm -f $INITD_DIR/90logger
rm -f $INITD_DIR/99nexusinit
rm -f $INITD_DIR/placeholder
# Trinity
rm -f $INITD_DIR/95dimmers
rm -f $INITD_DIR/98tweak
rm -f $INITD_DIR/99complete
# SG
rm -f $INITD_DIR/98_startup_script
rm -f $INITD_DIR/99_startup_complete
# Air
rm -f $INITD_DIR/89airtweaks
rm -f $INITD_DIR/98airtweak
rm -f $INITD_DIR/98airtweaks
rm -f $INITD_DIR/99airtweaks
# CMPlus
rm -f $INITD_DIR/98cmplus
# CM Default
rm -f $INITD_DIR/00banner
rm -f $INITD_DIR/90userinit
# franco
rm -f $INITD_DIR/13overclock
rm -f $INITD_DIR/00turtle
# Popcorn
rm -f $INITD_DIR/99sonic
# Lean
rm -f $INITD_DIR/99leantweaks
# Jame Bond
rm -f $INITD_DIR/007tweaks
# miscellany
rm -f $INITD_DIR/99nstools
# clean kernel setting app shared_prefs
rm -rf /data/data/mobi.cyann.nstools/shared_prefs
rm -rf /data/data/aperture.ezekeel.gladoscontrol/shared_prefs
rm -rf /data/data/com.derkernel.[color=red][color=red][color=red][color=red]tkt[/color][/color][/color][/color]/shared_prefs
rm -rf /data/data/com.franco.kernel/shared_prefs
rm -rf /data/data/com.liquid.control/shared_prefs

C'est le seul cas où j'ai remarqué une autre utilisation du recovery.

Voilà, n'hésitez pas à faire des remarques pour améliorer ce tutoriel: Oubli, explication pas assez approfondie, erreurs, fautes, etc...

Modifié par Crackmort
  • Like 4
Lien vers le commentaire
Partager sur d’autres sites

Les .sh sont des fichiers que j'utilisais beaucoup sur Galaxy Spica mais aussi NS (moins)

Je les incorporait dans la ROM, ou dans des fichier .zip à flasher.

Ici, la commande qui revient souvent, c'est le "rm -f" , c'est tout simplement :

* "rm" = remote

* "-f" = si le fichier qui correspond au chemin indiqué après ce "-f" n'est pas présent, cela évite au recovery d'émettre un message d'erreur.

C'est à dire que tu peux, grâce à ce fichier, prévoir certaines choses (anticipation) qui pourrait se passer dans les ROM de certaines personnes après flashage du recovery.

C'est un genre de "delete" en bref!


Je regarderais ton tuto demain en détails, je n'ai fait que survolé. Sinon +1, ça en aidera plus d'un :)

Modifié par IT4ALii3EN
Lien vers le commentaire
Partager sur d’autres sites

J'utilise justement WinRAR pour ne pas avoir à résigner le ZIP mais je le rajouterais quand j'aurai le temps.

Et je testerai Notepad++, la mise en page du bloc note n'est pas des plus intuitive pour ces scripts là ;)

EDIT: J'ai trouvé un tuto sur Frandroid pour signer un zip, ça ne sert pas à grand chose de le refaire donc j'ai juste mis le lien.

Modifié par Crackmort
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Ok merci, j'ai essayé cette méthode, mais ce n'était pas pour remplacer un fichier dans système, mais dans custpack, aucun message d'erreur dans cwm, par contre le fichier n'a pas été remplacé. Est ce que cela que venir de la signature (car je ne l'ai pas faite) ? Y'a t-il un moyen de vérifié s'il faut la signer ou pas ?

Je vais essayer de remplacer un fichier système, ainsi je n'aurais pas énormément de chose a modifier dans le script.

Lien vers le commentaire
Partager sur d’autres sites

Donc je viens d'essayer en remplaçant le fichier systemUI.apk qui se trouve dans system/, là pas de problème, le remplacement c'est bien fait.

Par contre je n'y arrive pas pour un fichier qui ne se trouve pas dans system mais dans custpack

Voici le script : En fait je veux remplacer la police par défaut et mettre à la place la police COMIC (renommé bien sur en roboto)

J'y arrive avec root explorer sans problème en les remplaçant, mais je voudrais le faire avec un zip flashable pour en faire profiter tous le monde.

Les polices se trouvent dans : custpack\JRD_custres\fonts\

J'ai donc supprimé le dossier system du zip, pour le remplacer par custpack puis JRD_custres\fonts\ et la police.ttf

Et voici le script

ui_print("Nom du zip");

ui_print("By Crackmort.");

ui_print("Mounting system...");

show_progress(1, 15);

run_program("/sbin/busybox", "mount", "/custpack");

ui_print("File Replacement");

show_progress(1, 50);

package_extract_dir("custpack", "/custpack/");

ui_print("Setting permissions for the file");

show_progress(1, 75);

set_perm(0, 0, 0644, "/custpack/JRD_custres/fonts/Roboto-regular.ttf");

run_program("/sbin/busybox", "umount", "/custpack");

ui_print("Installation is complete!")

J'ai essayé également en laissant les 2 mêmes lignes, car je ne savais pas s'ils faillaient les changer.

run_program("/sbin/busybox", "mount", "/system");

run_program("/sbin/busybox", "umount", "/system");

Si vous avez une solution ? Merci

Lien vers le commentaire
Partager sur d’autres sites

Non, sur l'alcatel ot 995, il y a un dossier custpack en plus de sytem, certain fichier à modifier se trouve dans custpack et d'autre dans system. Pour le changement de police, c'est dans custpack. J'arrive à le remplacer manuellemnt via root explorer, mais j'aurais voulu creer un zip flashable. De même pour le remplacement des icones alcatel par celle stock google ics. J'ai le même soucis ils se trouvent dans custpack

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...