Come configurare l'accesso ADB per dispositivi Android?


39

Sto usando Ubuntu 12.10 e ho installato Android SDK, ho impostato il suo percorso nel mio utente .bashrce funziona.

Il problema è che il mio telefono richiede che adb venga eseguito da root per le autorizzazioni, ma eseguendo adb con sudo ottengo il seguente errore:

sudo: adb: comando non trovato

Ho provato a usare semplicemente sudo -E adb start-server, ma non funziona. Ho cercato di aggiungere la linea del percorso di esportazione a /root/.bashrce (dopo aver realizzato che non ha aiutato) a /etc/bash.bashrc.

Ricordo che avrei potuto impostarlo sul mio Arch Linux, ma immagino che il mio problema ora sia collegato all'account root di Ubuntu non si comporti come mi aspetto.


Quello che non capisco è il seguente:

Questi non funzionano:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

Questo fa (digitando il percorso completo):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

Questo non funziona (usando -E con sudo):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

Funziona (come root):

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

Sono totalmente confuso ora e apprezzerei alcuni chiarimenti su come impostare un percorso per sudo o come altrimenti potrei risolvere il mio problema.

(E per favore, non dire che adb non dovrebbe essere eseguito come root.)

Grazie in anticipo!

Modifica: richiedendo i permessi di root intendo che ne ho bisogno perché altrimenti ottengo:

$ adb devices 
List of devices attached 
????????????    no permissions

che non si presenta come superutente. Scusa se è stato un malinteso.


Ho notato sia con Windows che Ubuntu che i dispositivi Android spesso non vengono visualizzati se li hai collegati a una porta USB 3, collegandoli a una porta non USB3 allevia il problema.
Paul Gregoire,

Risposte:


48

Leggere prima quanto segue: Come si configura Android ADB?


Configurazione dell'accesso USB

Innanzitutto, non è necessario disporre delle autorizzazioni di root per eseguire ADB se le autorizzazioni sono state impostate di conseguenza. Il sito AOSP fornisce esempi per la configurazione dell'accesso USB per dispositivi Pixel / Nexus. Puoi utilizzare il seguente schema per dispositivi non Nexus:

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

Il fornitore e l'ID prodotto possono essere ottenuti utilizzando lsusbe cercando il dispositivo. (Nota: il dispositivo è in realtà un Galaxy Nexus.)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

Quindi la mia /etc/udev/rules.d/51-android.rulesregola udev è simile a questa:

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

Potresti voler ripetere questo per gli altri stati del telefono come avvio rapido, se necessario. Per rendere effettive le modifiche, ricaricare udev ( sudo udevadm control --reload) o riavviare (consigliato).

Rendere disponibili i programmi

Invece di modificare la variabile di percorso , suggerirei di aggiungere un collegamento simbolico all'eseguibile in ~/bin/(solo utente) o in /usr/local/bin/(a livello di sistema).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

1
Ho provato ad aggiungere le regole udev per il mio telefono, ma non è stato d'aiuto, quindi ho pensato che forse non ero chiaro del mio problema. Per favore, se hai tempo, vedi la fine della mia domanda.
Martin Fejes,

Hai aggiunto gli ID corretti? modaco.com/topic/329317-guide-ubuntu-and-the-blade Dopo aver riavviato la macchina? adb devicesfunziona per me senza i privilegi di root.
LiveWireBT

4
Sì, funziona! Ho aggiunto le regole di udev a /etc/udev/rules.d/51-android-rules e apparentemente è stato un errore. Dopo aver usato /lib/udev/rules.d/11-android.rules, è andato tutto bene! Non ho bisogno di persecuzioni di root! Molte grazie!
Martin Fejes,

Aveva lo stesso ???????????? nessuna situazione di permessi e la tua risposta l'ha risolto, grazie.
Panthro,

per qualche motivo qui non ha funzionato, ho dovuto avviare il server adb con sudo; qualche idea su dove potrei guardare per vedere perché non ha funzionato?
Aquarius Power

29

Mi sono imbattuto nello stesso problema con un tablet dalla Cina (qualche strano produttore).

Oltre al /etc/udev/rules.d/51-android.rulesfile, dovevo anche cambiare ~/.android/adb_usb.ini.

Esegui di seguito sul terminale;

sudo gedit ~/.android/adb_usb.ini

e il tuo adb_usb.inifile dovrebbe apparire come:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

Dispositivo disconnesso e ricollegato e doveva anche funzionare sotto i comandi sul terminale;

adb kill-server

e dopo

adb start-server

E il dispositivo è stato rilevato.


Ho provato anche con il tuo consiglio, ma non è cambiato nulla, hai idea di dove potrei guardare per vedere perché non ha funzionato qui?
Aquarius Power

Ben fatto. Questo ha funzionato per me. Insieme a questo, ho dovuto aggiornare il mio adb .
Waffle's Crazy Peanut,

Questa soluzione non funziona su Ubuntu 14.04. L'elenco dei dispositivi risulta ancora vuoto.
Luís de Sousa,

1
Grazie mille, Uygar, finalmente ho trovato la soluzione che funziona per me.
Dmitry Popov,

Questo è quello che mi mancava. In effetti, 0x2207nel tuo esempio è lo stesso ID fornitore utilizzato dal mio dispositivo.
ssokolow,

2

Nel mio caso invece della modalità MTP alcuni smartphone dovevano essere impostati in modalità PTP a differenza della maggior parte dei dispositivi che richiedevano che la modalità MTP fosse rilevata dal mio Android Studio (v1.5.1).

Quindi assicurati di provare prima entrambe le modalità MTP e PTP senza dover dedicare tempo alla configurazione ADP più complessa di Unix e magari danneggiarle.

Nei dispositivi più recenti è possibile sceglierlo direttamente nelle opzioni Dev, mentre in quelli precedenti si trova nelle Opzioni USB connesse sulla barra di stato.

Tuttavia, anche per me i nuovissimi dispositivi Sony Xperia dalla Z5 in poi, non funzioneranno indipendentemente dalla modalità USB. Forse il mio Android Studio è vecchio o devo scavare anche con le configurazioni Unix ADP.


1

Segui questi passi:

  1. Imposta Android var

    Inizialmente vai a casa tua e premi Ctrl+ Hti mostrerà i file nascosti ora cerca il .bashrcfile, aprilo con qualsiasi editor di testo quindi posiziona le righe sottostanti alla fine del file:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Reboot

  3. Utilizzo del dispositivo per il debug

    Ascolta la connessione:

    adb -a
    

    Collega il tuo dispositivo Android e autorizzalo:

    cordova run android --device
    

0

Configurazione dell'accesso USB

L'approccio raccomandato è quello di creare un file in /etc/udev/rules.d/51-android.rules.

Si prega di digitare Terminale:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

Queste nuove regole entreranno in vigore alla successiva connessione di un dispositivo. Potrebbe pertanto essere necessario scollegare il dispositivo e ricollegarlo al computer.


0

Sebbene la risposta accettata mi abbia aiutato a fare le cose, ero ancora confuso su:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

e specialmente

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

poiché secondo sudo --help:

-E, --preserve-env          preserve user environment when running command

Si scopre che su molte distribuzioni di Linux (che includono Debian e Ubuntu) secure_pathe le env_resetopzioni sono attivate di default, che ripristinano la PATHvariabile e la impostano su secure_path. Puoi cambiarlo nel /etc/sudoersfile usando visudo.

In alternativa puoi eseguire:

sudo env PATH=$PATH adb devices

-1

Prova questo comando: sudo tools/android update sdk --no-ui

README SDK:

Benvenuto in Android SDK! L'archivio SDK per Android inizialmente contiene solo gli strumenti SDK di base. Non contiene una piattaforma Android o librerie di terze parti. In realtà, non ha nemmeno tutti gli strumenti necessari per sviluppare un'applicazione. Per iniziare a sviluppare applicazioni, è necessario installare gli strumenti della piattaforma e almeno una versione della piattaforma Android, utilizzando SDK Manager. Platform-tools contiene strumenti di build che vengono periodicamente aggiornati per supportare nuove funzionalità nella piattaforma Android (motivo per cui sono separati dagli strumenti di base SDK), tra cui adb, dexdump e altri. Per installare strumenti della piattaforma, piattaforme Android e altri componenti aggiuntivi, è necessario disporre di una connessione Internet, quindi se si prevede di utilizzare l'SDK in modalità offline, assicurarsi di scaricare i componenti necessari mentre si è online. Per avviare SDK Manager, eseguire il programma "Android". Dalla riga di comando puoi anche attivare direttamente un aggiornamento eseguendo:tools/android update sdk --no-ui


Non sono sicuro che questo affronti la domanda originale ...
Landroni,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.