Una piccola premessa è d’obbligo. Il SystemUI.apk è uno dei programmi di sistema di Android che gestiscono molte delle icone presenti nella status bar, i suoi colori, la stessa status bar e la tendina delle notifiche. Nei sistemi Android non personalizzati (come i Samsung e gli LG) il SystemUI ha dipendenze dal solo file di sistema framework-res.apk. Nel nostro caso dipendenze esistono anche con altri file, in quanto abbiamo l’interfaccia Sense di HTC. Tali dipendenze significano che il SystemUI ha riferimenti diretti con un altro file di sistema, proprietario del produttore del terminale, per noi HTC. Per il DHD la dipendenza è con il file com.htc.resources.apk, così adesso sapete perchè nella UOT viene richiesto di caricare questo file, anche se non viene utilizzato nel framework finale. La UOT Kitchen è un grande e superbo strumento, ma non lavora solo per il DHD ed è nata per il Desire liscio con ROM Froyo, quindi è in continua evoluzione. Allo stato attuale, moltissime delle modifiche elaborate nelle varie finestre della cucina vengono, poi, correttamente applicate al SystemUI.apk, ma altre no. La più “rognosa” è quella di non cambiare il colore del testo nella tendina notifiche, quando si sceglie uno sfondo nero, così le notifiche sono illegibili, in quanto risultano scritte in nero, su sfondo nero. Questa guida mostra come ovviare al problema.
Avremo bisogno di qualche strumento, ma tutti sono reperibili sul web e su XDA, nostra bibbia per il modding.
Il primo è Java, motore principale di Android, quindi verificate ed installate o aggiornate Java sul vostro PC da QUI
Il secondo è ADB, ma meglio ancora il SDK di Android, che lo contiene. Lo potete scaricare da QUI , dove trovate anche le istruzioni per installarlo.
Apro una parentesi sul SDK di Android, in quanto per utilizzare APK Manager c’è bisogno che i comandi ADB siano eseguibili da qualsiasi percorso del disco c:, ma per fare questo c’è bisogno che venga inserito il percorso del programma ADB nel PATH di sistema di Windows.
Installate il SDK nella root del disco C: e quando lo lanciate vi chiederà di effettuare degli aggiornamenti. Selezionate gli aggiornamenti in modo tale che, alla fine, abbiate gli stessi package installati che vedete nella figura sotto.
Non scaricate nulla della API13 e nulla connesso con Android 3 (Honeycomb) in quanto spesso danno problemi quando si lavora su Gingerbread.
Il percorso del programma ADB è stato spostato nelle ultime versioni del SDK, quinti va scaricato completamente tramite aggiornamento e verrà creata la nuova cartella che lo contiene in C:\android-sdk-windows\platform-tools. Per inserire questo percorso nel PATH di sistema, aprite una finestra DOS e digitate i seguenti comandi:
1) c:
2) cd \
3) path c:\android-sdk-windows\platform-tools;%path%
In questo modo I comandi ADB saranno eseguibili da qualsiasi percorso.
Altro strumento fondamentale è APK Manager, un semplice script che lavora in finestra DOS, che trovate QUI e per il quale i meriti vanno assolutamente al suo creatore, Daneshm90, nonchè a Brut.All, creatore di APKTool, incorporato nello script e motore codec di APK Manager, più tutti gli altri citati nel thread relativo. Leggetevi bene il thread e guardatevi il filmato presente al primo post, anche se è stato fatto con una versione precedente alla release attuale.
Ultimo strumento è Notepad++, che sarà necessario (non indispensabile, perchè va bene qualsiasi text editor, ma questo è particolarmente completo perchè riconosce la sintassi di programmazione) per modificare il codice sorgente dei file xml e smali. Potete scaricarlo gratuitamente dal web e non metto link, in quanto sono tutti dinamici, ma con una semplice ricerca su Google lo trovate subito.
Ovviamente è consigliabile avere sempre WinRar installato, perchè è il metodo più veloce per estrarre/inserire file dagli zip flashabili e/o dagli apk.
OK, cominciamo: prepariamo la macchina a decompilare il SystemUI, in parte abbiamo già fatto molto, installando i pacchetti citati sopra;
Installare il framework di dipendenza principale del SystemUI: framework-res.apk
E' un operazione che potrebbe anche non essere fatta, ma essendo le ROM in conutinua evoluzione, può evitare problemi di generazione di errori in fase di decompilazione e ricompilazione del SystemUI ed è bene ripeterla tutte le volte che la decompilazione genera errori:
1) andate nella cartella dove avete installato APK Manager, cercate la cartella “other”, dentro trovate il file apktool.jar: copiatelo nella root del vostro disco C:
2) dalla ROM che volete moddare estraete i file SystemUI.apk dalla cartella system\app e i files framework-res.apk e com.htc.resources.apk dalla cartella system\framework e copiate anche questi nella root del vostro disco C:
3) aprite una finestra DOS e digitate I seguenti comandi:
a. c:
b. cd \
c. java -jar apktool.jar if framework-res.apk
d. java -jar apktool.jar d -f SystemUI.apk decompiled
e. quando ha finito chiudete pure la finestra DOS
Adesso siete in grado di decompilare qualsiasi apk della ROM in questione.
Decompilare il SystemUI.apk per le modifiche al codice sorgente
Il codice sorgente dei programmi una volta scritto deve essere compilato per essere eseguito come programma e parecchio di questo codice, una volta compilato, viene nascosto, tant’è che se aprite un file apk con WinRar vedrete solo alcune delle cartelle che effettivamente compongono il file. Per effettuare le modifiche necessarie al nostro scopo bisogna decompilare il programma apk con APK Manager. Per installarlo basta decomprimere il contenuto del file scaricato in una cartella a vostro piacimento. In questa cartella come avrete già visto ne troverete altre. Avete già estratto il SystemUI.apk dalla ROM, quindi lo riprendete e ne fate una copia nella cartella “place-apk-here-for-modding“. Andate nella cartella APK Manager e lanciate lo script.bat. Vi aprirà una finestra DOS con svariate opzioni.
La prima da selezionare è la 22, per impostare il progetto attuale, e selezionate il numero corrispondente al SystemUI.apk.
Adesso utilizzate la funzione 20 per incrementare la memoria di lavoro di APK Manager a 512 MB ed evitare impuntamenti in fase di decompilazione/compilazione dei programmi.
Il SystemUI, come detto prima, ha anche una dipendenza dal file com.htc.resources.apk, per cui per decompilarlo dobbiamo utilizzare l’opzione 10 in APK Manager. Inizierà, così, la decompilazione del SystemUI ed il programma vi chiederà di indicare il file delle risorse correlato; a questo punto dovete inserire nella finestra DOS la seguente riga:
c:\com.htc.resources.apk
e date “Invio”.
APK Manager macinerà un altro po’ e poi ritornerà alla schermata iniziale. Adesso il SystemUI è decompilato e pronto ad essere modificato. Riducete ad icona la finestra DOS di APK Manager e lanciate il programma Notepad++. Tutto il programma sorgente lo trovate nella cartella “projects\SystemUI.apk” di APK Manager. In questa cartella dovete aprire il file “colors.xml” che trovate in “res\values”, come da figura.
Una volta aperto il file vi si presenterà come nella prossima figura (quello mostrato è già parzialmente modificato):
Quello che dovete fare è modificare il codice colore di tutte le righe nel modo seguente:
<color name="primary_text_color">#ffffffff</color>
<color name="secondary_text_color">#ffffffff</color>
In pratica inserite tutte "f". Poi salvate il file e chiudete Notepad++.
Fatto, questo è tutto il problema di quel maledetto testo nero su sfondo nero, adesso bisogna ricompilare il SystemUI.
Ricompilazione del SystemUI.apk
Ripristiniamo la finestra DOS di APK Manager e selezioniamo la funzione 11 per la ricompilazione. Inizierà l’operazione e durante il processo vi chiederà se quello ricompilato è un file di sistema;
rispondete si (y).
A questo punto vi chiederà se avete modificato qualcosa e se volete preservare le cartelle non modificate per evitare errori di ricompilazione;
anche qui rispondete si (y).
Vedrete la finestra DOS macinare un casino di righe e poi vi comparirà un messaggio che sostanzialmente vi chiede di eliminare a mano, da una cartella specifica da lui creata che si chiama “keep”, tutti i file modificati da voi e poi di tornare sulla finestra e premere un tasto per continuare.
A questo punto riducete ad icona APK Manager e andate nella cartella di installazione, cercate la cartella “keep” e cancellate il file “resources.arsc” che troverete all’interno;
Ora tornate sulla finestra di APK Manager e premete un qualsiasi tasto per terminare la compilazione.
Una volta terminato il processo, selezionate la funzione 24 per uscire da APK Manager (potrebbe essere necessario selezionarla due volte per un bug del programma, non vi allarmate) e andate nella cartella “place-apk-here-for-modding“. Troverete un nuovo file che si chiama “unsignedSystemUI.apk”:
Prendete questo file, copiatelo in un’altra cartella, magari quella dove avete estratto i file necessari per la UOT Kitchen, e rinominatelo come “SystemUI.apk”, perchè questo sarà il file che dovrete caricare nella UOT per ottenere gli sfondi neri e le scritte bianche!! Avete finito!!