Error de 'permisos insuficientes' en el comando `adb push` en 12.04

57

Cuando intenté insertar mi archivo apk en una tableta, recibí este error, por favor, ayúdame.

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

Gracias de antemano por la ayuda.

Neha Sharad Umachigi
fuente
1
La respuesta del usuario 84207, que está respaldada por la referencia a la documentación oficial del desarrollador de Android, es mucho mejor que la respuesta aceptada por Anwar Shah, ya que debemos evitar ejecutar daemons como root siempre que sea posible. Ejecutar adb como root hace que la computadora sea vulnerable a más ataques.
nealmcb

Respuestas:

20

He visto este mismo error a veces en Ubuntu. Una solución alternativa para esto es ejecutar adb con sudocomando. Por ejemplo, si está presionando app.apksdcard, el comando sería

sudo adb push app.apk /mnt/sdcard

Además, asegúrese de haber seleccionado el modo "Depuración de USB" en la configuración de la Aplicación (en GingerBread) o en la sección Desarrollo (en IceCream Sandwich y superior). Si adb ya se está ejecutando, primero debe matarlo con el comandosudo adb kill-server

Espero que esto ayude.

Anwar
fuente
Lo tengo pero igual intentaré este método también ... gracias por la ayuda
Neha Sharad Umachigi
55
"Lo tengo" ... Tenga la cortesía de compartir si encontró una solución, para que otros puedan beneficiarse (como trató de beneficiarse cuando hizo la pregunta). Por ejemplo, ahora tengo este problema, pero me veo obligado a buscar en otro lado a pesar de que es exactamente el mismo problema que usted describe.
erjoalgo
2
Esta respuesta es arriesgada ya que los errores en adb pueden hacerse cargo de toda la computadora. La respuesta usando las reglas de udev por user84207, que es compatible con la referencia a la documentación oficial del desarrollador de Android, evita ese problema.
nealmcb
Esta es la solución más simple y fácil y al menos funciona para el problema.
Anwar
Nota: Esto funcionó para mí porque sudoencuentra una versión instalada diferente de la adbque no es sudo. Es por eso que funciona, no porque en adbsí mismo requiera más privilegios.
Kevin Cooper
61

Me encontré con este mismo problema. Agregar una regla de udev como se indica aquí hizo el truco:

Inicie sesión como root, cree un archivo /etc/udev/rules.d/51-android.rulesy agregue una línea como esta para otorgar permisos a cualquier persona del plugdevgrupo:

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

En este ejemplo, la identificación del proveedor es HTC. Debe usar la ID de proveedor para su dispositivo, que puede obtener ejecutando lsusby buscando una línea como

Bus 002 Device 009: ID 2a47:9e18

En este ejemplo, su ID de proveedor sería 2a47, por lo que tendría que reemplazarla 0bb4por 2a47. La línea correcta se leería así:

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

Ahora asigne permisos de lectura en los archivos, vuelva a cargar udev y vuelva a cargar el demonio adb:

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

Es posible que deba desconectar y volver a conectar su dispositivo al puerto USB.

erjoalgo
fuente
99
Puede obtener la identificación del proveedor de USB mediante el comando lsusb. Es la primera parte del par separado por dos puntos. Por ejemplo, 18d1: 4e22 significaría que la identificación del proveedor es 18d1.
Peter Lamberg
Es posible que deba "activar" udev después de agregar el nuevo archivo de reglas (aunque no estoy seguro). Aquí hay una forma de "activar" askubuntu.com/questions/82470/… .
user29020
2
y / o puede que necesite desconectar y volver a conectar el dispositivo? Pero esta respuesta funcionó para mí, y es mucho mejor que ejecutar adb como root. Su usuario de Ubuntu también debe ser parte del plugdevgrupo. Corre idpara averiguarlo.
nealmcb
2
Este repositorio es extremadamente útil si tiene que trabajar con muchos dispositivos github.com/M0Rf30/android-udev-rules
zamber
22

La respuesta de Jorch914 en StackOverflow resolvió este problema para mí:

Ok, finalmente encontré el problema, aparentemente en este dispositivo debes configurarlo para conectarte como cámara (incluso después de que la depuración usb ya esté habilitada)

ingrese la descripción de la imagen aquí

También este enlace describe el proceso de configuración

kas
fuente
1
Sí, esto fue todo! Tuve que "Seleccionar configuración USB" en Android N, que estaba configurado de forma predeterminada en "Carga".
Dan Dascalescu
1
Por alguna razón, siempre pude conectar mi píxel a una Mac y comenzar a trabajar, pero cuando me mudé a una estación de trabajo de desarrollo CentOS tuve que hacer esto para solicitar el permiso de depuración. Gracias
bsautner
2
Trabajó para mi. El truco parece ser cambiarlo de "Carga" a otra cosa, por qué.
Bim
11

Estos dos comandos simples resolvieron el problema para mí:

adb kill-server
adb start-server

Tenga en cuenta que, a diferencia de la respuesta de semi-novato, no necesito sudo.

Nicolas Raoul
fuente
1
esto funcionó para mí
Sudip Bhandari
No funcionó para un Nexus 5X conectado a Ubuntu 16.04 cuando intenté ejecutarlo adb shell ls.
Dan Dascalescu
10

Acabo de pasar por el mismo problema, pero así es como pude resolverlo:

  • debe eliminar el servidor adb existente emitiendo el siguiente comando: adb kill-server(puede ser incorrecto, pero lo emití con AND sin sudo
  • inicie el servidor adb con los permisos adecuados emitiendo: sudo adb start-server
  • voila puede saber emitir cualquier comando que necesite

No estoy seguro si lo sabe, pero hay un paquete que incluye adb. Menciono esto porque noté que está obteniendo una referencia a una versión anterior de adb. Puede instalar emitiendo lo siguiente en su línea de comando:sudo apt-get install android-tools-adb

Espero que esto ayude.

semi-novato
fuente
el ADB de las herramientas de la plataforma podría ser más nuevo; estas herramientas incluso están disponibles como descargas separadas, mientras tanto.
Martin Zeitler
2

Hoy encontré el insufficient permissions for deviceerror, a pesar de que adbhabía estado funcionando como se esperaba solo unos minutos antes. Ahora obtengo:

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

$ adb shell
error: insufficient permissions for device

Poco antes de encontrar el error, lo había deshabilitado Media device (MTP), ya que pensé que no necesitaría usarlo MTP. Sin embargo, parece que la depuración de USB, o al menos algunos adbcomandos, requieren que Media device (MTP)esté habilitada.

Para habilitar Media device (MTP)en Android 4.4, vaya a:

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

Cuando MTPestá deshabilitado, lsusbmuestra lo siguiente:

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

Después de habilitar MTP, lsusb muestra lo siguiente:

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

IdVendor e idProduct cambian, dependiendo de si MTPestá habilitado o no.

No soy un experto en Android, por lo que es posible que el comportamiento anterior sea específico para mi modelo particular de teléfono.

mpb
fuente
0

Podría ser por otra razón. Acabo de recibir este error al intentar instalar un apk en el 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 -

Sucedió porque el dispositivo no estaba listo en el modo correcto. El dispositivo estaba compartiendo su conexión 4G a través de USB.

Se puede conocer así:

$ 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

Por lo tanto, fue suficiente para desactivar la conexión compartida en el teléfono y comenzar de nuevo.

En general, asegúrese de obtener el siguiente resultado mediante el adb devicecomando antes de intentar insertar archivos en el dispositivo

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

En estos casos, no es necesario matar o reiniciar el servidor adb.

Probablemente sea la misma situación si ha montado el dispositivo para la transferencia de datos a través de USB

Rémi B.
fuente
0

Tuve el mismo problema y recibí esos permisos insuficientes. Lo que hice fue revocar las autoridades de USB para mi computadora portátil. Luego se detuvo y comenzó la depuración de USB. Volvió a enchufarlo a la computadora portátil y otorgó a las autoridades de depuración USB.

Les Labbauf
fuente
1
¿Puede proporcionar más información sobre este proceso? Paso a paso sería ideal, para que el OP pueda seguir su ejemplo. :)
ThatGuy
0

Me he enfrentado al mismo problema y lo resolví agregando la ruta de your_android_sdk_path a la variable de entorno como

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

es su deseo cómo desea agregar esto a su cuenta o a todo el sistema editando estos archivos de ~/.bashrcarchivo ~/.profile o /etc/profile, /etc/bash.bashrc, or /etc/environmentsi desea agregar al acceso a todo el sistema.

y luego crea el enlace de eso en bin

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

si ha utilizado dispositivos adb o algún comando, primero elimine el servidor como

adb kill-server

luego inicie el servidor como

adb start-server
adb devices

ahora puede ver que sus dispositivos se enumeran correctamente sin problemas

Naval Kishor Jha
fuente
0

La respuesta a este problema está aquí: https://github.com/snowdream/51-android

Como desarrollador de Android, te sugiero que NO uses "sudo" para forzar el uso de adb en ningún lado. No es lo que debemos hacer. Las reglas, políticas y restricciones existen para nuestra propia seguridad.

Pavlos Theodorou
fuente
0

Otra posibilidad más: la conexión USB también entra en conflicto con adb. Deshabilitarlo me resuelve el problema.

张 实 唯
fuente