riesgosos - permisos para usar camara android studio
configurar dispositivo para desarrollo(???????????? sin permisos) (23)
Estoy usando un teléfono Samsung Galaxy Nexus (plataforma Android 4.0 ).
Estoy desarrollando la aplicación de Android en Ubuntu Linux OS. Me gustaría ejecutar mi aplicación directamente en el dispositivo de teléfono Samsung, así que realicé los siguientes pasos de configuración:
en el archivo
AndroidManifest.xml
mi proyecto, se agregóandroid:debuggable="true"
al elemento<application>
En el dispositivo, en Configuración> Seguridad habilitada Fuentes desconocidas
En el dispositivo, en Configuración> Opciones de desarrollador habilitada la depuración USB
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"
En mi computadora, ejecute el comando
chmod a+r /etc/udev/rules.d/51-android.rules
Luego, en mi computadora abrí una terminal y adb devices
comando adb devices
, obtuve:
List of devices attached
???????????? no permissions
Ya que no vi mi dispositivo pero solo ???????????? no permissions
???????????? no permissions
, luego ejecuto los siguientes comandos:
adb kill-server
adb start-server
adb devices
Pero todavía tengo:
List of devices attached
???????????? no permissions
¿Por qué? ¿Qué me estoy perdiendo?
Sin desconectar
Todas las respuestas proporcionadas asumen que usted puede desconectar y volver a conectar el cable USB. En situaciones donde esto no es posible (por ejemplo, cuando está alejado), puede hacer lo siguiente para hacer esencialmente lo que harían las reglas sugeridas de udev al volver a enchufar:
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á encendido y luego ejecútelo, por ejemplo, para el bus 003
:
sudo chmod a+w /dev/bus/usb/003/*
Claramente, esto puede ser más permisivo de lo que quieres (puede haber más dispositivos conectados que solo este), pero entiendes la idea.
- Siga las instrucciones en http://developer.android.com/guide/developing/device.html
- Reemplace el ID de proveedor de "0bb4" con "18d1" en /etc/udev/rules.d/51-android.rules. O agregue otra línea que diga: SUBSYSTEM == "usb", SYSFS {idVendor} == "18d1", MODE = "0666"
- reinicie la computadora o simplemente reinicie el servicio udev.
Cuando reinicie udev, elimine el servidor adb e inicie el servidor adb para ir a la ruta de instalación de Android sdk y haga todo en sudo. A continuación, ejecute dispositivos ADB que resolverá el problema de permisos.
De todos modos, lo que hice para resolver este problema (en Ubuntu ).
Definido en qué casos necesito ejecutar estos comandos. Para la mayoría de los usuarios de Ubuntu hay una carpeta de inicio (archivo oculto
.bashrc
).En la que puedes grabar el lanzamiento de estos comandos. Pero estos comandos se activarán cuando
bash
comandobash
en la consola.Como tengo un shell .zshrc, hice lo siguiente:
consola abierta:
gedit .zshrc
Cuando se abra el archivo, agregue la siguiente línea:
./.add_device_permissions.sh
Después o antes, necesitamos crear este archivo: .add_device_permissions.sh
en el que escribimos lo siguiente:
#!/bin/bash
# Add permissions
ADB="/home/vadimm/Android/Sdk/platform-tools/adb"
$ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices
También necesitamos crear .permissions_redmi_note donde necesitamos codificar nuestra contraseña.
- Para no agregar al archivo
.zshrc
innecesario, podemos especificar la ruta al iniciar el sistema:Startup Applications Preferences
Donde presionamos "Agregar" y escribimos nuestro comando: /home/vadimm/.add_device_permissions.sh
- También puede intentar usar en la línea de comandos los siguientes comandos:
./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices
En Archlinux esto puede suceder ocasionalmente. La solución:
$ sudo -s
# adb kill-server
# adb start-server
En mi caso en Ubuntu 12.04 LTS, tuve que cambiar el modo USB Incredible de mi HTC Incredible de medios a medios y luego el dispositivo apareció debajo de adb. Por supuesto, la depuración ya estaba activada en ambos casos.
Hay muchas respuestas incorrectas publicadas en esta pregunta que van desde insistir en ejecutar adb
como root
(que no debe considerarse como la única solución, ni siquiera la recomendada), a resolver problemas completamente no relacionados.
Aquí está la receta más corta y universal para cuidar de todos los dispositivos adb
y fastboot
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 una versión un poco más larga que publiqué en esta lista.
En cuanto a lo específico que OP hizo mal en su pregunta, no fue volver a cargar las reglas udev
después de editar el archivo .rules
.
Además, OP no dijo qué compilación de Android (también conocida como ROM) tenía en su teléfono. El valor de idVendor
se establece en el software y, por lo tanto, depende de la ROM. Por lo tanto, el valor de 04E8
que usó en su regla original habría funcionado solo para dispositivos con stock ROM de Samsung. Pero esto no es un problema para esta regla de udev
: coincide con todos los dispositivos con interfaces adb
o fastboot
, independientemente de su fastboot
.
Ingrese los siguientes comandos:
adb kill-server
sudo ./adb start-server
adb devices
El problema es que tu servidor adb no se ejecuta como root.
Intenté todo lo anterior, ninguno funcionó ... finalmente funcionó cuando cambié la conexión desde MTP a la cámara (PTP).
Lo que me funciona es matar e iniciar de nuevo el servidor adb. En linux: sudo adb kill-server
y luego sudo adb start-server
. Entonces detectará casi todos los dispositivos de la caja.
Mi dispositivo es POSITIVO y mi sistema operativo es Ubuntu 14.04 LTS
Entonces, mi problema estaba en el nombre de variable
Creo el archivo /etc/udev/rules.d/51-android.rules y coloco SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"
Desconecté el dispositivo y ejecuté:
$ 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
NO debe adb
servidor adb
como root, como sugieren otras respuestas. En su lugar, si está utilizando Arch Linux, haga lo siguiente:
- Instale el paquete
android-udev
con Pacman Recargar las reglas de udev:
# udevadm control --reload-rules
adbusers
grupo deadbusers
y luego cierre la sesión e inicie sesión:# usermod -aG adbusers $LOGNAME
Fuente: https://wiki.archlinux.org/index.php/android#Configuring_adb
Nada me funcionó 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.
Cree un archivo llamado /tmp/android.rules con los siguientes contenidos (los números de proveedores hexadecimales se tomaron de la página de la 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"
Ejecuta 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 la computadora.
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 utilizar , USER="$LOGINNAME"
lugar de , MODE="0666"
en el archivo .rules
, sustituyendo a $LOGINNAME
por su nombre de inicio de sesión, es decir, qué id -nu
imprime.
En algunos casos, puede ser necesario z51-android.rules
un nombre al archivo de reglas de udev que esté cerca del final, como z51-android.rules
.
Para aquellos que usan debian, la guía para configurar un dispositivo en Ubuntu para crear el archivo "/etc/udev/rules.d/51-android.rules" no funciona. Seguí las instrucciones desde here . Poniendo el mismo aquí para referencia.
Editar este archivo como superusuario
sudo nano /lib/udev/rules.d/91-permissions.rules
Encuentra 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. Necesitamos 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, sigue la publicación de @ grebulon para obtener una 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 debe detectarse cuando compila y ejecuta un proyecto.
Pruebe en lugar de GROUP="plugdev"
use el grupo principal de su usuario.
Sé que esto puede ser un poco tarde, pero aquí hay un muy buen artículo sobre cómo agregar manualmente el controlador USB ADB de Android. Agregar manualmente el controlador USB ADB de Android en Ubuntu 14.04 LTS
Editado para agregar contenido de enlace
Pasos
Nota: asegúrese de haber conectado su dispositivo Android en el modo de depuración USB
Abra el terminal ( CTRL + ALT + T
) e ingrese el comando: lsusb
Ahora puede obtener una respuesta similar a esto:
Bus 002 Device 013: ID 283b:1024
Nota: con referencia a este 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
)
Agrega una nueva línea a este archivo:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″
Nota Edite los valores de idVendor
y idProduct
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
- otorgar permiso de lectura / ejecución
sudo service udev restart
- reinicia el servicio udev
Ahora tenemos que agregar el idVendor
a adb_usb.ini
. Ingrese los siguientes comandos:
cd ~/.android
gedit adb_usb.ini
Agregue el siguiente valor 0x283b
Esto no es más que 0x (valor idVendor
). Así que reemplace el valor con. respecto al valor de su dispositivo Guarde y cierre el archivo.
Ahora ingrese el siguiente comando:
sudo service udev restart
Desconecta el dispositivo Android y vuelve a conectarlo.
Ahora ingrese el siguiente comando:
adb kill-server
adb devices
¡Ahí tienes! Su dispositivo debe estar listado.
Copiado de Agregar manualmente el controlador USB ADB de Android en Ubuntu 14.04 LTS
Trabajó para mi.
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]
Ejecuta lo siguiente
sudo -s
adb kill-server
adb start-server
Eso solucionó el problema para mí en un dispositivo Android de compilación personalizado
También puede intentar editar el archivo adb_usb.ini , ubicado en /home/username/.android/ . Este archivo contiene la lista de proveedores de identificación de los dispositivos que desea conectar. Simplemente agregue el proveedor de identificación de su dispositivo en una nueva línea (es una identificación por línea). Luego reinicie el servidor adb y vuelva a conectar su dispositivo.
Me funcionó en Ubuntu 12.10.
Tuve el mismo problema con mi Galaxy S3. Mi problema fue que el valor 04E8
no era el correcto. Para encontrar el correcto, conecte su teléfono inteligente a la computadora y ejecute lsusb
en la terminal. Listará su teléfono inteligente de esta manera:
Bus 002 Device 010: ID 18d1:d002 Google Inc.
Así que el valor idVendor
correcto 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"
Luego ejecuto sudo udevadm control --reload-rules
y ¡todo funcionó!
Tuve el mismo problema, la solución es la misma: (por cierto, no tienes que rootear tu dispositivo).
- Escriba "su" para cambiar a superusuario.
- su-ruta / adb kill-server.
- su-ruta / adb start-server.
- Si no se produce ningún error, puede ver la lista de dispositivos con "your-path / adb devices" en la cuenta raíz.
- Salir de superusuario.
- Ahora puedes realizar "dispositivos adb" en tu cuenta.
Disfrutar.
Utilicé su y empezó a funcionar. Cuando uso Jetbrains con un usuario normal, veo este problema, pero después de reiniciar Jetbrains en su modo, puedo ver mi dispositivo sin hacer nada.
Estoy usando Ubuntu 13.04 y Jetbrains 12.1.4
¡NO siga las 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 ejecute como root puede hacer cualquier cosa en su sistema, si crea o modifica un archivo puede cambiar su permiso para que solo lo use el root. Una vez más, ¡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.
Comunidad GitHub mantiene udev-rules
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
Esta es la lista más completa de udev-rules que he visto hasta ahora, incluso más que el sudo apt-get install android-tools-adb
recomendado https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules , pruébelo.