martedì 24 gennaio 2012

Android: editare apk con pc Ubuntu

Ciao!
Oggi ho deciso di uploadare alcune applicazioni Android, che ho personalmente editato per renderle più gradevoli una volta installato sul nostro terminale il tema ICS di Vertumus, che potete scaricare qui. Vi consiglio caldamente di dare un'occhiata al thread che ho appena linkato, con un briciolo di pazienza potrete rendere il vostro smartphone incredibilmente bello, ecco qualche immagine di quello che potrà essere il Galaxy dopo la cura:


Ovviamente, il lavoro del Themer Vertumus, sopra citato, non può coprire tutte le applicazioni che esistono nel market, può così capitare di trovarsi qualche icona che proprio non ci piace.
Io, ad esempio, avevo problemi con il browser Dolphin HD, nel momento in cui andavo a fare il download di un file, non potevo leggere il nome di quest'ultimo nell'area di notifica perché il colore del testo era nero come lo sfondo. Di natura strettamente estetica, il motivo che mi ha portato a modificare le apk di Es Gestore File e Push Ups, due applicazioni che uso molto. Ho deciso di modificare le icone delle cartelle per Es Gestore File e l'icona di lancio di Push Ups, ecco le screenshots che mettono in evidenza le modifiche da me effettuate:


A questo link troverete lo zip contenente le tre apk da me modificate.
Adesso vi scrivo come ho raggiunto il risultato.
Per editare le apk, dobbiamo, prima di tutto, avere sul nostro pc:
Dobbiamo installare i sorgenti e per farlo scriviamo da terminale:
apktool if framework-res.apk
apktool if twframework-res.apk
Supponiamo ora che l'apk che vogliamo modificare sia launcher.apk. La prendiamo da /system/app nel Galaxy e la portiamo sul nostro pc. Ci portiamo con il terminale nella cartella che contiene launcher.apk e digitiamo:
apktool d launcher.apk
A questo punto, avremo una cartella denominata launcher. Ci spostiamo dentro ed effettuiamo le modifiche che desideriamo, nel caso volessimo cambiare l'icona del programma, dovremmo sostituire il file icon.png in /res/drawable e /res/drawable-hdpi con quella che desideriamo appaia sullo schermo del nostro Galaxy. Attenzione a mantenere inalterata la dimensione, controllate che i pixel siano gli stessi dell'icona originale!
A questo punto dobbiamo ricompilare la nostra apk in questo modo:
apktool b launcher
Nella cartella launcher troveremo un'altra directory che si chiama build, dentro la quale ci sarà la folder apk che contiene launcher.apk, l'applicazione da noi modificata.
Per terminare dobbiamo signare l'apk, altrimenti il sistema si rifiuterà di installarlo.
Grazie a questo sito ho capito una volta per tutte come farlo.
Ecco cosa digitare nel terminale, prima per creare una nostra firma (vi verranno richieste delle informazioni, potete anche premere enter e lasciare tutto in bianco):
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt

Nella directory  in cui abbiamo digitato questi comandi, ci troveremo i file: key.pem, certificate.pem, request.pem e key.pk8. Estraiamo il contenuto di SignApk.zip e spostiamo SignApk.jar nella cartella coi file che abbiamo appena creato.
Nel terminale diamo il seguente comando:
java -jar signapk.jar certificate.pem key.pk8 launcher.apk launcher-signed.apk

Il pacchetto che verrà creato, launcher-signed.apk è la nostra applicazione pronta da essere messa in /system/app nel Galaxy S2. Grazie ad un gestore di file, impostiamo i comandi del pacchetto appena trasferito a 644, se non sapete cosa significhi, date un'occhiata ai permessi delle altre apk al percorso /system/app.
Se l'applicazione non fosse di sistema, come nel caso di Push Ups, per installarla basta trasferire l'apk che abbiamo creato noi, nella sdcard e selezionarla manualmente.
Per essere sicuri che tutto funzioni, vi consiglio di disinstallare l'applicazione originale, magari facendo precedentemente un backup di sicurezza, prima di installare quella creata da voi.

Spero di essere d'aiuto a qualcuno!

2 commenti:

  1. Grande! Ottima guida la cercavo da tempo (a me però l'apk non firmato lo mette in nomeapp/dist, probabilmente perchè ho un'altra versione di apktool)

    RispondiElimina
  2. Bella guida, bravo.
    Io però ho provato e nonostante tutto sia andato a buon fine, l'APK creata non me la installa.
    Qualche idea del problema?

    RispondiElimina