Dopo aver visto come installare magisk, oggi vedremo come realizzare un modulo magisk.
Prima di iniziare abbiamo bisogna di scaricare un editor di testo (vi consigliamo Visual Studio Code) ed un template per i moduli, scaricabile da qui, oppure in alternativa possiamo lavorare direttamente su github facendo un fork del template o creando una repositories e lavorando su di essa.
Una volta scaricato il template ci troveremo davanti questi file
Nel README.md ci sono scritte le informazioni che saranno visibili nella repo, ovvero cosa fa il modulo, chi l’ha creato e perché usarlo.
Nell’ install.sh invece ci sono le “istruzioni” che deve seguire il modulo per durante l’installazione e cosa mostrare durante l’installazione, ad esempio nella voce print_modname() viene indicato ciò che verrà mostrato nell’installazione, solitamente nome della mod e autori,
print_modname() {
ui_print ” “
ui_print ” *******************************************”
ui_print ” * Modulo di esempio *”
ui_print ” *******************************************”
ui_print ” * by Technoage *”
ui_print ” *******************************************”
ui_print ” “
}
on_install() ci indica l’ordine e quali azioni deve eseguire il modulo
ui_print “- Extracting module files”
unzip -o “$ZIPFILE” ‘system/*’ -d $MODPATH >&2
custom_variables
device_check
api_check
dove unzip ci dice dove verrà installato il modulo e le custom variables sono funzioni aggiuntive dettate da noi che vedremo tra poco.
Set_permissions() invece ci consente di indicare quali permessi deve utilizzare durante l’installazione, ma nella maggior parte dei casi non viene modificato.
Come detto poco fa ci sono alcune funzioni aggiuntive dettate da noi, le custom variables, le quali vengono utilizzate ad esempio per mettere una restrizione sulla versione di android e sul tipo di dispositivo compatibile
# this function associates the device model to k20/mi 9t/pro allowing the installation
custom_variables() {
if [ -f vendor/build.prop ]; then BUILDS=”/system/build.prop vendor/build.prop”; else BUILDS=”/system/build.prop”; fi
9T=$(grep -E “ro.product.device=davinci” $BUILDS)
9Tpro=$(grep -E “ro.product.device=raphael” $BUILDS)
}
# this function allows installation just on k20/mi 9t/pro
device_check() {
if [ -n “$9T” ] || [ -n “$9Tpro” ]; then
break
else
abort “Your device is not a K20/Pro or a Mi 9T/Pro”
fi
}
api_check() {
if [ “$API” -ge 29 ]; then
break
else
abort “Your Android version doesn’t support this mod”
fi
}
In questo esempio, preso da un modulo compatibile solo con Xiaomi Mi 9T e Mi 9T Pro) nella prima parte viene detto di cercare nel build.prop se è il dispositivo da noi richiesto, nel device_ceck di confermare o meno il dispositivo ed infine con api_check viene indicata la versione minima di android compatibile, in questo caso Api 29 corrisponde ad Android 10.
Poi tornando sui file abbiamo module.prop che indicherà in maniera veloce le info su autore, versione e cosa fa, poi abbiamo anche alcune cartelle, dentro system andranno le nostre mod che andranno a sostituire i file di sistema originale, ad esempio se vogliamo sostituire l’app della fotocamera ci basterà mettere l’apk nello stesso percorso (system/app ad esempio), dentro common invece ci sono alcuni file come ad esempio il system.prop, il quale interviene direttamente sul build.prop di sistema, ad esempio per cambiare il nome del dispositivo e cambiare i DPI del display.
Infine nell’ultima cartella, ovvero META-INF, troveremo due file, updater-script e update-binary, dove in quest’ultimo ci sarà obbligatoriamente il bisogno di sostituire il contenuto all’interno con quello presente in questo file.
Bene per il momento è tutto su come realizzare un modulo magisk, più in avanti scopriremo come aggiungere funzioni extra e come pubblicarlo nella repository ufficiale.
Comments