Abilita il debug USB sul dispositivo
Questo viene fatto in Impostazioni › Sviluppo . Se non hai questa voce nel menu delle impostazioni, vai a Impostazioni › Informazioni , scorri fino al "Numero build" e martellalo come una scimmia finché il tuo dispositivo non si congratula con te per essere diventato uno sviluppatore. Torna alla pagina principale delle Impostazioni menu e vicino al fondo dovresti vedere le impostazioni "Sviluppo" (o "Sviluppatori") ora. Inseriscilo e abilita il debug USB qui.
Identifica il dispositivo
Per prima cosa dobbiamo sapere come si identifica il dispositivo sul bus USB. Per questo, con il dispositivo Android NON connesso, prendi una shell ed esegui il comando lsusb
. Quindi collegare il dispositivo ed eseguire nuovamente il comando. Trova la nuova linea. Per Wileyfox Swift questo è un "dispositivo senza nome":
Bus 004 Device 003: ID 2970:2282
Impostazione delle regole per ADB
Ora abbiamo bisogno dei numeri alla fine della riga precedente:2970:2282
. Questi specificano il fornitore (2970) e il dispositivo stesso (2282). Avendo questi dettagli, abbiamo bisogno di un root shell sulla nostra macchina Linux per modificare (o creare, se non esiste ancora) il /etc/udev/rules.d/51-android.rules
file. Lì, aggiungi una linea per il tuo dispositivo. La seguente riga di esempio mostra come cerca Wileyfox Swift:¹
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
Se hai un dispositivo diverso, sostituisci gli ID del fornitore e del prodotto con quelli che hai trovato sopra durante l'esecuzione di lsusb
. Una breve spiegazione della riga:
SUBSYSTEMS=="usb"
:ovviamente questa regola vale solo per USB;)ATTRS{idVendor}=="2970"
:l'ID fornitore del dispositivo a cui è destinata questa regolaATTRS{idProduct}=="2282"
:l'ID del dispositivoMODE="0666"
:autorizzazioni che il nodo del dispositivo deve ottenere.0666
è piuttosto permissivo, dando a tutti gli utenti del tuo sistema il permesso di lettura e scrittura, quindi se sei preoccupato, potresti provare a sostituirlo con un0660
(dando solo lettura-scrittura al proprietario e al gruppo e nega tutto agli altri).GROUP="androiddev"
:a quale gruppo deve appartenere il nodo del dispositivo. Questo dovrebbe essere un gruppo a cui appartengono gli utenti destinati a lavorare con il dispositivo.SYMLINK+="android%n"
:solo per dare al nodo un bel nome, così puoi trovarlo più facilmente in/dev
(nel mio caso, in seguito è apparso lì come/dev/android5
)
Quella regola inserita in /etc/udev/rules.d/51-android.rules
, dobbiamo dire udev
per farne uso. Il modo più sicuro (accanto al riavvio;) è riavviare il udev
servizio. A seconda della tua distribuzione Linux, questo può essere fatto tramite service udev restart
o /etc/init.d/udev restart
.
Fatto ciò, lascia la shell di root. Disconnetti e riconnetti il tuo dispositivo Android, prova adb devices
ancora. La maggior parte dei dispositivi è apparsa ora, ma non Wileyfox Swift – che ovviamente vuole qualche coccola in più. Se ti trovi in quella situazione, apri (o crea se non esiste) il file ~/.android/adb_usb.ini
e aggiungi una singola riga, nominando il venditore che hai scoperto con lsusb
sopra; per lo Swift sarebbe 0x2970
(yupp, qui devi prefissarlo con 0x
per sottolineare che è un numero esadecimale). Quindi riavvia il server ADB:adb kill-server && adb start-server
. Scollegare e ricollegare nuovamente il dispositivo. Ora adb devices
dovrebbe vederlo.
Connessione del dispositivo
Potresti aver notato adb devices
ti ha detto qualcosa come 0123456789ABCDEF unauthorized
. Va bene e per la tua sicurezza (dispositivi):il tuo computer deve essere prima autorizzato per poter accedere al dispositivo. Quindi emetti semplicemente adb shell
now – che verrà terminato con un error: device unauthorized. Please check the confirmation dialog on your device.
Segui questo consiglio (facoltativamente contrassegna la casella di controllo per autorizzare in modo permanente il tuo computer) e il gioco è fatto:ora puoi utilizzare adb per accedere al tuo dispositivo.
Aggiornamenti:
¹ Si noti che nelle versioni successive di Linux, la sintassi per le regole UDEV è leggermente cambiata, ad es. jcomeau_ictx ha sottolineato nel suo commento. Per i valori che abbiamo trovato sopra sarebbe:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
Due differenze:ora è SUBSYSTEM
(senza plurale), e il gruppo è cambiato da androiddev
a plugdev
(il primo non esiste sui sistemi recenti, il secondo sì e di solito è assegnato almeno al primo utente).
Inoltre, potresti dover aggiungere il vendorID al tuo ~/.android/adb_usb.ini
(un ID per riga, in notazione esadecimale):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970
Alcuni commenti da una nuova distribuzione Linux. Fedora 29 con un telefono Nexus 5X o Nokia 7.1 (Android One).
Per prima cosa disconnetti il telefono, se già connesso.
- Installa Android-tools che fornirà ADB (
sudo dnf install android-tools
) - Copia regole udev (
sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
) - Ricarica regole udev (
sudo udevadm control --reload-rules
) - Riavvia ADB per sicurezza (
sudo systemctl restart adb
)
Ora collega il telefono ed esegui adb devices
dalla riga di comando. Probabilmente vedrai un dispositivo elencato con "nessuna autorizzazione". Questo va bene.
SE non è elencato, dovrai aggiungere il tuo dispositivo al file delle regole udev, ma per me i dispositivi testati hanno funzionato solo con le regole predefinite.
Esegui adb shell
e si spera che riceverai una notifica di sicurezza sul telefono che ti chiede se vuoi fidarti del computer, seleziona sì.
SE invece il tuo computer dice "errore:autorizzazioni insufficienti per il dispositivo", devi assicurarti che sul telefono hai impostato la tua porta USB in modalità "Trasferisci file" e non "Carica questo dispositivo". Su Android 8.1 si trova nelle impostazioni in "Dispositivi connessi"> "USB".
Ho notato che anche se hai tutto funzionante oggi, domani potrebbe rompersi improvvisamente senza una ragione apparente. In tal caso, controlla prima l'impostazione della porta USB sul dispositivo, che potrebbe essere tornata alla modalità di ricarica e, in caso contrario, revoca le autorizzazioni di debug USB sul dispositivo (nelle impostazioni in Opzioni sviluppatore) e dovresti sperare di ottenere il pop -up di nuovo quando esegui adb shell
.
Con questo, sono in grado di eseguire Android Studio ed eseguirlo sul dispositivo connesso.