[GUIDA] Modificare una Rom
PREMESSA
- Patti chiari, amicizia lunga -
. . . THREAD IN CONTINUO AGGIORNAMENTO!! . . .
Questo Thread nasce dalla collaborazione tra Crotan e Miseusegau, due utenti molto attivi nella sezione Modding Galaxy Nexus. In questa discussione verranno trattate operazioni avanzate di Modding, pertanto se non siete utenti esperti, proseguite con la lettura solo a scopo illustrativo. Ci tengo a precisare che voi siete i responsabili di ciò che fate, seguite il thread a vostro rischio e pericolo, nessuno si assume la responsabilità di eventuali danni arrecati al vostro terminale. Seguendo la discussione impareremo ad apportare modificare alle Rom, partirendo con cose semplici per arrivare man mano ad operazioni più complesse e delicate, come la compilazione di un Kernel. Il materiale che troverete è stato preso da ogni dove: XDA, Androidiani, siti Android, ed altri Forum, a tutto ciò ho aggiunto le mie conoscenze nel settore. Il nostro intento è quello di riuscire a rendere questa discussione il punto di riferimento per le operazioni di Modding avanzate, in quanto in Internet è possibile reperire molte informazioni, ma in modo frammentario e caotico. Ognuno di voi può contribuire alla crescita di questo topic, traducendo e / o scrivendo guide, previa aver testato il tutto. SI POSTA SOLO MATERIALE TESTATO E FUNZIONANTE. Dopo questa piccola, ma doverosa premessa è giunto il momento di cominciare. Buona lettura!
. . . PRIMI PASSI . . .
- La struttura della Rom -
La prima cosa da fare è scompattare il File Zip della Rom che vogliamo modificare e per fare questo dobbiamo servirci di Software quali Winrar, WinZip o similari. Personalmente, utilizzo Winrar e non mi ha mai dato problemi. Una volta che abbiamo scompattato la Rom ci troveremo dinanzi a tre elementi:
http://i47.tinypic.com/t5rpms.png
1) Meta – Inf : Questa cartella contiene dei File che a loro volta contengono delle istruzioni che dicono alla Recovery cosa fare con il pacchetto .Zip. Al seguente percorso \META-INF\com\google\android\ troviamo lo Script chiamato “ Updater – Script “esso costituisce il primo elemento che viene eseguito al momento del Flash. Prenderemo in esame questo Script più avanti
2)System: Questa è la cartella “ principale “ , contiene l’intero Sistema Operativo Android ad eccezione del Kernel e la RamDisk
3) Boot.img: Questo File contiene il Kernel e la RamDisk
Adesso, analizzeremo assieme la composizione delle varie cartelle, iniziamo con la prima: Meta - Inf.
La suddetta cartella come detto in precedenza dice alla Recovery cosa fare con il pacchetto Zip, il file Updater Script contiene tutte le operazioni che il terminale deve eseguire durante il flash, ATTENZIONE A CIO’ CHE MODIFICATE, in quanto se cancelliamo o modifichiamo in modo errato questo File il pacchetto Zip non si installa, e nella peggiore delle ipotesi il Flash si interrompe nella riga dovè situato l’errore, con rischio di Brick. E’ bene sapere che ogni istruzione presente in questo File deve finire con il punto e virgola ( Se avete un minimo di conoscenze nel mondo della programmazione basta poco per capire il motivo ) . Vediamo comè strutturata la sintassi dell’Updater – Script:
Istruzione ui_print:
Sintassi: ui_print ( " Testo da visualizzare durante il Flash " );
Istruzione Mount:
Sintassi: (fs_type, partition_type, location, mount_point)
Dettagli parametri: fs_type = "yaffs2" | "ext4"
partition_type="MTD" | "EMMC"
location = partition | device
mount_point = cartella di destinazione per montare il File System
Istruzione Unmount:
Sintassi: unmount(mount_point)
Dettagli parametri: mount_point = punto di smontaggio
Azione: Smonta il File System
Restituisce: Il punto di montaggio che è stato smontato, in caso di successo, altrimenti restituisce un valore Null
Istruzione Format:
Sintassi: format(fs_type, partition_type, location)
Dettagli parametri: fs_type = string,"yaffs2" | "ext4"
partition_type= string, "MTD" | "EMMC"
location = string, partition | device
Azione: Formatta il File System come specificato
Istruzione show_progress:
Sintassi: show_progress(frac, sec)
Dettagli parametri: frac = frazione del completamento del progresso
sec = totale secondi
Azione: Visualizza il progresso del Flash
Istruzione set_progress:
Sintassi: set_prograss(frac)
Dettagli parametri: frac= frazione del progresso
Istruzione package_extract_file:
Sintassi: package_extract_file(package_path) o package_extract_file(package_path, destination_path)
Dettagli parametro: package_path = Il file nel pacchetto che si desidera estrarre
destination_path = cartella di destinazione per estrarre i file
Azione: Estrae un singolo File dal pacchetto per la destinazione specificata
Istruzione file_getprop:
Sintassi: file_getprop(file, key)
Dettagli parametri: file = stringa , nome del File da controllare
key = stringa
Azione: Verifica la presenza di un valore nel File
Istruzione symlink:
Sintassi: symlink(target, src1, src2, ..., srcN)
Dettagli parametri: target = stringa, destinazione del Symlink
srcX = the symbolic link to create that points to the target
Azione: scollega tutti i symlink esistenti, prima di crearne di nuovi
Istruzione set_perm:
Sintassi: set_perm(uid, gid, mode, file1, file2, ..., fileN)
Dettagli parametri: uid = user id
gid = gruppo id
mode = permessi
fileX = File da settare
Azione: Consente di impostare permessi ad un File o ad un gruppo specifico di File, a patto che almeno uno sia specificato. I primi quattro parametri sono necessari
Istruzione set_perm_recursive:
Sintassi: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ...dirN)
Dettagli parametri: uid = user id
gid = gruppo id
dirmode = Permesso di
filemode = permission to set to files contained within the specified directory
dirX = directory per impostare l'autorizzazione
Azione: Imposta le autorizzazioni di una Directory o un insieme di Directory, e tutti i File e cartelle al loro interno, a patto che almeno una cartella sia specificata. I primi cinque parametri sono obbligatori
Istruzione getprop:
Sintassi: getprop(key)
Dettagli parametri: key = stringa, la proprietà che si desidera che il sistema ritorni
Azione: Questa funzione restituisce il valore della proprietà specificata. Questo è usato per richiedere informazioni sulla piattaforma dal file build.prop
Istruzione assert:
Sintassi: assert(condition)
Dettagli parametri: condizione - boolean
Descrizione: Se la condizione è falsa, interrompe l'esecuzione dello script, altrimenti continua l'esecuzione
Per ulteriori informazioni vi invito a consultare l'ottima guida del mio amico Mario cliccando qui.
Passiamo ora ad analizzare la cartella System, e le relative Sotto Directory:
http://i48.tinypic.com/34rf8uq.png
Addon.d:
App: In questa cartella ci sono tutte le Applicazioni di Sistema, possiamo toglierne alcune per allegerire la Rom oppure possiamo aggiungerne.
NB: E’ obbligatorio mettere un Launcher , se non lo facciamo, è Bootloop
E’ bene sapere, che non tutte le Applicazioni presenti in questa cartella possono essere rimosse, in quanto potrebbero verificarsi Bootloop o FC, pertanto qui di seguito allego l’elenco di Applicazioni che NON vanno cancellate:
Bin: Questa cartella contiene i file Binari della Rom, non modificate nulla in quanto potreste avere problemi
Etc: Contiene settaggi e cose Extra. In essa è presente una sotto cartella chiamata Init.d lì vanno messi gli Script che vogliamo far eseguire all'avvio del terminale. Sempre in questa cartella troviamo il File Gps.conf, possiamo modificarlo per far agganciare più rapidamente i satelliti. Usate -> Questo
Fonts: Qui ci sono tutti I Fonts della nostra Rom
Framework: Qui sono presenti molti file .Jar ed un File APK: Framework – res.apk, esso è molto importante, senza di lui la Rom non parte. Il Framework è il cuore del sistema operativo che racchiude tutte le funzioni (aggiunte spesso dai vari produttori) e gran parte del tema della rom
Lib: Qui ci sono tutte le librerie per le Applicazioni di sistema, che servono per farle funzionare.
Media: Qui troviamo vari File e cartelle, tra cui la Boot Animation, ovvero l’animazione che troviamo quando accendiamo il telefono. Più in là vedremo come funziona*. Oltre a ciò, troviamo la cartella Audio che contiene suoni di notifiche, dell’UI etc. E’ possibile rimuoverli e / o aggiungerne di nuovi.
Tts: Qui ci sono le librerie per la ricerca vocale PicoTts che in Italia non funziona
Usr: I File presenti in questa cartella si occupano principalmente di tener conto delle Impostazioni utente ( Luminosità etc. )
Vendor: Qui ci sono dei File necesssari per il funzionamento del Play Store
Xbin: : Contiene dei Fille di Sistema da NON modificare ( Sono compresi i file per far funzionare il root es: Su e Busybox)
Build.prop: Questo è un File molto importante, esso contiene tutte le informazioni della Rom e le sue principali caratteristiche. Possiamo aggiungere vari Tweaks e modificare alcune stringhe per personalizzare la nostra Rom. Più avanti vedremo come fare**[/QUOTE]