APK Multi-Tool 1.0.11: Come decompilare/compilare un APK
Cosa impareremo da questa guida:
Questa guida nasce per aiutare coloro che vogliono entrare attivamente nel mondo del modding ma sono scoraggiati dalla sua immensità come fu per il mio esordio, per questo vi accompagnerò per mano alla porta principale (proprio come farebbe una mamma con il suo piccolo) presentandovi il primo straordinario e fondamentale strumento APK Multi-Tool 1.0.11 con il quale cominceremo a gettare i primi passi.
Prima di iniziare però voglio precisare che quello che fate è a vostro rischio e pericolo e siete responsabili per eventuali problemi che potreste causare al vostro Nexus.
Cosa ci serve per poter iniziare:
1) Prima di tutto avremo bisogno di configurare l'ambiente di lavoro Windows (JDK, Android SDK, driver ecc.) e per questo vi rimando (temporaneamente finchè non trovo un pò di tempo, perdonatemi per questo) alla guida sullo Sblocco Manuale del Nexus dato che è già stato spiegato li.
2) 7-Zip per aprire i file .zip e scaricabile da qui.
3) Il nostro APK Multi-Tool 1.0.11 che potete scaricare da qui oppure da qui.
4) Notepad++ che potete scaricare da qui.
5) Il file framework-res.apk della ROM che avete installata o per la quale volete realizzare la Mod che trovate al percorso rom.zip\system\framework\.
6) Il file.apk che volete decompilare/compilare per apportare le modifiche volute.
Installiamo APK Multi-Tool 1.0.11:
Estraiamo il contenuto del file APK-Multi-Toolv1.0.11.zip in una cartella qualsiasi purchè sia nel percorso completo che nel nome della cartella stessa non ci siano spazi cioè C:\ANDROID\APK-Multi-Tool-1.0.11\APK-Multi-Tool\ va bene invece C:\ANDROID\APK Multi-Tool 1.0.11\APK-Multi-Tool\ non va bene.
A questo punto dovreste trovarvi il seguente albero dei file come da screenshot:
Fate partire il file Setup.bat e vi troverete la seguente schermata.
A questo punto solo la prima volta bisogna creare le cartelle tramite l'opzione 3. Setup Directories poi digitare 00 Quit e invio per uscire, il tool ha creato delle altre cartelle di cui parleremo più sotto quando ci serviranno.
Abbiamo finito di predisporre tutto l'ambiente di sviluppo ed ora possiamo procedere alla decompilazione del nostro primo file.apk.
Decompiliamo il nostro primo file.apk:
Prendiamo come esempio proprio il file framework-res.apk che estrarremo dalla nostra ROM, questo file è "speciale" perchè oltre ad essere per noi un qualsiasi file APK da modificare è anche il file da cui attingono anzi dipendono tutti gli altri APK "non speciali" .
Proprio per questo suo essere speciale il file framework-res.apk della ROM va copiato in 2 diverse cartelle cioè place-apk-here-for-modding ed in other, in genere invece i vari file.apk vanno copiati solo in place-apk-here-for-modding ed è qui che li ritroveremo anche dopo la ricompilazione.
A questo punto bisogna installare il framework-res.apk, lanciamo allora Setup.bat digitiamo 2. Installing Framework-Res poi digitare 1. Install framework-res.apk infine digitare 00 Quit e invio per uscire, la stessa procedura sarà effettuata ad ogni cambio di ROM, anche nel cambio di nightly nel caso della CM.
Una volta installato il framework-res.apk possiamo decompilarlo e darci un'occhiata dentro ... tanto per sbirciare un pò , per decompilare qualsiasi file.apk dobbiamo seguire questa procedura:
1) Mettere il file.apk da decompilare nella cartella place-apk-here-for-modding (lo abbiamo già fatto prima per il file di esempio framework-res.apk).
2) Lanciamo il file Script.bat dalla cartella di APK Multi-Tool e dopo un Invio ci ritroviamo la seguente schermata (screenshot valido solo per la versione 1.0.11 di APK Multi-Tool usato in questa guida).
3) Digitiamo 24 Set current project per scegliere il file da decompilare (nel nostro esempio scegliamo framework-res.apk) e diamo Invio .
4) Decompiliamo il framework-res.apk digitando 9 Decompile apk e dando Invio come sempre per confermare la scelta.
A questo punto il tool procederà alla decompilazione del framework-res.apk all'interno della cartella projects/framework-res.apk/ e potremo procedere alle varie modifiche.
Facciamo ora un esempio concreto di modifica al framework-res.apk per mettere in pratica quello che abbiamo appena imparato.
Esempio: Modifica altezza NavBar da 48dpi a 36dpi.
Per realizzare la modifica dell'altezza della NavBar andiamo nella cartella
\framework-res.apk\res\values\ ed apriamo con Notepad++ il file
dimens.xml, cerchiamo la seguente porzione di codice e cambiamo i valori originali:
codice:
<dimen name="navigation_bar_height">48.0dip</dimen>
<dimen name="navigation_bar_height_landscape">48.0dip</dimen>
<dimen name="navigation_bar_width">48.0dip</dimen>
con questi modificati per avere la NavBar da 36dpi (per una 32dpi useremo analogamente la coppia di valori 32.0/30.0):
codice:
<dimen name="navigation_bar_height">36.0dip</dimen>
<dimen name="navigation_bar_height_landscape">48.0dip</dimen>
<dimen name="navigation_bar_width">34.0dip</dimen>
Ricompiliamo il nostro primo file.apk:
Dopo aver apportato le modifiche volute ad immagini, file .xml e file .smali siamo giunti alla fase della ricompilazione e non vediamo l'ora di buttare il nuovo file.apk moddato dentro il nostro caro Nexus per goderci il nostro primo capolavoro
A questo punto però si aprono 2 strade a seconda che abbiamo moddato un file di sistema (appartenente alla nostra rom) oppure un file non di sistema quale potrebbe essere un tema.apk, percorriamo allora le 2 strade:
1) Ricompilazione APK di sistema (no signed) opz. 11
Ricompiliamo il nostro framework-res.apk appena modificato procedendo con i vari passi:
- Digitiamo 11 Compile System APK files e diamo invio, dopo qualche secondo ci apparirà il seguente messaggio
codice:
Aside from the signatures, would you like to copy
over any additional files that you didn't modify
from the original apk in order to ensure least
# of errors (y/n)
Type input:
- Digitiamo y e dopo aver premuto Invio il tool creerà una cartella chiamata keep e ci verrà restituito il seguente messaggio
codice:
In the APK Multi-Tools folder u'll find
a keep folder. Within it, delete
everything you have modified and leave
files that you haven't. IF you have modified
any xml, then delete resources.arsc from that
folder as well. Once done then press enter
on this script.
Premere un tasto per continuare ...
Prima di premere un tasto per andare avanti, dobbiamo cancellare dalla cartella keep tutti i file modificati (.xml e/o .png), inoltre se abbiamo apportato modifiche ai file .smali va cancellato il file classes.dex e se è stato modificato anche 1 solo file .xml va cancellato anche il file resources.arsc, ritorniamo nella schermata del tool e premiamo un tasto per completare la mod.
- A questo punto abbiamo finito nella cartella place-apk-here-for-modding troviamo il nostro file moddato unsignedframework-res.apk che deve essere rinominato in framework-res.apk.
(Per applicare la mod bisogna poi realizzare uno zip flashabile oppure sostituire nel Nexus il framework-res.apk dando i permessi rw r r e riavviando il dispositivo.)
2) Ricompilazione APK non di sistema (signed) opz. 15 (All in one)
In questo caso la procedura è molto più semplice:
- Attivare il debug usb sul nexus e collegarlo al PC (se non lo attivate poco male, vi ritrovate comunque il file nella cartella place-apk-here-for-modding e potrete installarlo manualmente
- Digitare 15 Compile apk / Sign apk / Install apk (Non-System Apps Only) e premere invio, in un colpo solo il file sarà ricompilato, signato ed installato sul nexus ... figo no ?
- Anche in questo caso abbiamo finito e come nel caso precedente vi ritrovate il nuovo APK modificato e signato nella cartella place-apk-here-for-modding con il nome signedNomeOriginale.apk che potete mettere in archivio o in SD per eventuale uso futuro.
Credo di non aver dimenticato nulla, se qualcuno vuole provare a decompilare e ricompilare può cominciare a realizzare ad esempio la modifica alla navbar.
Segnalatemi eventuali errori o dimenticanze così cerchero di integrare e/o correggere prima possibile magari tramite MP per non sporcare il Thread.
Piccola video guida:
Spero con questa guida di aver fatto cosa gradita e che apprezziate l'impegno e lo sforzo non indifferente.
Saluti,
Paola.