Android Debug Bridge: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(48 versioni intermedie di 19 utenti non mostrate)
Riga 1:
{{Software
|Nome = Android Debug Bridge
|Logo = Android Robot Head 2023.svg
|Screenshot = Android Debug Bridge in GNOME terminal.png
|Didascalia = Avvio del server ADB nel [[GNOME Terminal]], che quindi rileva i dispositivi. Successivamente, viene aperta una shell sul dispositivo in debug per eseguire il comando [[uname]]
|Sviluppatore = [[Google]]
|UltimaVersione = 34.0.1
|DataUltimaVersione = Marzo 2023
|SistemaOperativo = windows
|SistemaOperativo2 = gnu/linux
|SistemaOperativo3 = macos
|Linguaggio = c++
|Genere =
|Licenza = [[Apache 2.0]]
|SoftwareLibero = sì
}}
 
'''Android Debug Bridge''' (comunemente abbreviato in '''adb''') è uno strumento di programmazione utilizzato per il [[Debugging|debug]] dei dispositivi basati su [[Android]]. Sul dispositivo Android viene eseguito un [[Demone (informatica)|demone]] che si connette a un server installato sul PC host via [[USB]] o [[Transmission Control Protocol|TCP]], che a sua volta si connette al client utilizzato dall'utente finale tramite TCP. Reso disponibile come [[software]] [[open source]] da [[Google (azienda)|Google]] con [[licenza Apache]] dal 2007, adb mette a disposizione una shell e la funzionalità di [[backup]] dei dati. Il programma è disponibile per [[Microsoft Windows|Windows]], [[Linux]] e [[macOS]]. In passato è stato utilizzato in modo improprio da [[botnet]] e altri tipi di [[malware]], per i quali sono state sviluppate contromisure come l'autenticazione [[RSA (crittografia)|RSA]] e la possibilità di definire una [[whitelist]] di dispositivi autorizzati.
[[File:Android_Connect_computer.png|miniatura|Sistema Android connesso attraverso un cavo USB ad un computer]]
Android Debug Bridge è uno è strumento compreso all'interno del software [[Software development kit|SDK(Software Develompent Kit)]], funziona in [[Interfaccia a riga di comando|riga-comando]], serve per poter mettere in comunicazione un dispositivo [[Android]] ed un computer.
==<big>Android Debug Bridge(ADB)</big>==
Viene utilizzato per eseguire comandi sul telefono con i quali è possibile modificare, per i [[Sviluppatore software|sviluppatori]], le proprie applicazioni in sviluppo o le [[:en:List_of_custom_Android_distributions|ROM]], mentre per gli utenti permette di personalizzare determinati aspetti del dispositivo, eseguire [[Debugging|debug]] di applicazioni, accedere a funzionalità nascoste e recuperare dati dal dispositivo quando è in modalità recupero.<br>
 
== Caratteristiche ==
Per permettere la comunicazione fra computer e il device si necessita di un cavo [[USB]] o una connessione [[wireless]].
[[File:Android Device Monitor.png|sinistra|miniatura| Android Device Monitor]]
Le funzionalità di adb comprendono la copia di file dal computer host,<ref>{{Cita libro|nome=Lauren|cognome=Darcey|titolo=Android wireless application development|url=https://www.worldcat.org/oclc/749852462|edizione=3rd|data=2012|editore=Addison-Wesley|oclc=749852462|ISBN=978-0-321-81383-1}}</ref> l'installazione di applicazioni, la visualizzazione dell'output di logcat, l'accesso a una [[shell Unix]],<ref>{{Cita web|lingua=en|autore=Barry Burd|url=https://www.dummies.com/web-design-development/mobile-apps/android-apps/things-you-can-do-with-androids-adb-command/|titolo=Things You Can Do with Android's adb Command|sito=[[For Dummies]]|accesso=3 luglio 2025|urlarchivio=https://web.archive.org/web/20180515143530/https://www.dummies.com/web-design-development/mobile-apps/android-apps/things-you-can-do-with-androids-adb-command|urlmorto=no}}</ref> e il riavvio in modalità Qualcomm EDL.<ref>{{Cita libro|nome=CHUCK|cognome=EASTTOM|titolo=An In-Depth Guide to Mobile Device Forensics|url=https://www.worldcat.org/oclc/1250310301|data=2021|editore=CRC PRESS|pp=72|oclc=1250310301|ISBN=978-0-367-63300-4}}</ref> Ad esempio, [[APK (formato di file)|le applicazioni]] Android possono essere salvate tramite il comando <code>backup</code> in un file.<ref>{{Cita web|autore=Jack Wallen|url=https://www.techrepublic.com/article/how-to-create-a-full-backup-of-your-android-device-without-root/|titolo=How to create a full backup of your Android device without root|data=6 marzo 2015|accesso=3 luglio 2025|urlarchivio=https://web.archive.org/web/20160124184710/https://www.techrepublic.com/article/how-to-create-a-full-backup-of-your-android-device-without-root/|urlmorto=no}}</ref> Include anche il supporto per il protocollo Java Debug Wire.<ref name=":032">{{Cita libro|nome=Rajaram|cognome=Regupathy|titolo=Unboxing Android USB: a hands-on approach with real World examples|url=https://www.worldcat.org/oclc/880673864|data=2014|oclc=880673864|ISBN=978-1-4302-6209-1}}</ref>
 
Sono state rese disponibili alcune [[Interfaccia grafica|interfacce grafiche]]. L'Android Device Monitor, fornito all'interno di [[Android Studio]], permette di ottenere informazioni dettagliate da un dispositivo Android.<ref>{{Cita libro|nome=Ivan|cognome=Morgillo|nome2=Stefano|cognome2=Viola|titolo=Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device|url=https://books.google.com/books?id=bOrUDQAAQBAJ|data=2016|p=89|oclc=1020708322|ISBN=9781785283284}}</ref>
Per motivi di sicurezza nella fase preliminare bisogna attivare le funzionalità aggiuntive di Android ovvero le "[https://www.navigaweb.net/2013/11/opzioni-sviluppatore-android.html Opzioni sviluppatore]" bisognerà abilitare la voce "Debug USB", il quale consente di accedere direttamente al [[file system]] di un dispositivo Android da un computer desktop.
 
Il metodo di Android per installare file APK su un dispositivo è stato utilizzato per installare manualmente applicazioni non ufficiali su [[Windows 11|Windows Subsystem for Android]]<ref>{{Cita web|autore=Skanda Hazarika|url=https://www.xda-developers.com/how-to-sideload-android-apps-on-windows-11/|titolo=How to sideload Android apps on Windows 11|data=23 gennaio 2022|accesso=3 luglio 2025}}</ref> e sulla [[macchina virtuale]] Android di Chrome OS.<ref>{{Cita web|autore=Arif Bacchus|url=https://www.xda-developers.com/how-sideload-apps-chromebook/|titolo=How to sideload apps to a Chromebook|data=5 marzo 2023|accesso=3 luglio 2025}}</ref>
Senza il debug abilitato, è possibile interagire solo con l'archivio multimediale del telefono, come la scheda SD o una directory multimediale appositamente formattata.
 
Shizuku consente a un telefono Android di collegarsi al proprio ADB quando è connesso a una rete wireless. L'applicazione è disponibile gratuitamente su [[Google Play|Google Play Store]].<ref>{{Cita web|url=https://shizuku.rikka.app/guide/setup/|titolo=User manual {{!}} Shizuku|sito=shizuku.rikka.app|accesso=3 luglio 2025}}</ref>
== <big>Come funziona Android Debug Bridge</big> ==
ADB è un programma [[Sistema client/server|client-server]] composto da tre elementi:
 
== Storia ==
* <big>Client</big>: Il computer, attraverso un [[Interfaccia a riga di comando|prompt di comandi come il CMD]] proprietario di Windows e dopo l'installazione dei driver ADB può inviare i comandi.
L'[[Android SDK|Android Software Development Kit]] (SDK) è stato rilasciato per la prima volta nel 2007.<ref>{{Cita web|lingua=en|url=https://www.macworld.com/article/188112/androidsdk.html|titolo=Google releases Android SDK|sito=Macworld|accesso=3 luglio 2025}}</ref> Dal 2017, Google ha reso possibile scaricare adb separatamente dall'Android SDK.<ref>{{Cita web|lingua=en|autore=Ryan Whitwam|url=https://www.androidpolice.com/2017/01/05/google-makes-adb-fastboot-platform-tools-available-without-full-sdk-android-studio-download/|titolo=Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download|sito=Android Police|data=5 gennaio 2017|accesso=3 luglio 2025}}</ref>
 
Nel 2015, Microsoft ha rilasciato un emulatore Android in grado di connettersi al client adb.<ref>{{Cita web|lingua=en|autore=Cosmin Vasile|url=https://news.softpedia.com/news/microsoft-releases-android-emulator-and-it-s-supposed-to-be-faster-than-google-s-488016.shtml|titolo=Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's|sito=softpedia|data=29 luglio 2015|accesso=3 luglio 2025}}</ref> Nel 2016, con [[Android Studio]] 2.0 si è registrato un miglioramento delle prestazioni di cinque volte nell'installazione delle applicazioni e nel trasferimento di file tramite adb.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2016/02/android-studio-20-beta.html|titolo=Android Studio 2.0 - Beta|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Per semplificare l'uso di [[Android Things]], nel 2017 è stato creato un [[wrapper]] attorno ai comandi adb manuali.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2017/11/android-things-developer-preview-6.html|titolo=Android Things Developer Preview 6|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Con Android 11 nel 2020, Google ha introdotto le installazioni incrementali tramite adb.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2020/09/android11-final-release.html|titolo=Turning it up to 11: Android 11 for developers|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Nel 2020, su macOS, l'integrazione di adb via Wi-Fi è stata incorporata in Android Studio.<ref>{{Cita web|lingua=en|url=https://android-developers.googleblog.com/2020/12/announcing-android-studio-arctic-fox.html|titolo=Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0|sito=Android Developers Blog|accesso=3 luglio 2025}}</ref> Nel 2021, con [[Android 12]], il comando <code>adb backup</code> è stato limitato: il backup dei dati utente delle app è diventato opzionale e richiede una configurazione esplicita nel manifesto di ciascun app,<ref>{{Cita web|url=https://developer.android.com/about/versions/12/behavior-changes-12?hl=it|titolo=Behavior changes: Apps targeting Android 12|sito=Android Developers|accesso=3 luglio 2025}}</ref> dopo la deprecazione di <code>adb backup e</code> <code>adb restore</code> in Android 10.<ref>{{Cita web|lingua=en-us|url=https://www.bleepingcomputer.com/news/mobile/google-considers-removing-android-adb-backup-and-restore/|titolo=Google Considers Removing Android ADB Backup and Restore|sito=BleepingComputer|accesso=3 luglio 2025}}</ref> [[Google Fuchsia|Fuchsia]] sarà retrocompatibile con adb, ma in seguito verrà sostituito dagli strumenti fx e ffx.<ref>{{Cita news|lingua=en|nome=Kyle|cognome=Bradshaw|url=https://9to5google.com/2022/08/26/fuchsia-adb-proposal/|titolo=Google wants to make Fuchsia devices manageable with Android’s ADB tool|pubblicazione=9to5Google|data=26 agosto 2022|accesso=3 luglio 2025}}</ref>
* <big>Daemon(ADBD)</big>: È un processo che permette l'esecuzione dei comandi, è installato sia sul computer che sul device Android, viene eseguito in [[Esecuzione in background|background]] e consente al device di accettare ed eseguire i comandi precedentemente inoltrati dal client.
 
== Configurazione ==
* <big>Server</big>: Gestisce la comunicazione fra il client e il Daemon. Si attiva dopo aver eseguito il comando sul prompt del client e permette la comunicazione e  
{{Galleria
|larghezza = 200px
|align = right
|sfondo = white
|bordo = black|File:USB debugging prompt warning - Android 13.png|Per abilitare il debug USB sul dispositivo Android, è necessario attivarlo nella finestra delle opzioni sviluppatore|File:USB debugging prompt - RSA auth - Android 13.png|Dopo che il dispositivo è stato collegato al computer host, l’utente deve verificare l’impronta della chiave RSA del computer host
}}
 
=== Computer host ===
l'esecuzione di tutto il processo.
Per [[Microsoft Windows|Windows]], l'Android SDK contiene il binario adb.exe che può essere estratto e installato.<ref>{{Cita web|lingua=it|autore=B. M. Harwani|url=https://search.worldcat.org/title/862745697|titolo=PhoneGap build: developing cross platform mobile applications in the cloud|data=2013|p=38|accesso=3 luglio 2025}}</ref> How-To Geek consiglia di aggiungere la cartella contenente i binari alla variabile d'ambiente PATH.<ref>{{Cita web|lingua=en|autore=Chris Hoffman, Joe Fedewa, Nick Lewis|url=https://www.howtogeek.com/125769/how-to-install-and-use-abd-the-android-debug-bridge-utility/|titolo=How to Install and Use ADB, the Android Debug Bridge Utility|sito=How-To Geek|data=5 ottobre 2016|accesso=3 luglio 2025}}</ref>
 
Su [[Ubuntu]], adb può essere installato tramite il pacchetto <code>android-tools-adb</code>.<ref>{{Cita libro|nome=Neil|cognome=Smyth|titolo=Android Studio 4. 0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4. 0, Java and Android Jetpack.|url=https://www.worldcat.org/oclc/1190906409|data=2020|oclc=1190906409|ISBN=978-1-951442-21-7}}</ref> Su [[Debian]], si consiglia di installare anche il pacchetto <code>android-sdk-platform-tools-common</code> insieme a <code>adb</code>, in quanto installa le regole [[udev]] necessarie per eseguire lo strumento senza [[Root (utente)|privilegi di root]].<ref>{{Cita web|url=https://packages.debian.org/stable/adb|titolo=Debian -- Details of package adb in bookworm|sito=packages.debian.org|accesso=3 luglio 2025}}</ref> Per macOS e altre distribuzioni Linux, è possibile scaricare le Platform Tools e aggiungere la cartella corrispondente alla variabile PATH modificando il file [[bash]]rc.<ref>{{Cita web|lingua=en|url=https://www.lifewire.com/android-debug-bridge-adb-4149410|titolo=How to Install Android Debug Bridge (ADB) and Fastboot|sito=Lifewire|accesso=2 luglio 2025}}</ref>
Se questi tre servizi non sono attivi non potrà avvenire questo processo.
 
=== Dispositivo Android ===
Esempio:
In [[Android Jelly Bean|Android 4.2.2]] o versioni successive ([[Versioni di Android|livello API 17]]), viene mostrata una finestra di dialogo contenente l'impronta digitale RSA che l'utente deve accettare. Questa misura impedisce l'abuso del meccanismo di debug senza il consenso dell'utente.<ref>{{Cita web|url=https://developer.android.com/studio/run/device|titolo=Run apps on a hardware device|sito=Android Developers|accesso=3 luglio 2025}}</ref> A partire da Android 4.2, le opzioni sviluppatore sono nascoste per impostazione predefinita: per renderle visibili è necessario premere sette volte il numero di build nel menu Informazioni. In seguito è possibile abilitare l'opzione Debug USB.<ref>{{Cita web|lingua=en|url=https://www.techrepublic.com/topic/mobility/|titolo=Mobility|sito=TechRepublic|accesso=3 luglio 2025|urlarchivio=https://web.archive.org/web/20220926233940/https://www.techrepublic.com/article/pro-tip-how-to-enable-developer-options-in-android-42/}}</ref> Alcuni produttori di dispositivi Android utilizzano procedure diverse per abilitarlo. Ad esempio, [[Huawei]] richiede l'inserimento di un codice PIN prima di poter abilitare adb.
 
Se il [[Touch screen|touchscreen]] di un dispositivo Android è rotto, è possibile collegare un mouse al dispositivo tramite [[USB On-The-Go]] e abilitare il debug USB.<ref>{{Cita web|lingua=en|autore=Udochi Ogubuike|url=https://punchng.com/how-to-enable-usb-debugging-mode-on-android/|titolo=How to enable USB debugging mode on Android|sito=Punch Newspapers|data=9 agosto 2019|accesso=3 luglio 2025}}</ref><ref>{{Cita web|lingua=it|url=https://www.aranzulla.it/come-attivare-debug-usb-1144637.html|titolo=Come attivare debug USB|sito=Salvatore Aranzulla|accesso=3 luglio 2025}}</ref>
* Avviare il computer
 
== Architettura ==
* Connettere il computer al device attraverso un cavo USB o connessione wireless
Il protocollo adb può essere trasmesso sia via USB sia via [[Wi-Fi]] su [[Transmission Control Protocol|TCP]]. Si basa su [[Sistema client/server|un'architettura client-server]] e utilizza due protocolli diversi: uno tra client e server e un altro tra server e demone. Il demone adb, implementato in [[C (linguaggio di programmazione)|C]], e si trova nello spazio utente di Android. La sua esecuzione fa uso del [[framework]] USB di Android, <code>UsbDeviceManager</code> e <code>UsbDebuggingManager</code>.<ref name=":0432">{{Cita libro|nome=Rajaram|cognome=Regupathy|titolo=Unboxing Android USB: a hands-on approach with real World examples|url=https://www.worldcat.org/oclc/880673864|data=2014|oclc=880673864|ISBN=978-1-4302-6209-1}}
</ref>
 
=== Protocollo client ↔ server ===
* eseguire Il Daemon altrimenti comparirà questa schermata
La comunicazione tra client e server avviene tramite un socket TCP. Il server attende connessioni su una porta alla quale il client deve inviare una richiesta. La richiesta contiene un campo iniziale di 4 byte in ASCII e un payload. Il payload inizia con la parola host per indicare che deve essere inviato al server. Il server può quindi rispondere con OKAY o FAIL per indicare lo stato, combinato con un payload facoltativo e la relativa lunghezza.<ref name=":0432"/>
 
=== Protocollo server ↔ demone ===
[[File:PowerShell.png|PowerShell]]
I messaggi inviati dal server sono costituiti da un'intestazione lunga 24 byte, contenente i seguenti campi:<ref name=":0432"/>
 
* Comando
* Se tutto sarà eseguito correttamente il programma sarà pronto all'utilizzo.
* Primo argomento
* Secondo argomento
* Lunghezza del payload, 0 o superiore
* CRC-32 del payload dati
* Valore magico, calcolato come comando XOR <code>0xFFFFFFFF</code>
 
== Sicurezza ==
== <big>Installazione</big> ==
Fino ad [[Android Froyo|Android 2.2]], Android era vulnerabile [[Exploit|all'exploit]] ''RageAgainstTheCage''. Il [[Demone (informatica)|demone]] adb non controllava il valore di ritorno della [[chiamata di sistema]] [[Setuid e setgid|setuid]] durante la riduzione dei privilegi. L'exploit crea numerosi processi fino a esaurire gli [[PID (informatica)|identificatori di processo]] disponibili. Quando il demone si blocca e si riavvia, non riesce a creare un nuovo processo con privilegi ridotti e continua a funzionare con i privilegi di root, fornendo così una shell root tramite adb.<ref>{{Cita libro|nome=Joshua J.|cognome=Drake|titolo=Android hacker's handbook|url=https://www.worldcat.org/oclc/875820167|data=2014|editore=Wiley|pp=75|oclc=875820167|ISBN=978-1-118-60861-6}}</ref> Nel 2017 è stata scoperta una vulnerabilità di sicurezza che sfruttava ADB per prendere il controllo del [[modem]] integrato nel dispositivo. L'attacco richiedeva che adb fosse già abilitato e autorizzato, anche se erano disponibili alcune soluzioni alternative.<ref>{{Cita web|lingua=en|autore=Tom Mendelsohn|url=https://arstechnica.com/information-technology/2017/01/google-plugs-severe-android-bootmode-vulnerability/|titolo=Google plugs severe Android vulnerability that exposed devices to spying|sito=[[Ars Technica]]|data=9 gennaio 2017|accesso=3 luglio 2025}}</ref>
Esistono tre metodi principali per l'installazione:
 
Diverse famiglie di [[malware]] come ADB.Miner, Ares, IPStorm, Fbot e Trinity, hanno eseguito scansioni su Internet alla ricerca di dispositivi con l'interfaccia adb esposta pubblicamente, installando su di essi malware.<ref>{{Cita web|lingua=en|autore=Catalin Cimpanu|url=https://www.zdnet.com/article/android-devices-ensnared-in-ddos-botnet/|titolo=Android devices ensnared in DDoS botnet|sito=ZDNET|accesso=3 luglio 2025}}</ref> Tuttavia, adb può anche essere utilizzato per rimuovere malware, avviando il dispositivo in [[modalità provvisoria]] ed eseguendo il comando <code>adb uninstall</code>.<ref>{{Cita news|lingua=en|autore=Evan Schuman|url=https://www.computerworld.com/article/3627326/this-vultur-app-takes-malicious-to-the-next-level.html|titolo=This Vultur app takes malicious to the next level|pubblicazione=[[Computerworld]]}}</ref>
# Il metodo più semplice è di installare un tool completo dal [[XDA Developers|forum di XDA]], è già compreso di un prompt di comando e dei driver ADB per poter eseguire i vari comandi.
 
== Note ==
# Scaricare il tool per windows [[Software development kit|SDK(software development kit)]] dal sito ufficiale di [[Google (azienda)|Google]]. Questo tool è completo di un compilatore per tradurre il [[codice sorgente]]. Può essere utile per chi vuole analizzare o eliminare [[bug]].
<references />
 
== Voci correlate ==
# Google dal 2017 permette di scaricare separatamente i driver di ADB a differenza di tempo fa quando bisognava obbligatoriamente scaricare tutto il pacchetto SDK completo, si trova tutto sul sito ufficiale SDK.
 
* [[Android recovery mode]]
== <big>Connessione wireless</big> ==
* [[Fastboot]]
L'evoluzione tecnologica ha permesso di utilizzare non solo il cavo USB per la connessione ADB ma anche una connessione wireless grazie al protocollo [[Suite di protocolli Internet|TCP/IP]], esistono due metodi principali, Differenziati dal [[Rooting|ROOT]] del dispositivo android, ovvero;
 
== Altri progetti ==
1. Se il dispositivo non ha i permessi di ROOT:
{{interprogetto}}
 
* Necessita di essere connessi alla stessa rete, sia il computer che il dispositivo Android.
 
* Collegare dispositivo Android tramite cavo USB(la prima volta).
 
* Mentre il dispositivo è connesso ad adb via USB, eseguire il seguente comando per ascoltare una connessione TCP / IP su una [[Porta (reti)|porta]] (predefinito 5555):
 
* Digitare 'adb tcp-ip <port>'(passare alla modalità TCP / IP).
 
* Scollegare il cavo USB dal dispositivo di destinazione.
 
* Digitare: 'adb connect <ip address>:<port>' (predefinita 5555).
 
* Connessione effettuata.
 
2. Se il dispositivo ha i permessi di root :
 
I dispositivi che sono rootati possono utilizzare un'applicazione dal [[Google Play]] per abilitarla in modo semplice.
 
== <big>Problemi comuni</big> ==
Alcuni problemi che si riscontrano più frequentemente:
 
* Le connessioni ADB non riuscite: Per problemi fisici ad esempio la porta USB del computer danneggiata o il connettore USB del dispositivo android danneggiato.
 
* [[Driver]] USB Android difettosi : Driver non aggiornati oppure driver difettosi, ci sono varie guide dove poter scaricare dei driver adeguati, di solito si scaricano i driver Universali, si possono anche ricercare driver rilasciati dal produttore del device.
 
* Comando non trovato: Errore frequente può capitare per distrazione oppure non si ha l'ultima versione del software, con il comando "ADB help" nel prompt dei comandi comparirà la lista completa dei comandi.
 
* Server is out of date: le versioni presenti di ADB sul computer non è compatibile con la versione del device.
 
== <big>Come si utilizza</big> ==
Un esempio di come funziona teoricamente, saltando i codici.
 
Come installare una [[:it:List_of_custom_Android_distributions|Rom]] Sul mio device poiché troppo datato e lento.
 
# Installare ADB dal sito ufficiale di SDK.
 
# Installare Il pacchetto [[ZIP (formato di file)|.zip]] della Rom(firmware si intende il sistema operativo).
 
# Avviare ADB o Prompt dei comandi.
 
# Mettere in comunicazione lo smartphone e il computer(Connessione via cavo USB oppure Connessione wireless).
 
# Con un codice specifico inoltriamo il pacchetto zip precedentemente scaricato sul computer allo smartphone .
 
# Lo smartphone in ascolto riceve il [[Pacchetto (reti)|pacchetto]] e lo installa in automatico.
 
# Al termine del processo si può scollegare lo smartphone dal computer.
 
== <big>Codice</big> ==
Alcuni esempi di codice<ref>codice preso da: https://helpmanual.io/help/adb/ </ref> utilizzabile con ADB attraverso un prompt o la [[Shell (informatica)|Shell]]:
 
* adb reboot → Per riavviare normalmente il dispositivo.
 
* adb devices → Mostra i dispositivi android connessi con il PC.
 
* adb install → Per installare un'applicazione [[APK (formato di file)|.apk]]. Va inserito alla fine del comando il nome dell'applicazione
 
* adb pull →  Per copiare un file dal dispositivo al pc.
 
* adb push → Per copiare un file dal pc al dispositivo.
 
* adb get-serialno → Mostra il numero di [[Numero di serie|serie]] del dispositivo.
 
* adb logcat > Per visualizzare il [[Registro di sistema|file di registro]].
 
* adb get-state → Visualizza lo stato del dispositivo.
 
* adb start-server →  Avvia il processo del server ADB.
 
* adb kill-server → Arresta il server ADB.
 
* adb shell → Impartisce comandi [[Linux]] al dispositivo Android. Quando appare il [[:en:Command-line_interface#Command_prompt|prompt $]], vuol dire che tutto quello che andremo a fare e i comandi che digiteremo verranno eseguiti all'interno del dispositivo.
 
* adb reboot bootloader → Riavvia il dispositivo in modalità fastboot o modalità bootloader.
 
* adb reboot recovery → Riavvia il dispositivo in in [[Android|recovery mode]].
 
== <big>Android Debug Bridge su Ios</big> ==
Sono presenti due soluzioni differenti per utilizzare [[IOS|Ios]] per il debug bridge.
 
* Per Ios e [[Macintosh|Mac]] purtroppo non esiste un vero e proprio fratello di ADB, ma la situazione è più complicata:
 
Non esiste una funzione integrata, ma bisogna eseguire il [[Jailbreak (iOS)|jailbreak]], si possono trasferire applicazioni (ad esempio, il  Mac viene fornito con [[Xcode]]), si può utilizzare un'applicazione per eseguire le impostazioni dal terminale proprietario, la quale però non è disponibile nell'[[App Store]].
 
Una volta in esecuzione sul dispositivo, è possibile connettersi al dispositivo tramite USB e utilizzare alcuni comandi.
 
Si stabilirà una connessione USB per inoltrare i pacchetti TCP dal server [[SSH File Transfer Protocol|SSH]] al dispositivo.
 
Per funzionare si utilizza un programma, il quale inoltra TCP tramite il [[USB|bus USB]] per consentire lo scambio dei dati.
 
Molto meno complicata è la seconda soluzione :
 
* Utilizzare uno strumento per Ios, il quale sfrutta [[Xcode]] , un IDE per IOS SDK, utilizzato per sviluppare le applicazioni IOS su computer Mac.
 
La parte fondamentale è [https://pypi.org/project/xcrun/ XCRUN], quest'ultimo è un file binario disponibile nello strumento Xcode in cui è possibile controllare il dispositivo.
 
Qualche esempio di comando per IOS a differenza di Android:
 
* $xcrun simctl list  → Lista dei dispositivi connessi.
 
* $xcrun simctl list device types  → Lista dei tipi di dispositivi.
 
* $xcrun simctl io<space><device id><space>screenshot<space><filename.png>  → Eseguire uno [[screenshot]] dello schermo del device.
 
* $ xcrun simctl install<space><device id><space><path of the .app build file> → Installare un [[IPA (formato di file)|.IPA]] file.
 
== <big>Altre funzionalità di ADB</big> ==
Sono presenti vari tutorial su internet per migliorare le prestazioni dello smartphone o per personalizzarlo.
 
Tutto questo grazie ad Android Debug Bridge.
 
Qualche esempio:
 
* Come attivare wi-fi automaticamente quando si entra in casa
 
* Come sincronizzare modalità "Non disturbare" tra android Wear e lo Smartphone
 
* Come Bloccare le notifiche di Avviso durante il gioco o la visione di un video
 
* Come eseguire il downgrade di un'app su Android
 
* Come ottenere i permessi Root
 
== Fonti ==
 
* https://developer.android.com/studio/command-line/adb
 
* https://www.androidpolice.com/2017/01/05/google-makes-adb-fastboot-platform-tools-available-without-full-sdk-android-studio-download/
 
* https://www.xda-developers.com/what-is-adb/
 
* https://www.nextpit.it/adb-driver-android-cosa-sono-come-installarli
 
* https://forum.xda-developers.com/t/adb-for-ios.3258943/
 
* https://stackoverflow.com/questions/23430181/adb-equivalent-for-ios-device
 
* https://www.nextpit.it/adb-driver-android-cosa-sono-come-installarli
 
* https://helpmanual.io/help/adb/
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
 
* {{Sito ufficiale|https://developer.android.com/tools/adb}}
* {{Cita web|url=https://wiki.lineageos.org/adb_fastboot_guide|titolo=Using ADB and fastboot|sito=[[LineageOS]] wiki}}
* {{Cita web|url=https://wiki.archlinux.org/title/Android_Debug_Bridge|titolo=Android Debug Bridge|sito=[[Arch Linux]] wiki|accesso=2 luglio 2025}}
* {{Cita web|url=https://wiki.gentoo.org/wiki/Android/adb|titolo=Android/adb|sito=[[Gentoo Linux]] wiki|accesso=3 luglio 2025}}
* {{Cita web|lingua=en|url=https://en.droidwiki.org/wiki/Android_Debug_Bridge|titolo=Android Debug Bridge (ADB)|sito=Android Wiki|accesso=2 luglio 2025|urlarchivio=https://web.archive.org/web/20240226120857/https://en.droidwiki.org/wiki/Android_Debug_Bridge|urlmorto=sì}}
* https://www.navigaweb.net/2013/11/opzioni-sviluppatore-android.html
* https://pypi.org/project/xcrun/
 
{{Android}}
 
{{Portale|informatica}}
 
[[Categoria:Protocolli di comunicazione]]
[[Categoria:Debugging]]
[[Categoria:Android]]
[[Categoria:Tecnologia]]
[[Categoria:Informatica]]