Android è il sistema operativo per dispositivi mobili più diffuso sul mercato. Parte del successo è dovuto alla sua natura di software a sorgente aperto che consente a qualunque produttore di cellulari/tablet di prendere questo sistema, personalizzarlo più o meno pesantemente e distribuirlo installato sui suoi prodotti. Tutto questo ha, ovviamente, anche molti lati negativi e uno di questi è la "farcitura" del sistema con applicazioni, per la maggior parte degli utenti, inutili, che occupano spazio, memoria, consumano batteria, violano la nostra privacy e che alcune volte non possono essere rimosse o disattivate. Almeno non direttamente dal dispositivo perché è possibile disinstallare quasi tutte le app di sistema tramite ADB!!!

Un po' di teoria
Abbiamo già visto come installare e utilizzare Android Debug Bridge e adesso vedremo come utilizzare questo strumento per rimuovere qualsiasi app di sistema!
stiamo utilizzando uno strumento piuttosto potente (ADB) è buona regola avere un'idea chiara di quello che succederàmeglio non rimuovere le app di cui non siamo sicuripotremo rendere il nostro sistema instabilecompromettere il funzionamento di altre applicazioniincappare in continui crashLa buona notizia è che qualunque modifica potrà essere annullata con un ripristino alle condizioni di fabbrica!disinstalla le app di sistema solo per l'utente corrente ma l'applicazione rimarrà, completamente inattiva, nella partizione di sistemalasciando la partizione di sistema intatta, non si perderà la possibilità di effettuare gli aggiornamenti rilasciati dal produttore del dispositivo!Adesso la pratica
Una volta rese visibili le Opzioni Sviluppatore, abilitato il Debug USB, collegato il nostro dispositivo al PC e avviato adb, se il nostro dispositivo viene rilevato dal comando adb devices, siamo pronti a rimuovere un po' di bloatware dal nostro sistema!

Il comando da impartire è semplice:
adb shell pm uninstall --user 0 nome.della.applicazione
In pratica, tramite adb andremo ad avviare una shell che invoca l'eseguibile pm (che altro non è che un package manager, un gestore delle applicazioni), con l'opzione uninstall (dall'ovvio significato), l'opzione --user 0 (per indicare l'utente principale del telefono) (se vogliamo conservare i dati della applicazione che andremo a rimuovere, possiamo aggiungere un ulteriore opzione -k) e infine il nome del pacchetto dell'applicazione. Dovremo prestare attenzione a quest'ultima parte: il nome dell'applicazione che viene mostrato nei menu di Android infatti può essere molto diverso dal nome del pacchetto di quella stessa applicazione!

Per risalire al nome del pacchetto possiamo utilizzare due metodi:
- il primo funziona egregiamente se l'app da rimuovere può essere contraddistinta facilmente da una parola chiave e sfrutta sempre adb con l'eseguibile pm. Digitando il comando:
adb shell pm list packages | grep parola-chiave
con l'aiuto di un pipe e di grep, otterremo una lista con i nomi dei pacchetti installati, contenenti la parola chiave cercata. A questo punto possiamo procedere con la disinstallazione con il comando visto in precedenza.

- il secondo metodo permette di identificare più facilmente una app perché mette in diretta correlazione non solo il nome dell'app con quella del pacchetto ma anche con l'icona! Per questo si deve installare un'applicazione come, per esempio, Applications Info (potete trovarla anche sul PlayStore!)

Adesso che abbiamo il nome del pacchetto, sappiamo cosa fare...
Se la disinstallazione dell'app andrà a buon fine, il comando impartito restituirà un rassicurante Success come output e l'applicazione, pur sempre visibile da Impostazioni, Applicazioni, sarà "marcata" come Non istallata per l'utente.

Funziona anche da Terminal Emulator / Termux?
No. Il motivo è semplice: i permessi con cui vengono eseguiti i comandi impartiti dalle app sono piuttosto limitati se paragonati a quelli impartiti attraverso adb.

Meglio disinstallare o disattivare?
Dato che con questa disinstallazione le applicazioni non vengono effettivamente rimosse dal sistema (non si guadagna molto spazio, purtroppo!), se disponibile, è molto meglio preferire la disattivazione dell'app alla sua disinstallazione. Non solo perché, a parità di risultato (l'app non sarà più attiva sul dispositivo, ne si aggiornerà più), sarà sufficiente un tap nel menu di Android al posto di un comando inviato tramite adb ma anche perché, in caso di ripensamenti, sarà molto più facile riattivare l'app (sempre con un tap) che reinstallarla! Meglio quindi utilizzare questa procedura solo per le app non disattivabili!!
Si possono rimuovere proprio tutte le app di sistema?
Purtroppo (o per fortuna!!), no. Alcune app resistono anche ad adb. Durante le mie prove infatti sono riuscito a rimuovere quasi tutte le app di Google tranne Google Play Service e non dubito che ce ne possano essere anche altre.
