Errore "Autorizzazioni insufficienti" sul comando `adb push` su 12.04


57

Quando ho provato a inserire il mio file apk in un tablet, ho riscontrato questo errore, per favore aiutami.

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

Grazie in anticipo per l'aiuto.


1
La risposta dell'utente84207, che è supportata dal riferimento alla documentazione ufficiale degli sviluppatori Android, è molto meglio della risposta accettata da Anwar Shah, poiché dovremmo evitare di eseguire i demoni come root ogni volta che è possibile. L'esecuzione di adb come root rende il computer vulnerabile a più attacchi.
nealmcb,

Risposte:


20

Ho visto questo stesso errore a volte su Ubuntu. Una soluzione funzionante per questo è l'esecuzione di adb con sudocomando. Ad esempio, se stai premendo app.apksu sdcard il comando sarebbe

sudo adb push app.apk /mnt/sdcard

Inoltre, assicurati di aver selezionato la modalità "Debug USB" nelle impostazioni dell'applicazione (in GingerBread) o nella sezione Sviluppo (in IceCream Sandwich e versioni successive). Se adb è già in esecuzione, dovresti prima ucciderlo con il comandosudo adb kill-server

Spero che questo possa aiutare.


Ho capito ma proverò anche questo metodo ... grazie per l'aiuto
Neha Sharad Umachigi

5
"Ho capito" ... Per favore, abbi la cortesia di condividere se hai trovato una soluzione, in modo che altri possano trarne beneficio (mentre cercavi di trarne beneficio quando hai posto la domanda). Ad esempio, ora ho questo problema, ma sono costretto a cercare altrove anche se è lo stesso esatto problema che descrivi.
Erjoalgo,

2
Questa risposta è rischiosa poiché i bug in adb possono occupare l'intero computer. La risposta che utilizza le regole udev dell'utente84207, supportata dal riferimento alla documentazione ufficiale dello sviluppatore Android, evita questo problema.
nealmcb,

Questa è la soluzione più semplice, più semplice e almeno funzionante per il problema.
Anwar,

Nota: questo ha funzionato per me perché sudotrova una versione installata diversa da adbquella non sudo. Ecco perché funziona, non perché adbrichiede di più privilegi.
Kevin Cooper,

61

Ho riscontrato questo stesso problema. L'aggiunta di una regola udev come indicato qui ha fatto il trucco:

Accedi come root, crea un file /etc/udev/rules.d/51-android.rulese aggiungi una linea come questa per dare le autorizzazioni a chiunque nel plugdevgruppo:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

In questo esempio, l'ID fornitore è HTC. È necessario utilizzare l'ID fornitore per il dispositivo, che può essere ottenuto eseguendo lsusbe cercando una linea simile

Bus 002 Device 009: ID 2a47:9e18

In questo esempio il tuo ID fornitore sarebbe 2a47, quindi dovresti sostituirlo 0bb4con 2a47. La riga corretta dovrebbe quindi leggere:

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

Ora assegna le autorizzazioni di lettura ai file, ricarica udev e ricarica il demone adb:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

Potrebbe essere necessario scollegare e ricollegare il dispositivo alla porta USB.


9
È possibile ottenere l'ID fornitore USB tramite il comando lsusb. È la prima parte della coppia separata di due punti. Ad esempio 18d1: 4e22 significherebbe che l'id fornitore è 18d1.
Peter Lamberg,

Potrebbe essere necessario "attivare" udev dopo aver aggiunto il nuovo file delle regole (anche se non sono sicuro). Ecco un modo per "attivare" askubuntu.com/questions/82470/… .
user29020,

2
e / o potrebbe essere necessario disconnettere e riconnettere il dispositivo? Ma questa risposta ha funzionato per me ed è molto meglio che eseguire adb come root. Anche il tuo utente Ubuntu deve far parte del plugdevgruppo. Corri idper scoprirlo.
nealmcb,

2
Questo repository è estremamente utile se devi lavorare con molti dispositivi github.com/M0Rf30/android-udev-rules
zamber


22

La risposta di Jorch914 su StackOverflow ha risolto questo problema per me:

Ok Quindi ho finalmente trovato il problema, apparentemente su questo dispositivo devi impostare la connessione come fotocamera (anche dopo che il debug USB è già abilitato)

inserisci qui la descrizione dell'immagine

Anche questo collegamento descrive la procedura di impostazione


1
Sì, era così! Ho dovuto "Selezionare la configurazione USB" su Android N, che era impostato per impostazione predefinita su "Ricarica".
Dan Dascalescu,

1
per qualsiasi motivo sono sempre stato in grado di collegare il mio pixel a un mac e iniziare a lavorare, ma quando mi sono trasferito su una workstation di sviluppo CentOS ho dovuto farlo per far sì che richiedesse il permesso di debug. Grazie
bsautner il

2
Ha funzionato per me. Il trucco sembra essere quello di cambiarlo da "Ricarica" ​​a qualcos'altro, perché.
Bim


10

Ho appena riscontrato lo stesso problema, ma ecco come sono stato in grado di affrontarlo:

  • devi uccidere il server adb esistente emettendo il seguente comando: adb kill-server(potrebbe essere sbagliato, ma l'ho emesso con AND senza sudo
  • avviare il server adb con le autorizzazioni appropriate emettendo: sudo adb start-server
  • Ecco. potresti conoscere tutti i comandi di cui hai bisogno

Non sono sicuro che tu lo sappia, ma esiste un pacchetto che include adb. Ne parlo perché ho notato che stai ottenendo un riferimento a una versione precedente di adb. È possibile installare emettendo quanto segue nella riga di comando:sudo apt-get install android-tools-adb

Spero che questo possa essere d'aiuto.


l'ADB degli strumenti della piattaforma potrebbe essere più recente; questi strumenti sono anche disponibili come download separati, nel frattempo.
Martin Zeitler,

2

Oggi ho riscontrato l' insufficient permissions for deviceerrore, anche se adbaveva funzionato come previsto solo pochi minuti prima. Ora ottengo:

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

$ adb shell
error: insufficient permissions for device

Poco prima di riscontrare l'errore, avevo disabilitato Media device (MTP), poiché pensavo che non avrei dovuto usarlo MTP. Tuttavia, sembra che il debug USB, o almeno alcuni adbcomandi, richiedano che Media device (MTP)sia abilitato.

Per abilitare Media device (MTP)su Android 4.4, vai a:

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

Quando MTPè disabilitato, lsusbmostra quanto segue:

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

Dopo l'abilitazione MTP, lsusb mostra quanto segue:

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

IdVendor e idProduct cambiano, a seconda che MTPsia abilitato o disabilitato o meno.

Non sono un esperto Android, quindi è possibile che il comportamento sopra descritto sia specifico per il mio modello di telefono.


0

Potrebbe essere da un'altra ragione. Ho appena ricevuto questo errore nel tentativo di installare un apk sul dispositivo:

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

È successo perché il dispositivo non era pronto nella modalità corretta. Il dispositivo stava condividendo la sua connessione 4G tramite USB.

Può essere conosciuto così:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

Quindi è stato sufficiente disabilitare la condivisione della connessione sul telefono e ricominciare.

In generale, assicurarsi di avere il seguente risultato tramite il adb devicecomando prima di provare a inviare i file sul dispositivo

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

In questi casi, non è necessario interrompere o riavviare il server adb.

Probabilmente sarebbe la stessa situazione se hai montato il dispositivo per il trasferimento di dati tramite USB


0

Ho avuto lo stesso problema e ho ricevuto autorizzazioni insufficienti. Quello che ho fatto è stato revocare le autorità USB per il mio laptop. Quindi interrotto e avviato il debug USB. Lo ricollegò al laptop e concesse le autorità di debug USB.


1
Potete per favore fornire maggiori informazioni su questo processo? Step by step sarebbe l'ideale, quindi l'OP può seguire il tuo esempio. :)
ThatGuy

0

Ho riscontrato lo stesso problema e l'ho risolto aggiungendo il percorso di your_android_sdk_path alla variabile di ambiente come

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

è il tuo desiderio come vuoi aggiungerlo al tuo account o al tuo sistema modificando questi ~/.bashrcfile o ~/.profile o /etc/profile, /etc/bash.bashrc, or /etc/environmentse vuoi aggiungerlo al sistema.

e quindi creare il collegamento di quello nel cestino

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

se hai usato dispositivi adb o qualsiasi comando, prima uccidi il server come

adb kill-server

quindi avviare il server come

adb start-server
adb devices

ora puoi vedere i tuoi dispositivi elencati correttamente senza problemi



0

Ancora un'altra possibilità: anche il tethering USB è in conflitto con adb. Disabilitarlo risolve il problema per me.

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.