Aller au contenu

[GUIDE] Updater-script


Recommended Posts

Modifier un Updater-script

Voici un petit guide que je créer pour vous aider a comprendre 
le fonctionnement du recovery et comment lui faire faire tout ce que l'on veut. :)

 
 
Qu'est ce que l'updater-script ?
L'updater-script est un fichier donnant l'ordre au recovery d'effectuer telles ou telles actions, Il possèdent une syntaxe particulière et des commandes spécifiques que je vais décrire le long de ce guide :). Il se trouve dans chaque .zip que vous flasher avec votre recovery dans /META-INF/com/google/android/ .
 
Qu'est ce que l'update-binary ?
L'update-binary est indispensable au recovery pour traduire le langage "humain", en langage lisible par une machine (le recovery) pour exécuter l'updater-script.
 
 
Requis : 
- Notepad ++, pour éditer l'udater- script
 
Paramétrage de Notepad ++
- Aller dans paramètres>préférences
26670520130823191516.jpg
 
- Changer le format de saut de ligne pour UNIX
30184720130823191330.jpg
 
- Changer la tabulation par 4 espaces
88872320130823191340.jpg
 
Syntaxe :
 *  Vous pouvez commenter une ligne (qui ne sera donc pas pris en compte par le recovery) en précédant cette ligne par un #
 *  Toutes les commandes de l'updater-script doivent se terminer par un ;
 *  Vous devez toujours laisser une ligne vide à la fin de votre updater-script
 *  la comparaison de deux arguments ce fait via == (egal) ou != ( différent)
 *  Les opérateurs logiques sont || (ou) ; && (et) ; ! (non)
 *  Les conditions s'effectue via les mots : if, then, else, endif
 
Commandes les plus courantes :

assert();

Annule l'installation si la conditions qui suis est fausse.
 

ui_print("Format Completed");

Ecrit dans le recovery le message entre guillemets (obligatoire).
 

mount("ext4", "EMMC", "/dev/block/mmcblk0p35", "/data");

Monte une partition : "ext4" type de formatage ; "EMMC" type de la partition utilisé par le système ; "/dev/block/mmcblk0p35" chemin de la partition (il change en fonction du téléphone) ; "/data" point de montage.
 

format("ext4", "EMMC", "/dev/block/mmcblk0p33", "/system");

Formate une partition : "ext4" type de formatage ; "EMMC" type de la partition utilisé par le système ; "/dev/block/mmcblk0p33" chemin de la partition (il change en fonction du téléphone) ; "/system" point de montage.
 

package_extract_dir("system", "/system");

Extrait le dossier "system" à la racine du .zip vers la partition (précédemment monté via la commande mount() ;) "/system".
 

package_extract_file("autoroot.sh", "/tmp/autoroot.sh");

Extrait le fichier "autoroot.sh" vers "/tmp/autoroot.sh" (tmp doit ici aussi être précédemment monté.
 

symlink("mksh", "/system/bin/sh");

Cette fonction créer un symlink, à la place de faire un copier coller d'un fichier à deux endroit, cette commande  permet de créer un raccourci vers ce fichier dans l'un des deux dossiers.
Cette ligne va donc créer un raccourci "mksh" à la racine du système qui renvoiera vers le fichier se trouvant dans /system/bin/sh.
Lorsqu'une app demandera d'effectuer "mksh" le système renverra vers ce fichier.
 

set_perm(0, 3003, 06755, "/system/bin/ip");

Cette commande donne la permission 06755 au fichier "/system/bin/ip" pour l'utilisateur 0 et le groupe 3003
plus d'info sur les permissions linux ici.
 

set_perm_recursive(0, 0, 0755, 0644, "/system");

Idem que celle du dessus à pars qu'elle appliqueras cette permissions a tous les fichiers et sous-dossiers présents dans ce répertoire. La 3eme variable décrit la permissions pour le dossier /system et la 4eme pour les sous-dossiers.
 

run_program("/tmp/autoroot.sh");

Permet de lancer un scipt .sh précédemment extrait via la commande package_extract_file/dir().
 

unmount("/system");

Permet de démonter la partition /system précédemment monter. il est indispensable de démonter toutes les partitions avant la fin l'updater-script.

Modifié par FlyinGrub
  • Like 3
Lien vers le commentaire
Partager sur d’autres sites

assert(getprop("ro.product.device") == "ST15i" || getprop("ro.build.product") == "ST15i");

Si vous avez bien suivis vous etes donc cabable de me décrire la fonction de cette commande, sachant que getprop() récupère la valeur de la variable entre guillemets. 

Elle permet donc de vérifier si la variable "ro.product.device" ou "ro.build.product" vaut "ST15i", l'utilisation du "ou" permet de dire, donc le assert pour que le assert annule linstallation il faut que les deux soit fausses en même temps.

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

  • 2 weeks later...

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...