configurar el dispositivo para el desarrollo (???????????? sin permisos)


Estoy utilizando un teléfono Samsung galaxy nexus ( Android 4.0 plataforma) .

Estoy desarrollando una aplicación para Android en el sistema operativo Ubuntu Linux. Me gustaría ejecutar mi aplicación directamente en el dispositivo Samsung handset, así que realicé los siguientes pasos de configuración:

  1. En mi archivo project AndroidManifest.xml, agregado android:debuggable="true" al elemento <application>

  2. En el dispositivo, en la Configuración > Seguridad habilitado Fuentes desconocidas

  3. En el dispositivo, en la Configuración > Opciones de desarrollador habilitado Depuración USB

  4. En mi computadora, creé el archivo /etc/udev/rules.d/51-android.rules con el siguiente contenido:

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
    
  5. En mi computadora, ejecute el comando chmod a+r /etc/udev/rules.d/51-android.rules

Luego, en mi computadora abrí un terminal y ejecuté el comando adb devices, obtuve:

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

Dado que no vi mi dispositivo, sino solo ???????????? no permissions, ejecuté los siguientes comandos:

 adb kill-server
 adb start-server
 adb devices

Pero todavía got:

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

¿Por qué? ¿Qué me estoy perdiendo?

Author: Alex P., 2012-02-09

22 answers

Lo que funciona para mí es matar e iniciar el servidor adb de nuevo. En linux: sudo adb kill-server y luego sudo adb start-server. Entonces detectará casi todos los dispositivos fuera de la caja.

 421
Author: WarrenFaith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-25 11:04:09

Nada funcionó para mí hasta que finalmente encontré la respuesta aquí: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

Estoy copiando el texto aquí en caso de que desaparezca en el futuro.

Crea un archivo llamado /tmp/android.reglas con el siguiente contenido (los números de proveedor hexadecimales fueron tomados de la página de lista de proveedores):

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

Ejecute los siguientes comandos:

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

Desconecte el cable USB entre el teléfono y el ordenador.

Vuelva a conectar el teléfono.

Ejecute adb devices para confirmar que ahora tiene permiso para acceder al teléfono.

Tenga en cuenta que es posible usar , USER="$LOGINNAME" en lugar de , MODE="0666" en el archivo .rules, sustituyendo $LOGINNAME por su nombre de usuario, es decir, lo que id -nu imprime.

En algunos casos puede ser necesario dar al archivo de reglas udev un nombre que ordene cerca del final, como z51-android.rules.

 327
Author: grebulon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-21 08:57:13

Introduzca los siguientes comandos:

adb kill-server sudo ./adb start-server adb devices

El problema es que el servidor adb no se ejecuta como root.

 73
Author: iancrowther,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-13 15:08:45

Intentó todo lo anterior, ninguno funcionó .. finalmente funcionó cuando cambio conectado como de MTP a Cámara (PTP).

 46
Author: Sabeer Mohammed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-27 05:11:52

Hay muchas respuestas malas publicadas a esta pregunta que van desde insistir en ejecutar adb como root (que no debe promocionarse como la única solución o incluso recomendada) hasta resolver problemas completamente no relacionados.

Aquí está la receta más corta y universal para cuidar los permisos para todos adb y fastboot dispositivos a la vez:

echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb

O podrías usar la versión un poco más larga que publiqué en este gist.

As para lo específico que OP hizo mal en su pregunta, no fue recargar las reglas udev después de editar el archivo .rules.

También OP no dijo qué Android construir (también conocido como ROM) que tenía en su teléfono. El valor idVendor se establece en el software y por lo tanto depende de la ROM. Así que el valor de 04E8 que usó en su regla original habría funcionado solo para dispositivos con ROMs de stock de Samsung. Pero esto no es un problema para esta regla udev: coincide con todos los dispositivos con interfaces adb o fastboot independientemente de su VendorID .

 20
Author: Alex P.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 17:06:06

En Archlinux esto puede suceder ocasionalmente. La solución:

$ sudo -s
# adb kill-server
# adb start-server
 15
Author: Keenan Verbrugge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-24 03:23:19

Para aquellos que usan debian, la guía para configurar un dispositivo bajo Ubuntu para crear el archivo "/etc/udev/rules.d / 51-android.reglas " no funciona. Seguí las instrucciones de aquí. Poniendo lo mismo aquí como referencia.

Editar este archivo como superusuario

sudo nano /lib/udev/rules.d/91-permissions.rules

Encontrar el texto similar a este

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″

Luego cambia el modo a 0666 como abajo

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″

Esto permite que adb funcione, sin embargo, todavía necesitamos configurar el dispositivo para que pueda ser reconocido. Nos necesidad de crear este archivo como superusuario,

sudo nano /lib/udev/rules.d/99-android.rules

Y entrar

SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″

La línea anterior es para HTC, siga @grebulon's post para la lista completa.

Guarde el archivo y luego reinicie udev como superusuario

sudo /etc/init.d/udev restart

Conecte el teléfono a través de USB y debería detectarse cuando compile y ejecute un proyecto.

 7
Author: jaga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-28 10:55:57

Tuve el mismo problema, la solución es como compañero: (por cierto, no tienes que rootear tu dispositivo.)

  1. Escriba "su" para cambiar a superusuario.
  2. su-ruta/adb kill-server.
  3. su-ruta/adb start-server.
  4. Si no se produce ningún error, puede ver la lista de dispositivos con "your-path/adb devices" en la cuenta raíz.
  5. Salir de superusuario.
  6. Ahora puede realizar "dispositivos adb" en su cuenta.

Disfruta.

 5
Author: Jeffrey Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-12 05:04:47

Tuve el mismo problema con mi Galaxy S3. Mi problema era que el valor idVendor 04E8 no era el correcto. Para encontrar el correcto conecte su smartphone al ordenador y ejecute lsusb en el terminal. Mostrará su teléfono inteligente de esta manera:

Bus 002 Device 010: ID 18d1:d002 Google Inc.

Así que el valor correcto idVendor es 18d1. Y la línea en el /etc/udev/rules.d/51-android.rules tiene que ser:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

Entonces corro sudo udevadm control --reload-rules y todo funcionó!

 4
Author: user3714693,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-14 17:25:21

Sé que esto podría ser un poco tarde, pero aquí hay un muy buen artículo sobre cómo agregar manualmente Android ADB USB Driver. Añadiendo manualmente Android ADB USB driver en Ubuntu 14.04 LTS

Editado para Añadir Contenido de Enlace

Pasos

Nota: Asegúrese de que ha conectado su dispositivo Android en modo de depuración USB

Abra el terminal (CTRL + ALT + T) e introduzca el comando: lsusb

Ahora podría obtener una respuesta similar a esto:
Bus 002 Device 013: ID 283b:1024

Nota: Con referencia a esto Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

Ahora ingrese el siguiente comando: sudo gedit /etc/udev/rules.d/51-android.rules
Esto crea el archivo de reglas de Android (51-android.rules) o abre el existente en la ubicación especificada (/etc/udev/rules.d)

Añadir una nueva línea a este archivo:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

Nota Editar idVendor & idProduct valores con los valores de su dispositivo. Guardar y cerrar.

Ahora ingrese el siguiente comando:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules - conceder permiso de lectura / ejecución
sudo service udev restart - Reinicie el servicio udev

Ahora tenemos que añadir el idVendor a adb_usb.ini. Introduzca los siguientes comandos:
cd ~/.android
gedit adb_usb.ini

Agregue el siguiente valor 0x283b

Esto no es más que 0x (valoridVendor). Así que reemplace el valor con. respeto al valor de tu dispositivo Guarde y cierre el archivo.

Ahora ingrese el siguiente comando:
sudo service udev restart

Conecte el dispositivo Android y vuelva a conectarlo.
Ahora ingrese el siguiente comando:
adb kill-server
adb devices

¡Ahí lo tienes! Su dispositivo debe estar en la lista.

Copiado De Agregar manualmente el controlador USB ADB de Android en Ubuntu 14.04 LTS

Funcionó para mí.

 3
Author: dc-aoxn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-20 10:55:53
  1. Siga las instrucciones de http://developer.android.com/guide/developing/device.html
  2. Reemplace el id de proveedor de "0bb4" por "18d1" en /etc/udev/rules.d / 51-android.regla. O añadir otra línea que diga: SUBSISTEMA=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
  3. reinicie el equipo o simplemente reinicie el servicio udev.
 2
Author: krishnendu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-26 10:08:33

Cuando reinicie udev, elimine adb server e inicie adb server goto android sdk installation path y haga todo en sudo. a continuación, ejecutar dispositivos adb va a resolver el problema de permisos.

 1
Author: Chinthaka Senanayaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-16 14:37:52

Mi dispositivo es POSITIVO y mi sistema operativo es Ubuntu 14.04 LTS Por lo tanto, mi problema estaba en nombre de variable

Creo el archivo /etc/udev/rules.d / 51-android.regla y poner SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

Desconecté el dispositivo y ejecutar:

$ sudo udevadm control --reload-rules
$ sudo service udev restart

Después de esto conecté el dispositivo Android en modo desarrollador de nuevo y

$ adb devices

List of devices attached 
1A883XB1K   device
 1
Author: luciana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-24 04:50:23

Sin desenchufar

Todas las respuestas proporcionadas asumen que puede desconectar y volver a conectar el cable USB. En situaciones en las que esto no es posible (por ejemplo, cuando está remoto), puede hacer lo siguiente para hacer esencialmente lo que las reglas udev sugeridas harían al volver a conectar:

lsusb

Encuentre el dispositivo que le interesa, por ejemplo:

Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus

Tome nota del número de bus en el que está y luego ejecute, por ejemplo, para bus 003:

sudo chmod a+w /dev/bus/usb/003/*

Claramente esto puede ser más permisivo que usted quiere (puede haber más dispositivos conectados que solo este), pero usted consigue la idea.

 1
Author: Christian Fritz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-29 16:28:03

Intente en lugar de GROUP="plugdev" usar el grupo principal de su usuario.

 0
Author: Yury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-09 11:53:45

Comunidad GitHub mantiene udev-reglas

Https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

Esta es la lista de reglas udev más completa que he visto hasta ahora, incluso más que la recomendada actualmentesudo apt-get install android-tools-adb en la documentación oficial , dale una oportunidad.

 0
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-21 21:24:26

NO debe ejecutar adb server como root como sugieren otras respuestas. En su lugar, si está utilizando Arch Linux, haga lo siguiente:

  1. Instale el paquete android-udev con Pacman
  2. Recargar reglas udev:

    # udevadm control --reload-rules
    
  3. Agrégate al grupo adbusers y luego cierra sesión e inicia sesión:

    # usermod -aG adbusers $LOGNAME
    

Fuente: https://wiki.archlinux.org/index.php/android#Configuring_adb

 0
Author: Babken Vardanyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-29 06:43:21

Por favor NO siga soluciones que sugieran utilizar sudo (sudo adb start-server)! Esto ejecuta adb como root (administrador) y no se supone que se ejecute 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 ser utilizado solo por root. ¡Otra VEZ, NO!

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

 0
Author: Daniele Segato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-03 08:25:57

En mi caso en ubuntu 12.04 LTS, tuve que cambiar mi HTC modo USB Increíble de carga a los medios de comunicación y luego el dispositivo apareció bajo adb. Por supuesto, la depuración ya estaba activada en ambos casos.

 -1
Author: Alan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-25 15:04:05

Usé su y empezó a funcionar. Cuando uso Jetbrains con el usuario regular, veo este problema, pero después de reiniciar Jetbrains en modo su, puedo ver mi dispositivo sin hacer nada.

Estoy usando Ubuntu 13.04 y Jetbrains 12.1.4

 -1
Author: Deepti Kohli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-23 04:03:50

También puedes intentar editar adb_usb.archivo ini , ubicado en /home/username/.android/. Este archivo contiene la lista de proveedores de id de los dispositivos que desea conectar. Simplemente agrega el proveedor de id de tu dispositivo en la nueva línea (es un id por línea). A continuación, reinicie adb server y vuelva a conectar el dispositivo.

Funcionó para mí en Ubuntu 12.10.

 -1
Author: 10101101,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-20 07:40:48

Si alguien se enfrenta al siguiente mensaje de error cuando usa adb devices

no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]

Ejecute lo siguiente

sudo -s 
adb kill-server
adb start-server

Eso solucionó el problema para mí en un dispositivo android de compilación personalizada

 -2
Author: Ismail Iqbal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-28 16:58:57