Jump to content

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

Edited by FlyinGrub
  • Like 3
Link to comment
Share on other 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.

Edited by FlyinGrub
Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...