Lo script Python adb-pakage-get-apk consente di fare il backup sul proprio PC delle app installate su un dispositivo Android. La copia consiste nel file apk (o i file, se sono più di uno) che può essere utilizzato per installare nuovamente la app sullo stesso device o su di un altro.
Un dispositivo Android generalmente installa le applicazioni accedendo al Play Store di Google oppure a store alternativi, come l'ottimo F-Droid dedicato al software libero ed open source. In genere si pensa che lo store sia sempre disponibile e che sarà sempre possibile installare o reinstallare le app a piacimento. Ciò ovviamente non è vero: in ogni momento una app potrebbe essere rimossa dallo store per i motivi più disparati.
Inoltre la app associata allo store gestisce anche gli aggiornamenti in modo più o meno automatico. Questo significa che normalmente una app viene aggiornata disinstallando automaticamente la vecchia versione per sostituirla con quella nuova.
Ci sono molti motivi per cui è possibile pentirsi di un aggiornamento, ad esempio:
Purtroppo gli store non garantiscono la disponibilità delle vecchie versioni delle app (fortunatamente F-Droid è una eccezione), quindi è consigliabile fare un backup prima di un aggiornamento. Android offre il vantaggio di poter trovare sul filesystem del dispositivo uno o più file apk che contiene tutto il necessario per reinstallare l'app.
La parte complicata è scoprire il percorso del file apk e il nome dell'archivio e la versione del programma.
Esistono molte app, gratuite e non, che promettono di fare il backup delle app installate in modo più o meno automatico, ma in generale hanno dei difetti, tra cui:
Viste le premesse, ho cercato una soluzione semplice e da riga di comando, che abbia come unico requisito l'accesso ADB (Android Debug Bridge). Lo script presentato qui è stato provato su un PC GNU/Linux con installato il pacchetto Debian adb.
Vedi e scarica lo script Python: adb-pakage-get-apk.
La procedura (richiede Python 3) si basa in realtà su alcuni comandi eseguibili in una sessione terminale Android. Per stabilire la connessione con il dispositivo Android si deve collegare il cavetto USB, abilitare l'opzione Debug USB e quindi eseguire sul PC il comando adb shell.
Per ottenere la lista delle app installate:
cmd package list packages -f
in alternativa, se non è presente il comando cmd, si può utilizzare pm:
pm list packages
Per sapere la versione di un pacchetto installato (ad esempio com.android.chrome) si utilizza dumpsys:
dumpsys package com.android.chrome
Per scoprire i file apk installati da una app (potrebbero essere più di uno) si utilizza pm path:
pm path com.android.chrome
Infine per scaricare il file dal dispositivo Android verso il PC si esegue (sul PC) il comando adb pull:
adb pull /system/app/Chrome/Chrome.apk
In generale non sono richiesti i privilegi di root. Tuttavia alcune app mettono i file apk in directory non accessibili all'utente non privilegiato, in questo è necessario disporre dei privilegi di root (avere cioè il comando su funzionante) e copiare il file apk nello storage (directory /sdcard/) prima di scaricarlo con adb pull.