[GUIDA] Cucinare una custom ROM ICS (tool e strumenti)

Discussione in 'Modding - Sony Ericsson Xperia Arc S' iniziata da MatteoV, 15 Mar 2013.

Condividi questa Pagina

  1. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    Ciao, visto che sto lavorando alla ECOSNAP ufficiale, ne approfitto per inserire alcuni strumenti utili a chi volesse cimentarsi nel cucinare una nuova ROM. Editerò man mano questo post col procedere del il mio lavoro.
    Chissà mai che a qualcuno venga l' idea di provare e magari collaborare con me ;).

    DISCLAIMER:
    NON MI ASSUMO RESPONSABILITA' PER EVENTUALI DANNI O MALFUNZIONAMENTI AL VOSTRO DISPOSITIVO, SCEGLIETE DI SEGUIRE QUESTA GUIDA SOLO SE SIETE CONSAPEVOLI DI QUELLO CHE STATE FACENDO. NON TEMPESTATEMI DI PM MA RISPONDETE A QUESTO THREAD ESPONENDO LE VOSTRE EVENTUALI DOMANDE. I VOSTRI DUBBI POSSONO ESSERE GLI STESSI DI ALTRI UTENTI! RICORDATE CHE NON ESISTONO DOMANDE STUPIDE,TUTTE SONO BEN ACCETTE TENENDO PRESENTE CHE SIAMO QUI PER IMPARARE E CONDIVIDERE. BUON SENSO ED EDUCAZIONE SONO AUSPICABILI. GRAZIE
    [HR][/HR]Requisito fondamentale è avere un telefono rootato, bootloader sbloccato e kernel custom installato.

    0. PREPARIAMO L'AMBIENTE DI MODDING sul PC:
    Scaricare uno a scelta tra winrar , winzip o 7zip. Create una cartella chiamata MODDING o come vi pare in cui inserirete tutti i file che utilizzerete. (sembra una banalità ma vi assicuro che se mettete tutto sul desktop,dopo un po' non ci capite più nulla)

    I primi due punti sono operazioni preliminari per il mod. I pigri possono saltare direttamente al punto 3 dove trovate un link per scaricare quello che vi serve per cominciare direttamente a moddare. Consiglio comunque di leggere i primi due punti.

    1. LA SCELTA DELLA BASE
    Possiamo scegliere se cominciare da una rom custom e modificarla, altrimenti utilizzare come base il fw stock sony.
    Vi consiglio la seconda possibilità per il semplice motivo che durante lo sviluppo capiterà che qualcosa non funzioni, a quel punto se avremo utilizzato il fw stock sapremo che l'errore è dovuto a nostre modifiche e non ad errori preesistenti nella custom rom. Di seguito procederò come se aveste scelto questa strada.
    Dobbiamo innanzi tutto scaricare il fw stock su cui vogliamo basare la nostra rom, io ho scelto il 4.1.B.0.587.
    Questo fw sarà in formato ftf (compresso e installabile con flashtool) ma noi vorremo ottenere un file non compresso su cui poter lavorare. Quindi seguiamo questa guida per estrarre il file system dall' ftf, è in inglese ma semplicissima! Effettuato l'ultimo passaggio avrete una serie di cartelle dove prima avevate messo il file system.yaffs2. Selezionatele tutte compreso il file build.prop e inseritele in una nuova cartella che chiamerete system. Spostetela nella vostra cartella modding. Se avete problemi di seguito troverete il file già estratto.

    2. OPERAZIONI PRELIMINARI
    Avremo ottenuto una cartella (system) che contiene tutto il fw stock sony (alcune cartelle + il file build.prop)
    Se avete mai provato ad aprire un ROM custom, saprete che dentro il file zip ci sono come minimo 2 cartelle: system e META-INF (di solito c'è del resto ma lo vedremo inseguito). La prima l'abbiamo appena ottenuta e sapete che contiene il sistema, la seconda la potete scaricare da qui(è un file compresso, vi basta estrarne il contenuto).
    META-INF contiene tutti dati che servono per l'installazione. In particolare nel percorso com->google->android troverete due file importantissimi! uptater-script e update-binary.
    L'update binary è un file accessorio che serve a far partire lo script di installazione vero e proprio, contenuto nell' updater scritp. L'updater script, appunto contiene lo script di installazione.
    Per script di installazione intendo un codice molto semplice ed intuitivo che indica alla recovery cosa installare, dove installarlo e con quali permessi.
    Nella meta-inf che avrete appena scaricato è presente un updater-script generico e minimale che installa tutti i componenti del system.
    Man mano che aggiungeremo mod o modificheremo alcuni file da system, lo script updater andrà modificato di conseguenza. Tutto ciò però lo vedremo più avanti.
    A questo punto nella nostra cartella modding avremo 2 cartelle: system e Meta-inf. Inseritele in una cartella che chiamerete col nome della vostra rom.
    Per comodità la chiamerò: ROM_TEST. Se non l' avete già fatto trasferite questa cartella romtest all' interno della vostra cartella modding.

    Passiamo alla questione root. E' importante che la ROM che stiamo costruendo sia pre rootata. La prima modifica che effettueremo sarà quindi integrare i diritti di root. Dovete scaricare questo file. E' un file compresso il cui contenuto è una cartella che si chiama system, al suo interno ci sono altre tre cartelle: app, bin, xbin. All' interno di queste cartelle ci saranno rispettivamente: l'apk superuser, il su binary e la busybox. Estraete il file, ora copiate system appena estratto nella cartella ROM_TEST. win zip /rar 7zip che sia vi chiederà se unire le cartelle, dite di si, poi chiederà se sostituire busybox, dite nuovamente di si. Ora il vostro system sarà rootato.

    3. COMINCIARE A LAVORARE
    Per i pigri che hanno saltato i primi 2 punti QUI ho inserito un archivio .rar contenente una cartella chiamata "generic". Scaricate ed estraete. Rinominate la cartella estratta con il nome della vostra rom (io la chiamerò ROM_TEST) e mettetela nella vostra cartella "modding". All' interno troverete le due cartelle system e meta-inf che hanno già subito tutti i trattamenti necessari che abbiamo visto fino ad ora.
    Chi invece ha seguito i primi 2 punti avrà già la cartella ROM_TEST all' interno di modding.
    A questo punto non vi resta che fare un primo test per provare a far funzionare il telefono con la vostra prima ROM! Ma prima dovete ancora procedere con un veloce passaggio.
    Sapete che le rom flashabili sono in formato zip. Ora però voi avete tutto quello che vi serve nella vostra cartella ROM_TEST ma non in un pacchetto zip. Putroppo non basta comprimere il tutto in un pacchetto zip usando win zip o win rar. Il pacchetto zip deve infatti essere "signato" ovvero certificato, altrimenti la recovery vi dirà: "installation aborted".
    Scaricate quindi questo file. L' ho chiamato "template". Si tratta di un semplice archivio zip vuoto ma già signato.
    Fatevene una copia perchè vi servirà ancora molte volte.
    Ora avete un archivio già certificato a cui dovrete aggiungere i file della rom. Per farlo: aprite la cartella ROM_TEST, selezionate system e metainf, click col destro su uno dei due file selezionati--> add to archive. Nella finestra che si aprirà spostatevi sulla vostra cartella "modding" e selezionate lo zip "template" che avete appena scaricato.
    Aspettate la fine del processo. Rinominate lo zip col nome della vostra rom. COMPLIMENTI!! avete appena cucinato la vostra prima ROM!
    Mettetela sulla sd e installatela come tutte le altre rom custom. (non dimenticate i vari format e wipe).

    4.DEODEXARE LA ROM
    Se i primi 3 punti hanno funzionato potete passare al prossimo passo. Per prima cosa, estraete semplicemente la vostra rom zippata. Riotterrete le due cartelle system e meta inf su cui lavorare. Per l'estrazione usate il comando extract to "nome della rom" in modo da evitare di dovervi andare a cercare in giro per il pc i file estratti.
    Deodexare la rom significa eliminare dal sistema tutti i file con estensione.odex.(ovviamente questa è una semplificazione estrema ma in rete potete trovare diverse informazioni a tal proposito). Vi basti sapere che questo passaggio è fondamentale se in futuro vorrete agire su alcuni file come il service, l' androidpolicy ecc per modificarne le proprietà, ad esempio inserendo nuove features nel power menù, controllare la lockscreen ecc..
    Tornando al nostro system, abbiamo la fortuna di avere solo alcuni file contenuti nella cartella framework da processare.Occhio!Non basta cancellarli...
    Esistono alcuni metodi per deodexare una rom, il più semplice in assoluto è utilizzare un tool molto utile che trovate su xda. Si chiama dsixda-kitchen. Questo splendido eseguibile oltre al deodex permette numerose altre azioni. Il funzionamento della "cucina" è semplice ma prevede un minimo di conoscenza dell' inglese e del pc. Vi rimando ad una ricerca su google per altre informazioni e magari prima o poi farò una guida che ne illustri il funzionamento.
    Per semplificarvi il lavoro in attesa di una guida esaustiva, ho inserito in questo pacchetto i file da deodexare già deodexati. Estraete l'archivio e dentro troverete alcuni file.jar. Copiateli e inseriteli nel vostro system-->framework confermando di SOSTITUIRE i file già presenti con quelli nuovi. Al termine della copia cercate tutti i file con estensione.odex ed eliminateli.
    Ok, il vostro sistema è deodexato!

    5. LE PRIME MODIFICHE, PULIZIA GENERALE DEL SISTEMA
    Ottenuta la vostra ROM deodexata e funzionante è finalmente arrivato il momento di cominciare a personalizzarla un po'. Tenendo presente che abbiamo per le mani il fw stock la parola d'ordine, prima di qualsiasi altra cosa è PULIZIA! In gergo si dice eliminare il bloatware. Con questo termine si intende tutta la serie di app, giochi, temi, personalizzazioni il più delle volte inutili che la casa produttrice inserisce nel fw stock appesantendolo e come dice la parola, gonfinadolo. (parlando di Sony cito i famosi let's golf, wisepilot, uefa.com, playnow ecc.).
    Dentro system trovate 12 cartelle + il build prop. Per ora cominciamo con eliminare in-utility dalla cartella app (ovviamente la cartella in cui sono contenute le applicazioni).
    Dal mio punto di vista ci sono 2 livelli di pulizia da effettuare: il primo è una pulizia superficiale che porta ad eliminare il più grosso. La seconda è più fine e se vogliamo, anche soggettiva, porta infatti ad eliminare app che per alcuni sono inutili, per altri sono piacevoli.
    Ovviamente non tutte le app sono eliminabili. Alcune garantiscono il corretto funzionamento del sistema perciò se non sapete cosa state per cancellare lasciate perdere e chiedete a qualcuno altre info. A questo link trovate un bel elenco delle app divise in due categorie: sicure da eliminare - non sicure da eliminare.
    A fianco dell' app c'è una breve descrizione che vi permette di valutare cosa eliminare e cosa non eliminare.
    Io personalmente preferisco andare di mano pesante per ridurre all' osso il sistema e poi eventualmente reinserire alcune app.
    Al seguente link le app che ho eliminato:
    ImageShack® - Online Photo and Video Hosting

    Eliminiamo ora, altre parti custom sony che non risiedono nella cartella app:
    all' interno di system-->etc trovate la cartella product. CANCELLATELA, contiene altre app da eliminare.(mcafee,uefa,wisepilot)
    inoltre in system --> etc --> customization trovate la cartella applications.CANCELLATELA (foursquare)

    benissimo! A questo punto avrete un systema davvero minimale con installato solamente lo stretto necessario ma ovviamente funzionante al 100%.
    Se avete notato non abbiamo cancellato nulla dalle altre cartelle per due motivi:1) l'incidenza in memoria occupata è davvero poca. 2) se un giorno volessimo riavere alcune app originali non ci dovremmo preoccupare di reinserire librerie, permessi e altro, ma semplicemente rimettere l'app desiderata nella cartella app.
    QUI trovate il risultato che ho ottenuto dopo la pulizia...è una vera e propria rom,rootata e deodexata. Se la volete utilizzare come base è ottima ;)
    [​IMG]

    Se avete scaricato il pacchetto "minimal" avete già un pacchetto pronto all' uso da flashare via recovery. Se invece, avete eseguito manualmente alcuni passaggi, a questo punto avrete le solite due cartelle meta inf e system, quest'ultima già risistemata a dovere con pulizia, deodex e root. Come ho scritto al punto 3 per poter flashare c'è bisogno di compattare in formato zip le due cartelle e "signare" lo zip. Seguite esattamente gli stessi passaggi illustrati al punto 3. (Scaricare il template, selezionare le due cartelle e fare add to archive, aggiungendole al template, rinominate a vostro piacimento lo zip risultante e flashate.) Vi ricordo che il template è semplicemente un archivio zip vuoto e già signato a cui aggiungere i file che volete flashare.

    Un metodo alternativo e più professionale è precisamente spiegato in questa guida. Si tratta di comprimere meta-inf e system in un normale archivio zip non signato, poi seguendo un semplice metodo, procedere all' apposizione della firma digitale (sign). -- grazie a Next galaxy per la guida ;)

    6. NOZIONI ULTERIORI (NECESSARIE)
    Ottimo! Avete cucinato la vostra base su cui inserire pian piano tutto il resto: mod, app, personalizzazioni grafiche, script ecc...ecc...
    Ora inizia il lavoro più divertente ma nello stesso tempo più complesso. Prima di tutto però dovete necessariamente avere poche nozioni ma ben chiare in mente.

    UPDATER SCRIPT: si trova in meta-inf--> com--> google -->android. Contiene tutte le informazioni che servono alla recovery per sapere cosa installare, dove installarlo e con quali permessi. E' un file che dovete essere in grado di manipolare senza indecisioni. Non è complicato ma bisogna essere precisi.
    Innanzi tutto bisogna scaricare questo fantastico programmino, che vi servirà praticamente per tutto! Notepad++ Home
    Notepad ++ vi permette di aprire e modificare tutti i codici presenti in una rom (compreso, ovviamente, lo script updater).
    Dividiamo il contenuto dello script in diverse parti:
    >> show progress e ui print
    show_progress(0.1, 0);
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print("===================== ");
    ui_print("| |");
    ui_print("| |");
    ui_print("| Your Rom name |");
    ui_print("| For Xperia |");
    ui_print("| |");
    ui_print("| |");
    ui_print("=====================");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print("");
    ui_print("Flashing in Progress.....");

    abbiamo un esempio di due comandi:​
    - ui print --> La sintassi è: ui_print("inserisci qui quello che vuoi far comparire nella recovery durante l'installazione")​
    - show progress -->controlla la barra di completamento del processo di installazione che vedete comparire in basso sulla recovery.​
    sintassi: show_progress(primo numero, secondo numero)​
    Il primo numero indica di quanto deve avanzare la barra, il secondo in quanto tempo deve avvenire l'avanzamento specificato dal primo numero. Da sapere che la lunghezza totale della barra è 1,33. Inoltre il tempo indicato dal secondo numero è espresso in secondi.
    Ecco un esempio: showprogress(1.33, 60) ---> la barra di completamento si riempirà al 100% in 60 secondi.
    Attenzione!: oltre 1,33 la barra aggiunge un pezzettino alla fine risultando in un bruttissimo effetto grafico. Quindi potete scegliere di spezzettare il comando show progress nel proseguio dello script ma attenzione a non superare come somma l' 1,33. Ad esempio:
    showprogress(0.5, 20)
    ...​
    ....
    ....
    ...
    ....
    showprogress(0.5, 15)
    ...
    ....
    ...showprogress(0.33, 20)

    come vedete (0,5+0,5+0,33 = 1,33)​
    >> Formattazione o clean up
    format("MTD", "system");
    format("MTD", "cache");
    format: serve a formattare le partizioni che vedete tra ""
    in questo caso alla prima riga verrà formattato il sistema. Questo comando è necessario per ripulire il dispositivo dai dati delle precedenti rom.
    Un comando simile ma non uguale è questo:​
    format("yaffs2", "MTD", "system");
    format("yaffs2", "MTD", "userdata");
    Qui stiamo cancellando i dati del sistema e della partizione dati senza formattare. La differenza sembra banale ma non lo è: gli utenti con bootloader bloccato si troveranno con un blocco sulla scritta sony al riavvio se viene utilizzato il comando format. Perche? la recovery installata con xpart viene a trovarsi nella partizione system. Vien da se che se formatto system, formatto anche la recovery stessa. Il processo di installazione apparentemente andrà a buon fine ma al riavvio ci si accorgerà che il sistema NON è stato installato. --> blocco SONY. Questo non succede con bootloader sbloccato in quanto, presumendo che sia montato un kernel custom, la recovery si trova in un altra partizione che non viene intaccata dal format.
    ATTENZIONE: se usate il comando yaffs2 non ci saranno problemi per i bootloader bloccati, ma prima della installazione dovrete eseguire i comandi format system e format cache da recovery.
    Quindi quando cucinerete la vostra rom tenete presente questa cosa, anche per quanto riguarda le istruzioni per il flash in un eventuale condivisione del vostro lavoro.​
    >>Mounting delle partizioni virtuali
    mount("MTD", "system", "/system");
    mount("MTD", "userdata", "/data");
    Ecco i primi due comandi dell' installazione vera e propria: questi servono ad attivare le partizioni in cui dovranno essere scritti i dati della nostra rom.​

    >> estrazione di system e data
    package_extract_dir("system", "/system");
    package_extract_dir("data", "/data");
    eccoci finalmente all' installazione vera e propria, con questi due comandi installiamo rispettivamente il sistema e i dati della nostra ROM​

    >> symlink
    symlink("toolbox", "/system/bin/start");
    symlink("toolbox", "/system/bin/lsmod");
    symlink("toolbox", "/system/bin/r");
    symlink("toolbox", "/system/bin/vmstat");
    symlink("toolbox", "/system/bin/ifconfig");
    symlink("toolbox", "/system/bin/ionice");
    symlink("toolbox", "/system/bin/schedtop");
    symlink("toolbox", "/system/bin/wipe");
    symlink("toolbox", "/system/bin/reboot");
    symlink("toolbox", "/system/bin/rmdir");
    symlink("toolbox", "/system/bin/route");
    symlink("toolbox", "/system/bin/chown");
    symlink("toolbox", "/system/bin/lsof");
    symlink("toolbox", "/system/bin/getevent");
    symlink("toolbox", "/system/bin/mkdir");
    symlink("toolbox", "/system/bin/netstat");
    symlink("toolbox", "/system/bin/renice");
    symlink("toolbox", "/system/bin/uptime");
    symlink("mksh", "/system/bin/sh");
    symlink("toolbox", "/system/bin/smd");
    symlink("toolbox", "/system/bin/sync");
    symlink("toolbox", "/system/bin/mount");
    symlink("toolbox", "/system/bin/printenv");
    symlink("toolbox", "/system/bin/top");
    symlink("toolbox", "/system/bin/log");
    symlink("toolbox", "/system/bin/sendevent");
    symlink("toolbox", "/system/bin/ps");
    symlink("toolbox", "/system/bin/dmesg");
    symlink("toolbox", "/system/bin/umount");
    symlink("toolbox", "/system/bin/kill");
    symlink("toolbox", "/system/bin/stop");
    symlink("toolbox", "/system/bin/newfs_msdos");
    symlink("toolbox", "/system/bin/iftop");
    symlink("toolbox", "/system/bin/chmod");
    symlink("toolbox", "/system/bin/rmmod");
    symlink("toolbox", "/system/bin/setconsole");
    symlink("toolbox", "/system/bin/mv");
    symlink("toolbox", "/system/bin/rm");
    symlink("toolbox", "/system/bin/id");
    symlink("toolbox", "/system/bin/watchprops");
    symlink("toolbox", "/system/bin/hd");
    symlink("toolbox", "/system/bin/ctrlaltdel");
    symlink("toolbox", "/system/bin/sleep");
    symlink("toolbox", "/system/bin/ls");
    symlink("toolbox", "/system/bin/cmp");
    symlink("toolbox", "/system/bin/insmod");
    symlink("toolbox", "/system/bin/nandread");
    symlink("toolbox", "/system/bin/date");
    symlink("toolbox", "/system/bin/dd");
    symlink("toolbox", "/system/bin/getprop");
    symlink("toolbox", "/system/bin/cat");
    symlink("toolbox", "/system/bin/df");
    symlink("toolbox", "/system/bin/touch");
    symlink("toolbox", "/system/bin/ioctl");
    symlink("toolbox", "/system/bin/setprop");
    symlink("toolbox", "/system/bin/notify");
    symlink("toolbox", "/system/bin/ln");
    una serie di comandi accessori che settano il nostro sistema ( non vanno modificati)​

    >> permessi
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm(0, 3003, 06755, "/system/bin/ip");
    set_perm(0, 3003, 02750, "/system/bin/netcfg");
    set_perm(0, 3004, 02755, "/system/bin/ping");
    set_perm(0, 2000, 06750, "/system/bin/run-as");
    set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    set_perm(0, 0, 0755, "/system/etc/bluetooth");
    set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
    set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
    set_perm_recursive(0 ,0 , 0755, 0755, "/system/etc/init.d");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    set_perm(0, 0, 0755, "/system/etc/be_movie");
    set_perm(0, 0, 0755, "/system/etc/be_photo");
    set_perm(0, 0, 06755, "/system/bin/su");
    set_perm(0, 2000, 0755, "/system/bin/sysinit");
    set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    Qui impostiamo i permessi dei vari file e cartelle presenti nella rom, questa parte dovrà spesso essere modificata quando decideremo di integrare una mod nella nostra rom.

    >> disattivazione delle partizioni virtuali, unmount
    unmount("/system");
    unmount("/data");
    Questi due comandi si trovano alla fine dell' installazione e servono a smontare le partizioni virtuali che avevamo in precedenza attivato con i comandi "mount".
    ATTENZIONE: non dimenticateli, altrimenti il vostro dispositivo non si avvierà ;)

    >> altri comandi
    vi rimando a questa guida in cui troverete la sintassi di altri utili comandi dell' uipdater script come ad esempio l' estrazione di file o cartelle sulla sd, il delete di file o cartelle (serve per le mod) e tanti altri.​


    BUILD.PROP: Come già accennato in precedenza, all' interno della cartella system, oltre ad alcune cartelle (scusate la ripetizione), trovate un file "sparso" , il build.prop.
    E' un file che si può aprire come testo, il modo migliore per farlo è utilizzare il fidato notepad++.
    -------------
    Mi permetto di darvi un consiglio che vale per questo file come per tutti gli altri: il modo migliore per "capirci qualcosa" è esplorare, non abbiate paura ad aprire i file della rom, non cambiate nulla se non sapete cosa state facendo..ma esplorate, esplorate, esplorate. Aprite i vari file e cercate di capirne il contenuto, il linguaggio, le funzioni! La maggior parte delle volte scoprirete che android "parla" in modo davvero intuitivo e non servono grosse guide per muovere i primi passi. Moltissimi dei files presenti nelle rom si possono aprire e modificare come semplicissimi file di testo, quindi siate intraprendenti e curiosi :).
    ---------------
    Fine dell' OT, torniamo al buil.prop. Questo file è una miniera vera e propria, con semplici modifiche possiamo specificare comportamenti e feature del nostro dispositivo.
    Non mi dilungo in questa parte ad illustrarvi le varie modifiche, per ora vi basti sapere che il build prop contiene tutte le informazioni aggiuntive che vengono impartite al sistema, oltre alle impostazioni di base. Possiamo paragonarlo ad un libretto di istruzioni avanzate che il sistema va a leggere per capire come comportarsi.


    7. PERSONALIZZIAMO LA NOSTRA ROM
    Arrivati a questo punto abbiamo un sufficiente bagaglio per iniziare la personalizzazione. Prima di tutto facciamo una distinzione tra le varie modifiche che possiamo scegliere di integrare nella rom. Ho provato a creare alcune categorie che analizzeremo nel corso della guida passo a passo. Sono in ordine crescente di difficoltà:
    • sostituzione, aggiunta ed eliminazione di applicazioni semplici di sistema + differenza app sistema vs app utente
    • integrazione di mod preconfezionate da altri
    • personalizzazione applicazioni e framework-res, grafica e codice
    • personalizzazione del sistema, build.prop, inid.t, file.jar.

    7.1 SOSTITUZIONE, AGGIUNTA ED ELIMINAZIONE DI APPLICAZIONI SEMPLICI DI SISTEMA
    E' la prima vera personalizzazione. Consiste nel eliminare ( e l'abbiamo già fatto con la pulizia del sistema), sostituire e aggiungere varie applicazioni presenti nella cartella system-->app. Come vedete nel titolo del paragrafo ho inserito la parola "semplici". Con questo intendo tutte le app che non hanno bisogno di particolari aggiunte oltre al pacchetto apk stesso. (ad esempio l'app camera NON è semplice, ha bisogno di librerie, permessi e altro. Una calcolatrice invece non ha bisogno di altro, basta per se stessa.). In generale, tutte le app che potete trovare nel market sono applicazioni semplici. Mentre la maggior parte delle app che trovate integrate nelle varie mod su xda sono applicazioni complesse. Se non siete sicuri dell' entità dell' app che volete integrare, fate una domanda nei commenti.
    Facciamo ora un esempio tipico di sostituzione di un app semplice: il calendario. (a mio parere quello stock di sony è inguardabile).
    Come procediamo? Per prima cosa dobbiamo procurarci la nostra app da inserire. La possiamo prendere da una rom, scaricare da internet, utilizzare programmi di sharing come 4shared, scaricare dal market sul dispositivo ed estrarla.
    - Se la prendiamo da una rom custom, ci basta estrarre la rom custom, entrare nella cartella system->app. Copiare il file SemcCalendar.apk e lo incollarlo all' interno della mia cartella system->app.
    HELP!: non trovo la cartella system nella custom rom da cui voglio prendere il calendario!!SOLUZIONE: le ultime rom custom, hanno integrato l'aroma installer, (per chi non lo conoscesse è un programmino che si avvia durante il flash delle rom che permette di utilizzare una interfaccia utente molto intuitiva e semplificata per guidare l' utente in una installazione personalizzata dei vari componenti) la cartella system si può trovare quindi all' interno della cartella AROMA o probabilmente nel percorso AROMA->"nome del dispositivo" (xes: arome->arc s)
    - In rete con una ricerca su google si possono trovare facilmente i file apk. che ci interessano. In questo caso basterà inserirli nella nostra cartella system-->app.
    - stesso discorso se scaricate l'apk da servizi di sharing
    -Le cose cambiano se vogliamo integrare un app che abbiamo già scaricato ed installato sul nostro device, come per esempio un app galleria, un app messaggi, radio, mp3 player e altro. In questo caso dobbiamo dotarci di uno strumento più professionale: ANDROID SDK.
    QUI una guida ben fatta. Notate che avrete bisogno di java installato sul pc. Nella guida è specificato anche la procedura per questo.

    APPROFONDIMENTO SULL' ESTRAZIONE DI UN FILE APK DAL DISPOSITIVO, UTILIZZANDO L'SDK.
    Quando avete installato l'sdk potrete considerarvi già cuochi "attrezzati" , infatti l'sdk è lo strumento ufficiale di android per lo sviluppo di applicazioni e sistemi.
    Le sue funzioni sono moltissime, ma per ora ci concentreremo sull' estrazione delle app dal dispositivo.
    Con l'installazione di questo strumento è stata creata una cartella di nome adt-boundle-windows.
    Entrate nel percorso: (adt-boundle-windows)--->(sdk)--->(platform-tools) qui troverete alcuni file , il più importante è adb.exe
    Se avete win vista, 7 e superiori a questo punto tenete premuto il tasto maiusc e cliccate col dx in uno spazio vuoto. Selezionate apri finestra di comando qui.
    Se avete win xp e precedenti dovere aprire il promt dei comandi dal start, accessori. Poi dovete spostarvi nella cartella platform-tools. Ad esempio se avete installato la cartella adt-boundle-windows nella directory C del vostro PC, il comando da digitare sarà:
    cd C:\adt-boundle-windows\sdk\platform-tools
    facendo invio l' output dovrebbe essere qualcosa tipo:C:\adt-boundle-windows\sdk\platform-tools>
    In entrambi i casi il prompt sarà pronto ad eseguire i vostri comandi.
    Collegate il telefono con debug usb e se vi esce il messaggio di pc companion tappate su ignora.
    Ora dovete digitare alcuni comandi che vi permetteranno di entrare nella cartella di sistema dove vengono installate le app del market. Nell' ordine i comandi sono:(digitate il comando tra le "" e fate invio alla fine di ogni comando)
    - "su" <-- comparirà un #, significa che state operando con i diritti di root
    - "adb shell" <-- equivalente dell 'esplora directory
    - "cd data/app" <--navigate nella cartella data/app, cioè dove si trovano le app installate dal market o da parti terze
    - "ls" <-- (la prima è un L non i) crea una lista dei files presenti nella cartella in cui vi trovate

    Questo uno screen shot che mostra i comandi e l'output
    [​IMG]

    Ora lasciate aperta questa finestra e con lo stesso procedimento di prima, apritene un'altra.
    Questa volta dopo il solito comando "su" (potete saltarlo se è già presente il #) dovete digitare solamente questo comando:
    "adb pull" seguito dal percorso e dall' apk che volete estrarre (pull)
    ecco un esempio di quello che dovreste avere visualizzato
    [​IMG]

    Ora nella cartella platforma tool troverete l'apk appena estratto, potete inserirlo nella cartella system-->app della vostra rom. In questo modo l'app sarà inclusa nel sistema.

    DIFFERENZA TRA APP DI SISTEMA E APP UTENTE:abbiamo visto come includere un app nella partizione di sistema, questo mi porta a specificare la differenza tra le app di sistema e quelle utente.
    Le differenze maggiori sono 2: - le app di sistema non si possono aggiornare tramite il market (tutte tranne il playstore) mentre quelle utente si.
    - le app di sistema non si possono disinstallare dalle normali opzioni ma è necessario ricorrere a titanium backup o root explorer.

    Vedete voi cosa inserire in system e cosa in data.
    Per inserire un app in data dovrete creare una cartella app dove avete system e meta inf
    [​IMG]

    all' interno di data create una cartella "app". All' interno di app mettete tutti gli apk che disiderate.

    7.2 INTEGRARE MOD PRECONFEZIONATE DA ALTRI
    Su xda developers molti dev con i contro...bip hanno assemblato delle fantastiche mod per dare una marcia in più al nostro arc. Per esempio si possono trovare modifiche grafiche ma anche miglioramenti del suono, della fotocamera, lockscreen, port da altri device e chi più ne ha, più ne metta.
    Sicuramente ci sarà stata una qualche mod che vi è particolarmente piaciuta e allora perchè non integrarla nella propria rom?
    Piccola avvertenza: Se deciderete di pubblicare il vostro lavoro e avrete integrato delle mod altrui, è strettamente necessario chiedere il permesso agli sviluppatori della mod. Generalmente anche piccole modifiche richiedono tempo e impegno, perciò....mi raccomando.
    Ora vediamo come integrare una mod. Il procedimento è sempre lo stesso quindi vi farò vedere come fare con un esempio, dovrete sempre procedere nello stesso modo. ATTENZIONE: siate molto molto accorti su quello che integrate!!! Se non siete sicuri chiedete...Soprattutto dovete fare attenzione alle mod che includono file della cartella framework. Modificare, sostituire questi file comporta agire direttamente sul funzionamento del dispositivo. NOn ci sono particolari controindicazioni, ma se ad esempio vi siete modificati graficamente la rom e poi installate una mod con un nuovo framework-res, tutte le vostre modifiche grafiche andranno perse. Successivamente in questa guida, vedremo come affrontare mod particolari come la lockscreen e il power menù avanzato.

    Vedremo ora come esempio generale, l' integrazione del port del nuovo walkman xperia v/z creato per l'arc s dal dev Pranav. Lo trovate qui.
    Questi sono i passaggi da seguire:
    • scaricare il pacchetto zip della mod.
    • estrarre il pacchetto zip
    [​IMG]

    • aprire la cartella estratta
    [​IMG]

    • aprire a fianco la cartella della propria rom
    [​IMG]




    continua domani;)
     
    Ultima modifica: 25 Mar 2013
    A ikee, maxim20, MarcusOptimus e ad altre 14 persone piace questo elemento.
  2. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    riservato
     
    A yann73 piace questo elemento.
  3. Pasquale91fg

    Pasquale91fg Baby Droid

    Iscritto:
    27 Mag 2012
    Messaggi:
    5
    "Mi Piace":
    2
    Guida perfetta! attendo il proseguimento con ansia :) .. mi piacerebbe conoscere come modificare batteria, barra di stato.. insomma la parte grafica ecc..! cmq attendo il proseguimento mano mano :)
     
  4. franyo

    franyo Silver Droid

    Iscritto:
    13 Feb 2013
    Messaggi:
    3.240
    "Mi Piace":
    2.350
    Grande Matteo ;) (come sempre:)), mi piacerebbe provare a trovare un po' di tempo per confezionarmi una rom "Self Made", senza tanti orpelli, leggera e su misura.....

    Esempio:

    - Laucher Xperia
    - Notification toggle Xperia TX
    - Icone barra notifiche AOSP
    - Lockscreen AOSp
    - On screen button(22 dpi)
    - Player MX (no walkman non lo uso)
    - no Album ma quick pic
    - Senza small apps
    - Superveloce :ihih:

    ....segue
     
  5. simo90mj

    simo90mj Baby Droid

    Iscritto:
    16 Dic 2012
    Messaggi:
    14
    "Mi Piace":
    0
    fantastico!!! Sono alla prima esperienza con questo genere di cose e volevo chiedere se la rom minimal è uguale alla stock,ma praticamente senza app? Vorrei metterla sul'Arc S della mia ragazza che è un brand Tim e ha quindi molte app che non le servono occupando solo memoria...
    Praticamente una volta acceso con questa rom cosa cambia rispetto all'originale? Guadgna un po' di fluidità? Sarebbe bello poter avere più memoria per le app nel dispositivo.
    Grazie per l'aiuto :)
     
  6. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    Ottimo! Io anche ero partito da lì per fare la mia rom..oggi non ho un minuto ma domani cerco di integrare la guida, visto che per ora spiega solo gli inizi ;)

    ---------- Post aggiornato alle 18:50 ----------

    Ciao, la rom minimal è esattamente come la stock ma ripulita da ogni genere di app superflue e anche qualcosa in più.
    In altre parole è un sistema operativo funzionante al 100% con installate solo le applicazioni necessarie al suo funzionamento e qualche app di base come calcolatrice, launcher, messaggi, camera, radio e ricerca di google.

    A tutto ciò ho aggiunto i diritti di root.

    Per mettere questo sistema hai comunque bisogno di avere il bootloader sbloccato ;)
     
  7. franyo

    franyo Silver Droid

    Iscritto:
    13 Feb 2013
    Messaggi:
    3.240
    "Mi Piace":
    2.350
    R: Cucinare una custom ROM ICS (tool e strumenti)

    Domanda, dopo aver estratto la ROM, deodexata, e ripulita, per installarla:
    Rizzippo la cartella o altro??

    Inviato dal mio Nexus 7 con Tapatalk 2
     
  8. simo90mj

    simo90mj Baby Droid

    Iscritto:
    16 Dic 2012
    Messaggi:
    14
    "Mi Piace":
    0
    Per sbloccarlo e poi flasharla come faccio?
    Grazie per l'aiuto!
     
  9. next galaxy

    next galaxy Worker Droid

    Iscritto:
    2 Set 2012
    Messaggi:
    445
    "Mi Piace":
    100
    R: Cucinare una custom ROM ICS (tool e strumenti)

    Zippi meta-inf, system e boot.img in un archivio e poi lo devi signare.
    Usa questa mia guida http://www.tuttoandroid.net/forum/showthread.php?t=22439

    inviato da next galaxy™®©
     
    Ultima modifica: 22 Mar 2013
    A franyo piace questo elemento.
  10. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    esatto! Noi però non abbiamo boot.img che è l'immagine di avvio del kernel. Seguendo la guida di next, comprimi in un archivio zip system e meta inf senza modificare le opzioni di default del programma. Poi procedi con il sign.

    In alternativa puoi seguire il punto 3 di questa guida. Trovi infatti lo zip "template" che non è altro che un archivio già signato e vuoto a cui aggiungere le tue cartelle system e meta inf.
    Puoi utilizzare quello zip ogni volta che vuoi flashare qualcosa, sia esso ROM o MOD. Per aggiungere cartelle ad un archivio ti basta selezionarle, click col dx e "add to archive", selezionando il template. Semplicissimo no?
     
    A franyo e yann73 piace questo messaggio.
  11. simo90mj

    simo90mj Baby Droid

    Iscritto:
    16 Dic 2012
    Messaggi:
    14
    "Mi Piace":
    0
    Come faccio a sbloccare il bootloader e flash are?
     
  12. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    Ciao, segui questa guida per lo sblocco. Se hai problemi apri un nuovo thread chiedendo aiuto, così non intasiamo questo.Grazie
     
    Ultima modifica: 23 Mar 2013
  13. franyo

    franyo Silver Droid

    Iscritto:
    13 Feb 2013
    Messaggi:
    3.240
    "Mi Piace":
    2.350
    Cristallino :thumb:

    Fatto!

    Screenshot_2013-03-23-11-59-36.jpg
     
  14. simo90mj

    simo90mj Baby Droid

    Iscritto:
    16 Dic 2012
    Messaggi:
    14
    "Mi Piace":
    0
    Ad esempio vorrei mettere il calendario di google e scarico Google Calendar.apk (ce n'è sono tante versioni, come trovare quella giusta?). Vado a cancellare il calendario stock in system--->app e metto quello di google?
    Per fare ciò però devo estrarre nuovamente i file system e meta-inf che andranno poi certificati nuovamente con template?
     
    Ultima modifica: 23 Mar 2013
  15. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    Allora, google calendar è un app disponibile sul market. In questi casi quindi, la cosa più semplice è scaricarla normalmente.
    Dopodichè con titanium backup disinstallare il calendario stock.

    Se vuoi che il calendar sia incluso nella tua rom già con l'installazione della rom stessa devi procurarti l'apk e inserirlo in system-->app o meglio ancora in data app. (vedi ultima parte della guida).
    Per procurarti l'apk segui quello che ho scritto sull' uso dell' sdk.
    Le operazioni da fare sono: scaricare l'app dal market, con sdk estrarla dal telefono, inserirla in system o in data.

    Per quanto rigurada l' ultima parte della domanda:
    Ogni volta che dicidi di modificare il system o metainf le cartelle devo essere non compattate.
    Tutte le operazioni non vanno fatte sul pacchetto zip. Bisogna estrarre, modifcare e ricompattare per il flash ;)

    ps: se hai problemi carico l'app che ti serve...non voglio essere troppo severo, però l' unico modo per impare le cose è farsele da soli no?
    fammi sapere se hai bisogno :)
     
  16. simo90mj

    simo90mj Baby Droid

    Iscritto:
    16 Dic 2012
    Messaggi:
    14
    "Mi Piace":
    0
    ho scaricato ad esempio l'apk del calendario di Samsung da google. La copio in system e cancello calendar già presente? Basta fare copia incolla semplice?
     
  17. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    Il processo, si, è semplicemente un copia incolla.

    Però non è così scontato che l'app in questione funzioni sul tuo dispositivo. Mi spiego:
    I pacchetti apk contengono generalmente tutto ciò che serve all' applicazione per funzionare. Questo vale per le applicazioni non branded.

    Per quelle specifiche della casa produttrice invece, come può essere il calendario samsung(touchwiz), il discorso cambia.
    Questo tipo di apk infatti non contiene tutte le risorse grafiche necessarie, in quanto alcune di esse sono contenute in un altro file: il framework-res. Addirittura alcune case (come la sony e la htc) inseriscono nei loro sistemi un secondo file: SemcGenericUxp-res (per la sony) in cui sono contenute ulteriori risorse grafiche.

    Poi l'applicazione cosa fa? utilizza le sue risorse ma alcune parti le prende da questi file accessori.
    Vien da se che se tu usi il calendario samsung su un sony l'app non troverà le risorse grafiche necessarie per cui non funzionerà.

    In questi casi si dice che bisogna fare un PORT. Cioè adattare l'app di un altro dispositivo al proprio. Bisogna tenere conto della dimensione dello schermo e appunto, delle risorse accessorie a cui l'app è collegata. E', direi piuttosto complicato.

    Se vuoi mettimi il link del calendario che vorresti integrare, io gli do uno sguardo e ti dico come potresti procedere.
     
  18. next galaxy

    next galaxy Worker Droid

    Iscritto:
    2 Set 2012
    Messaggi:
    445
    "Mi Piace":
    100
    R: Cucinare una custom ROM ICS (tool e strumenti)

    Per la Samsung, inserisce nei suoi firmware oltre al framework-res.apk il TWframework-res.apk (TW sta per touchwiz ;)

    inviato da next galaxy™®©
     
  19. simo90mj

    simo90mj Baby Droid

    Iscritto:
    16 Dic 2012
    Messaggi:
    14
    "Mi Piace":
    0
    https://hotfile.com/dl/199668278/83549de/TouchWizCalendar.apk.html
     
  20. MatteoV

    MatteoV Moderator Membro dello Staff

    Iscritto:
    28 Feb 2013
    Messaggi:
    967
    "Mi Piace":
    837
    Ecco, questa è proprio una di quelle app che hanno bisogno di un port. In questo momento non ho molto tempo libero e devo anche concludere la ecosnap.
    Quando avrò finito posso provare a renderla compatibile ma adesso non riesco proprio..mi spiace :(
     
    A simo90mj piace questo elemento.