Prima di procedere è doveroso segnalare che tale operazione richiede i permessi di root ed è potenzialmente pericolosa. Qualora non si operasse in maniera corretta esiste il rischio di rendere inutilizzabile lo smartphone.
Per gestire (o convertire) le applicazioni di sistema e quelle utente, esistono principalmente due vie: tramite applicazione dedicata e tramite riga di comando. La prima via è certamente la più comoda, ma spesso le applicazioni di questo genere sono a pagamento (un esempio è Titanium Backup PRO 4,99€ – nella versione free la feature è disabilitata). Utilizzando la riga di comando, invece, potremo eseguire le stesse operazioni avendo pieno controllo di quello che facciamo e risparmiando sul costo dell’applicazione.
L’operazione manuale è estremamente semplice, poiché richiede semplicemente i permessi di scrittura nella partizione /system
(come spiegato in questo articolo). Ora non resta che spostare (o eventualmente cancellare) le applicazioni di nostro interesse tra le cartelle /system/app
(dove sono presenti tutte le applicazioni di sistema) e /data/app
(dove sono contenuti tutti gli apk dei programmi installati tramite il Play Store).
Il comando da lanciare con ADB o simili è:
cp [source] [destination]
rm [source]
Dove vanno opportunamente cambiati [source]
e [destination]
rispettivamente con il nome e percorso del pacchetto sorgente e percorso/nome per il file di destinazione. Si rende necessario fare una copia ed una successiva cancellazione perché con il comando mv
si copierebbe solo l’hardlink, non i dati. Quando dovete spostare un file tra filesystem diversi, questo è il modo corretto di operare (in alternativa si spera che riceviate un errore del tipo: “Cross-device link”).
La particolarità della directory /system/app
è proprio quella di essere protetta dalla scrittura: le applicazioni presenti qui non potranno essere disinstallate nella maniera tradizionale e restano presenti anche dopo un ripristino delle condizioni iniziali. Eventuali aggiornamenti delle applicazioni non verranno inclusi in questo percorso, ma in /data/app
, occupando quindi il doppio dello spazio. Se tentate di disinstallare una applicazione di sistema che è stata aggiornata, potete notare che l’unica operazione consentita è quella di rimuovere gli aggiornamenti, tornando alla versione inclusa nella cartella di sistema. Il consiglio è quello di mantenere una sola copia dell’applicazione, tenendo solo l’apk più aggiornato.
Bisogna fare attenzione alle differenze di nomi assegnate agli apk all’interno delle due directory: /system/app
contiene nomi generalmente più compatti ma comprensibili, mentre /data/app
ha il nome dei pacchetti per esteso. Per fare un esempio, potrebbe essere presente un pacchetto di nome com.facebook.katana-1 in /data/app
ed uno di nome Facebook in /system/app
. Fondamentalmente i due apk rappresentano la stessa applicazione, con l’eccezione che quello in /system/app
è la versione iniziale dell’applicazione, quella già preinstallata al momento dell’acquisto del terminale, mentre l’apk in /data/app
è la versione più aggiornata scaricata dal Play Store.
Insomma, prendendo dimestichezza con alcuni i nomi delle applicazioni, diventerà estremamente facile gestire in completa autonomia le proprie applicazioni di sistema, arrivando ad un utilizzo ottimale della memoria.
Alcuni esempi di nomi di pacchetti e relativi nomi “normalizzati” che potreste trovare:
com.google.android.apps.maps -> Maps
com.google.android.voicesearch -> VoiceSearch
com.google.android.street -> StreetView
com.google.android.googlequicksearchbox -> GoogleQuickSearchBox
com.android.vending -> Vending
com.google.android.gm -> GMail
com.google.android.marvin.talkback -> Talkback
com.facebook.katana -> Facebook
it.sineo.android.noFrillsCPU -> NoFrillsCPU
com.noshufou.android.su -> Superuser
eu.chainfire.supersu -> SuperSU
com.buak.Link2SD -> Link2SD
com.google.android.youtube -> Youtube
de.schaeuffelhut.android.openvpn -> OpenVPN-Settings
com.fede.launcher -> LauncherPro
com.twitter.android -> Twitter
xcxin.filexpert -> FileExpert
com.rechild.advancedtaskkiller -> Atk