Studiare e modificare le applicazioni Android

Come avrete capito sono molto interessato e appassionato di tutto ciò che riguarda il mondo Android. Passando in rassegna il market e testando applicazioni mi è capitato spesso di pensare a come avrei voluto cambiare alcuni particolari (grafici e non) dei programmi installati. Se è capitato anche a voi seguite questa guida, oggi vi spiego come decompilare e modificare i file “apk”. Partiamo con il download di tutti gli strumenti che ci serviranno.

Strumenti necessari:

  1. JDK (Java Development Kit). Se non lo avete potete scaricarlo da QUI.
  2. Apktool. Dalla colonna di download di sinistra poi scegliete il file “apktool-install…” adatto al vostro sistema operativo. E’ il tool che useremo per decompilare e ricompilare i file.
  3. signapk. E’ un programma che inserisce la firma digitale nel pacchetto creato con apktool. Non è sempre necessario, ma nel dubbio conviene usarlo.

Istruzioni:

Per prima cosa scaricate tutto il necessario e installate il JDK. Poi decomprimete gli archivi corrispondenti ad apktool e mettete i 3 file così ottenuti (uno di nome “aapt” e due “apktool”) in una cartella debitamente nominata. Che so: C:\Apktool (per Windows) /vostroutente/Apktool/ (per Linux). Io consiglio di decomprimere i file all’interno del pacchetto “Signapk” nella stessa cartella. Se avete installato anche l’SDK di Android potete copiare tutto nella cartella “tools”. A questo punto, per gli utenti Windows serve un ulteriore passaggio: inserire nel path la cartella del java.

  1. Fate clic con il pulsante destro del mouse su Risorse del computer e scegliere Proprietà
  2. Andate a Avanzate.
  3. Fate clic sul bottone Variabili d’ambiente. Apparirà una scheda contenente due aree: Variabili di sistema e Variabili dell’utente.
  4. Nella sezione Variabili dell’utente, controllate se c’è una variabile PATH già definita (potreste dover far scorrere quella parte della finestra). Se non c’è, saltate al passo 7.
  5. Fate clic sulla variabile PATH. Compariranno PATH nel campo Variabile e la configurazione attuale di path nel campo Valore nella parte bassa della finestra.
  6. Fate doppio clic nel campo Valore e utilizzate il tasto freccia a destra per portarvi alla fine del testo contenuto in tale campo. Digitate il percorso completo in cui è stato installato Java, più la cartella bin.
    Importante per Windows Vista! La cartella “Programmi” viene vista nel prompt come “Program Files”, quindi va utilizzato questo nome nella variabile d’ambiente.Ad esempio, se java è stato installato dentro la cartella C:\Programmi\Java\jdk1.6.0, scrivere
    C:\Programmi\Java\jdk1.6.0\bin (Windows XP/2000)
    C:\Program Files\Java\jdk1.6.0\bin
    (Windows Vista)
    (NOTA 1: se la vostra directory di installazione è diversa, inserite il vostro valore)
    (NOTA 2: Fate attenzione a inserire un punto e virgola alla fine del valore corrente)
    Il punto e virgola è richiesto solo se non ce n’è già uno.
  7. Se la variabile PATH non è definita, fate clic su Nuovo nella parte bassa della finestra. Fate clic sul campo Nome Variabile e digitate
       PATH
  8. Fate clic nel campo Valore e digitate il percorso completo in cui è stato installato Java, più la cartella bin.
    Importante per Windows Vista! La cartella “Programmi” viene vista nel prompt come “Program Files”, quindi va cambiato il nome di questa cartella nella variabile d’ambiente.Ad esempio, se java è stato installato dentro la cartella C:\Programmi\Java\jdk1.6.0, scrivere
    C:\Programmi\Java\jdk1.6.0\bin (windows XP/2000)
    C:\Program Files\Java\jdk1.6.0\bin(Windows Vista)Premete OK per chiudere la finestra Modifica variabili di sistema.

Ora siamo pronti ad agire. Posizionate il file apk che avete scelto di elaborare nella cartella in cui avete copiato tutti i file. Per semplicità, da qui in poi, chiamerò “Apktool” la cartella e “programma.apk” l’applicazione di test, voi sostituite i nome delle vostre  scelte nelle istruzioni. Aprite il prompt dei comandi, o il terminale, ed entrate nella cartella. Per non appesantire troppo la guida darò per scontato che sappiate muovervi nel sistema tramite riga di comando. A questo punto digitare:

  • Da Windows: apktool d programma.apk programma
  • Da Linux: ./apktool d programma.apk programma

Se tutto è andato bene dovreste aver ottenuto una nuova cartella “programma” in “Apktool” contenente i sorgenti del programma scelto per la “vivisezione”. A questo punto potete navigare tranquillamente al suo interno e studiare un po’ come sono fatte le app che tanto amate. Per le piccole modifiche posso dirvi che nelle cartelle “res/drawable-*” potrete trovare gli elementi grafici da modificare e nel file “dimens.xml” all’interno di “res/values” i parametri di dimensionamento dei componenti. Il resto divertitevi a scoprirlo per conto vostro…

Una volta completate le modifiche che volete, dovrete ricompilare il programma. E’ molto semplice. Ripercorrendo i passaggi precedenti arrivate a digitare:

  • Da Windows: apktool b programma programma-nuovo.apk
  • Da Linux: ./apktool b programma programma-nuovo.apk

Otterrete così un nuovo file apk di nome “programma-nuovo”. Limitandosi a digitare “apktool” avrete un elenco degli altri comandi possibili. Studiateli!

L’ultimo passo è inserire la firma digitale nel nuovo apk. Sempre da riga di comando e dalla cartella Apktool:

  • java -jar signapk.jar certificate.pem key.pk8 programma-nuovo.apk programma-nuovo-sign.apk

Dovrebbe essere tutto pronto all’installazione. Provate a passare l’app così ottenuta nel vostro telefono e ad installarla. Nel caso qualcosa non vada per il verso giusto ricontrollate bene tutti i passaggi fin qui descritti. In caso di necessità potete contattarci tramite i commenti.