adb sin permisos en Ubuntu 17.04

48

Cuando lo intento:

$ adb devices

obtengo el resultado:

List of devices attached 
????????????    no permissions

¿Cuál es el problema?

Probé en una máquina Ubuntu 16.04 y funcionó perfectamente. Probé un dispositivo 7.1.1 y también funcionó perfectamente.

Nadav Tasher
fuente
Tratar sudo adb devices. Si eso funciona muy bien pero de memoria no he tenido que ser root para verificar si hay dispositivos conectados.
shmink
1
no funcionará con sudo pero con el inicio de sesión raíz lo hará. El problema es que Android Studio solo preforma adb desde una sesión no root, y ejecutándolo con jksudo no reconocerá mis archivos.
Nadav Tasher
He encontrado lo mismo con Android Studio y, en general, cualquier cosa hecha por jetbrains. Cuando instalaste Android Studio, ¿lo hiciste como root?
shmink
instalado como root a / usr / local / y chmoded a 777 -R, no se ejecuta como root para que reconozca la configuración y sdk.
Nadav Tasher
¿Qué hay de ejecutarlo como root y simplemente cambiar la configuración y SDK adecuadamente?
shmink

Respuestas:

64

Intente reiniciar el servidor Adb.

sudo adb kill-server

y entonces

sudo adb start-server

luego conecte su dispositivo, active la depuración y escriba

adb devices
Sumeet Deshmukh
fuente
2
Esto funciona ... más o menos. Después de hacer eso, de hecho, la ejecución adb devicesahora muestra el dispositivo (y obtengo el cuadro de diálogo de huellas digitales). Sin embargo, todavía no funciona con Android Studio. Además, cuando ejecuto Android Studio, y luego ejecuto adb devicesdesde una consola, aparece un "servidor adb desactualizado" y el servidor adb se reinicia. Después de eso, llego a la situación de "sin permisos" nuevamente.
Sombra
Esto no funciona. Los dispositivos adb no muestran nada y los auriculares nunca vuelven a pedir permiso.
Tyguy7
62

Tuve el mismo problema Asegurarse de que el modo USB del dispositivo NO se esté cargando solo lo ha resuelto.

Ivan Klass
fuente
55
Lo mismo aquí, modifiqué las reglas de Udev sin resultados, cambié USB a compartir archivos y listo. El dispositivo no requería reglas de udev o modos USB específicos en la versión anterior de ubuntu.
Fco P.
3
Esta debería ser la respuesta correcta (no el servidor de reinicio adb)
RumburaK
1
Respuesta correcta para mi.
Alvaro Gutierrez Perez
1
No debería ser la respuesta correcta pero funcionó.
Uzumaki D. Ichigo
1
Sí, esta es la respuesta correcta.
39

Es muy probable que udev esté agregando incorrectamente su dispositivo. Yo también tuve este problema y encontré una solución relativamente simple.

Encuentra tu dispositivo en lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Punto de interés en este caso:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Consulte el archivo del dispositivo correspondiente

$ ls -l /dev/bus/usb/001/006

Probablemente verás algo como

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Esto significa que el archivo del dispositivo será propiedad de la raíz del usuario y la raíz del grupo, por lo que adb puede acceder a él como root pero no como su usuario estándar.

Esto se puede resolver mediante la creación de una nueva regla udev, que solía /etc/udev/rules.d/51-android.rules, para agregar el dispositivo al grupo plugdev, que adb ya asume que eres miembro (deberías hacerlo, verifica usando id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Recuerde reemplazar el ATTR {idProduct} == "4ee7" con su propia identificación de producto que descubrió en el paso uno. ** (Si su proveedor no es Google Inc., también reemplace la identificación del proveedor por la anterior a los dos puntos en lsusb).

Ahora solo desconecte su dispositivo y vuelva a enchufarlo (udev debería responder automáticamente al nuevo archivo) y tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Fuente: Agregar reglas udev para depuración de dispositivos Android con Android - Janos Gyerik

Pablo
fuente
1
Esta respuesta resolvió mi problema. Perfecto gracias.
alexmeia
1
Gracias @Paul Me ayudó. Bien explicado con razón. Creo que también se requiere reiniciar el servicio udev.
Gagan
este es sin duda la solución correcta si no desea utilizar sudo para cosas que no debería ser necesario el uso de sudo
aholt
Esta debería ser la respuesta aceptada, ya que es la respuesta correcta . La respuesta mejor calificada es realmente solo una solución.
Joel Cross
Esto lo resolvió para mí. Funcionó ayer sin las reglas, pero luego de instalar actualizaciones en ubuntu dejó de funcionar y tuve que hacer esto.
simernes
2

Para ampliar la respuesta de Sumeet Deshmukh, su enfoque funciona en general, si solo desea usar el adbcomando desde la consola.

Android Studio, sin embargo, aparentemente inicia su propio servidor adb, matando al nuestro. Esto significa que después de que hemos matado / iniciado el servidor con sudo, Studio lo reinicia, lo que lleva a la situación inicial: sin permisos.

La solución es iniciar Studio primero, luego realizar el inicio / detención del servidor. Al hacerlo, logré que mi Nexus 5X apareciera como un objetivo de ejecución válido en Studio.

Esta no es la mejor situación (tener que ejecutar comandos cada vez que inicias Studio), pero hace el truco de una manera rápida y sucia. Si encuentro una solución más permanente, actualizaré esta respuesta.

Sombra
fuente
muchas gracias, aunque fue un error corregido por una actualización del sistema (en el teléfono) y una actualización de estudio.
Nadav Tasher
2

Cambiar el modo USB del teléfono me sirvió. (Lo configuré en Transferencia de archivos ).

NuttLoose
fuente
2

Por favor, no sigue las soluciones que sugieren que el usosudo ( sudo adb start-server)! ¡Esto ejecuta adb como root (administrador) y NO se supone que debe ejecutarse así! ¡Es una MALA solución !

Todo lo que se ejecuta como root puede hacer cualquier cosa en su sistema, si crea o modifica un archivo puede cambiar su permiso para que solo lo use root. De nuevo, ¡NO!

Lo correcto es configurar su sistema para que el USUARIO tenga el permiso, consulte esta guía que escribí sobre cómo hacerlo correctamente.

Daniele Segato
fuente
2

No funcionó para mí después de agregarme al plugdevgrupo y reiniciar la máquina solo para asegurarme de que el cambio surta efecto en todas mis sesiones de shell. Luego descubrí que no hay ningún 51-android.rulesarchivo /etc/udev/rules.dy tuve que hacer lo siguiente para solucionar el problema:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

También tuve que desconectar y volver a enchufar mi dispositivo Android.

russoue
fuente
Esto tampoco funciona para mí ...
Tyguy7
1

Debe proporcionar permiso en su dispositivo Android. Vaya a Configuración> Opciones de desarrollador. Intente desactivar la depuración USB y luego vuelva a activarla. Retire el cable y vuelva a conectarlo. También intente eliminar todas las autorizaciones guardadas de las opciones de desarrollador. Ahora debería solicitar permiso de depuración mediante un aviso en su teléfono. Acéptalo.

Joel G Mathew
fuente
no funciona, ya lo he probado, si es importante, estoy usando Android 7.1.2, y en otro dispositivo que ejecuta 7.1.1 funcionó.
Nadav Tasher
¿Intentó eliminar todas las autorizaciones de host? Reiniciado después de eso?
Joel G Mathew
no se reinició Lo intentaré y te diré si funcionó.
Nadav Tasher
Si funcionó, puedes aceptar la respuesta.
Joel G Mathew
comprobaré más tarde hoy
Nadav Tasher
0

No tengo idea de por qué funciona, pero esta fue la única solución que funcionó para mí.

Encuentra dónde se está ejecutando adb (si eres como yo tienes varias versiones instaladas). Tenga en cuenta que las herramientas como react native pueden decidir usar otras versiones aleatorias para hacer su vida más difícil. Para mi lo es ~/Android/Sdk/platform-tools/adb. Entonces correré:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Las herramientas de Android son súper molestas.

Bufke
fuente
0

Vaya a Configuración >> Mantenimiento >> Almacenamiento. Luego verifique el menú superior izquierdo y haga clic en la conexión USB de la computadora y luego cambie a Dispositivo multimedia (MTP).

Charloh Maguri Jnr
fuente