Modificare android con ADB e fastboot e come cancellare app dello smartphone

Qui di seguito una spiegazione sintetica ed istruzioni pratiche per collegare uno smartphone android al pc (con cavo usb) e apportare modifiche mediante ADB e fastboot al sistema android (ad esempio cancellare una app installata di default sul telefono).

ATTENZIONE: sono operazioni da eseguire con attenzione e conoscenze specifiche onde evitare danni e malfunzionamenti sui dispositivi. Ad esempio, l’eliminazione di file di sistema potrebbero inficiare il funzionamento dello smartphone/tablet.

Prima di tutto, una panoramica su ADB e fastboot.

Cosa è ADB?  ADB è l’acronimo di Android Debug Bridge, un tool a riga di comando che permette, utilizzando un computer, di dare comandi a dispositivi android. E’ installabile su Linux, Mac Os e Windows dalla pagina ufficiale:

https://developer.android.com/studio/releases/platform-tools

In alternativa, Linux permette l’installazione tramite la app Synaptic.

Per installare ADB su Linux, è sufficiente cercare ADB dentro l’applicazione synaptic e installare il software.

Oppure, sempre per Linux, si può digitare nella shell (ricomprendendo,visto che ci siamo, anche il fastboot):

sudo apt-get install android-tools-adb android-tools-fastboot

Alcuni comandi utili (in calce all’articolo sono presenti tutte le opzioni di adb):

adb install:  vi consente di installare applicazioni (file .apk)direttamente da pc.

adbbackup: backupin formato file.abdella memoria interna, della scheda sd, dei file apk, etc

adbrestore: ripristina un backup precedentemente creato.

adbpull: copia una specifica cartella dal telefono al PC.

uninstall permette di eliminare una app dallo smartphone.

Immagine che mostra ADB su shell Linux:

Ad esempio, per disinstallare una app presente sullo smartphone, soprattutto app di default, già presenti all’acquisto del telefono:

Maggiori informazioni (in inglese) su ADB si possono trovare sul sito:

https://developer.android.com/studio/command-line/adb

Ora vediamo cosa è fastboot. Fastboot è un software che permette in particolare di flashare gli smartphone.

Alcuni comandi per mostrarne utilità e potenziale:

fastboot oem unlock: su alcuni dispositivi, questo comando permette di sbloccare il bootloader, in modo da poter flashare ROM, kernel, recovery o altro.

flash: permette infatti di flashare sul telefono una qualunque partizione.

Ad esempio: fastboot flash recovery filediesempio.img

boot: permette esecuzione senza installazione di una recovery o un kernel sul dispositivo.

Una volta installato su PC i programmi ADB e Fastboot, è necessaro impostare il device android per recepire modifiche.

Per utilizzare ADB e/o fastboot, è necessario attivare sullo smartphone Debug USB nelle opzioni sviluppatore. I passaggi necessari:

1 Entrare nelle impostazioni dello smartphone (o tablet) Android.

2 Entrare nel sottomenu Info

3 Andate su Numero Build e toccatelo 7 volte. Apparirà la scritta che conferma lo sblocco della funzionalità per sviluppatori.

4 Tornando indietro, nella finestra principale delle impostazioni, dovrebbe essere ora presente la voce “Opzioni sviluppatore”.

5 Entrate dentro Opzioni sviluppatore e attivate “debug usb”.

Una volta effettuate queste operazioni sullo smartphone/tablet, potete collegare tale dispositivo al pc mediante cavo usb.

Elenco opzioni di ADB su Linux:

global options:

-a         listen on all network interfaces, not just localhost

-d         use USB device (error if multiple devices connected)

-e         use TCP/IP device (error if multiple TCP/IP devices available)

-s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)

-t ID      use device with given transport id

-H         name of adb server host [default=localhost]

-P         port of adb server [default=5037]

-L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]

general commands:

devices [-l]             list connected devices (-l for long output)

help                     show this help message

version                  show version num

networking:

connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]

disconnect [HOST[:PORT]]

    disconnect from given TCP/IP device [default port=5555], or all

forward –list           list all forward socket connections

forward [–no-rebind] LOCAL REMOTE

    forward socket connection using:

      tcp:<port> (<local> may be “tcp:0” to pick any open port)

      localabstract:<unix domain socket name>

      localreserved:<unix domain socket name>

      localfilesystem:<unix domain socket name>

      dev:<character device name>

      jdwp:<process pid> (remote only)

forward –remove LOCAL   remove specific forward socket connection

forward –remove-all     remove all forward socket connections

ppp TTY [PARAMETER…]   run PPP over USB

reverse –list           list all reverse socket connections from device

reverse [–no-rebind] REMOTE LOCAL

    reverse socket connection using:

      tcp:<port> (<remote> may be “tcp:0” to pick any open port)

      localabstract:<unix domain socket name>

      localreserved:<unix domain socket name>

      localfilesystem:<unix domain socket name>

reverse –remove REMOTE  remove specific reverse socket connection

reverse –remove-all     remove all reverse socket connections from device

file transfer:

push [–sync] LOCAL… REMOTE

    copy local files/directories to device

    –sync: only push files that are newer on the host than the device

pull [-a] REMOTE… LOCAL

    copy files/dirs from device

    -a: preserve file timestamp and mode

sync [system|vendor|oem|data|all]

    sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)

    -l: list but don’t copy

shell:

shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND…]

    run remote shell command (interactive shell if no command given)

    -e: choose escape character, or “none”; default ‘~’

    -n: don’t read from stdin

    -T: disable PTY allocation

    -t: force PTY allocation

    -x: disable remote exit codes and stdout/stderr separation

emu COMMAND              run emulator console command

app installation:

install [-lrtsdg] PACKAGE

install-multiple [-lrtsdpg] PACKAGE…

    push package(s) to the device and install them

    -l: forward lock application

    -r: replace existing application

    -t: allow test packages

    -s: install application on sdcard

    -d: allow version code downgrade (debuggable packages only)

    -p: partial application install (install-multiple only)

    -g: grant all runtime permissions

uninstall [-k] PACKAGE

    remove this app package from the device

    ‘-k’: keep the data and cache directories

backup/restore:

  to show usage run “adb shell bu help”

debugging:

bugreport [PATH]

    write bugreport to given PATH [default=bugreport.zip];

    if PATH is a directory, the bug report is saved in that directory.

    devices that don’t support zipped bug reports output to stdout.

jdwp                     list pids of processes hosting a JDWP transport

logcat                   show device log (logcat –help for more)

security:

disable-verity           disable dm-verity checking on userdebug builds

enable-verity            re-enable dm-verity checking on userdebug builds

keygen FILE

    generate adb public/private key; private key stored in FILE,

    public key stored in FILE.pub (existing files overwritten)

scripting:

wait-for[-TRANSPORT]-STATE

    wait for device to be in the given state

    State: device, recovery, sideload, or bootloader

    Transport: usb, local, or any [default=any]

get-state                print offline | bootloader | device

get-serialno             print <serial-number>

get-devpath              print <device-path>

remount

    remount /system, /vendor, and /oem partitions read-write

reboot [bootloader|recovery|sideload|sideload-auto-reboot]

    reboot the device; defaults to booting system image but

    supports bootloader and recovery too. sideload reboots

    into recovery and automatically starts sideload mode,

    sideload-auto-reboot is the same but reboots after sideloading.

sideload OTAPACKAGE      sideload the given full OTA package

root                     restart adbd with root permissions

unroot                   restart adbd without root permissions

usb                      restart adb server listening on USB

tcpip PORT               restart adb server listening on TCP on PORT

internal debugging:

start-server             ensure that there is a server running

kill-server              kill the server if it is running

reconnect                kick connection from host side to force reconnect

reconnect device         kick connection from device side to force reconnect

reconnect offline        reset offline/unauthorized devices to force reconnect

environment variables:

$ADB_TRACE

    comma-separated list of debug info to log:

    all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp

$ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)

$ANDROID_SERIAL          serial number to connect to (see -s)

$ANDROID_LOG_TAGS        tags to be used by logcat (see logcat –help)

Se il lettore ha tovato interessante questo articolo, allora potrebbero risultare interessanti le seguenti letture:

Andrea Gandini è giurista e perito informatico, perfezionato in informatica giuridica, specializzato in privacy e protezione dei dati. E' esperto di amministrazione del Personale. Il dottor Gandini è autore dei seguenti ebook: Cyberfuture; Il buio oltre il web; Guadagnare con i bitcoin; Cavalca le bolle speculative; Dal CAD al web; Come trovare lavoro e fare carriera in tempo di crisi; Programmatore in 3 giorni. Blog personale: www.dottorgandini.it Progetto: www.normativedatabase.net