GNU/Linux >> Tutoriales Linux >  >> Linux

Android - ¿Cómo hago para que ADB detecte mi dispositivo en Linux?

Habilite la depuración USB en el dispositivo

Esto se hace en Configuración › Desarrollo . Si no tiene esa entrada en su menú de configuración, vaya a Configuración › Acerca de , desplácese hasta el "Número de compilación" y golpéelo como un mono hasta que su dispositivo lo felicite por haberse convertido en desarrollador. Vuelva a la página principal de Configuración menú, y cerca de la parte inferior debería ver la configuración de "Desarrollo" (o "Desarrolladores") ahora. Introdúzcalo y habilite Depuración USB aquí.

Identificar el dispositivo

Primero necesitamos saber cómo se identifica el dispositivo en el bus USB. Para eso, con el dispositivo Android NO conectado, tome un caparazón y ejecute el comando lsusb . Luego conecte el dispositivo y ejecute el comando nuevamente. Encuentra la nueva línea. Para el Wileyfox Swift este es un "dispositivo sin nombre":

Bus 004 Device 003: ID 2970:2282

Configuración de las reglas para ADB

Ahora necesitamos los números al final de la línea anterior:2970:2282 . Estos especifican el proveedor (2970) y el propio dispositivo (2282). Teniendo esos detalles, necesitamos una raíz shell en nuestra máquina Linux para editar (o crear, si aún no existe) el /etc/udev/rules.d/51-android.rules expediente. Allí, agregue una línea para su dispositivo. La siguiente línea de ejemplo muestra cómo se ve el Wileyfox Swift:¹

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Si tiene un dispositivo diferente, reemplace los ID de proveedor y producto con lo que encontró anteriormente cuando ejecutó lsusb . Una breve explicación de la línea:

  • SUBSYSTEMS=="usb" :obviamente esta regla es solo para USB;)
  • ATTRS{idVendor}=="2970" :el ID del proveedor del dispositivo para el que se aplica esta regla
  • ATTRS{idProduct}=="2282" :el ID del dispositivo
  • MODE="0666" :permisos que obtendrá el nodo del dispositivo. 0666 es bastante laxo, otorgando a todos los usuarios de su sistema permisos de lectura y escritura, por lo que si le preocupa, puede intentar reemplazarlo con un 0660 (dando solo lectura y escritura al propietario y al grupo, y negar todo a los demás).
  • GROUP="androiddev" :a qué grupo debe pertenecer el nodo del dispositivo. Este debe ser un grupo al que pertenecen los usuarios que pretendían trabajar con el dispositivo.
  • SYMLINK+="android%n" :solo para darle un buen nombre al nodo, para que pueda encontrarlo más fácilmente en /dev (en mi caso, luego apareció allí como /dev/android5 )

Esa regla entró en /etc/udev/rules.d/51-android.rules , debemos decirle a udev para hacer uso de ella. La forma más segura (junto a un reinicio;) es reiniciar el udev Servicio. Dependiendo de su distribución de Linux, esto se puede hacer a través de service udev restart o /etc/init.d/udev restart .

Hecho eso, deja el caparazón raíz. Desconecte y vuelva a conectar su dispositivo Android, intente adb devices otra vez. La mayoría de los dispositivos aparecieron ahora, pero no el Wileyfox Swift – que obviamente quiere algunos abrazos extra. Si te encuentras en esa situación, abre (o crea si no existe) el archivo ~/.android/adb_usb.ini y añádele una sola línea, nombrando al proveedor que has encontrado con lsusb arriba; para el Swift eso seria 0x2970 (sí, aquí debe prefijarlo con 0x para señalar que es un número hexadecimal). Luego reinicie el servidor ADB:adb kill-server && adb start-server . Desconecte y vuelva a conectar el dispositivo. Ahora adb devices debería verlo.

Conectar el dispositivo

Es posible que haya notado adb devices te dije algo como 0123456789ABCDEF unauthorized . Eso está bien y para su seguridad (dispositivos):su computadora debe estar autorizada primero para poder acceder al dispositivo. Así que simplemente emita adb shell ahora, que se cerrará con un error: device unauthorized. Please check the confirmation dialog on your device. Siga ese consejo (opcionalmente, marque la casilla de verificación para autorizar permanentemente su computadora) y listo:ahora puede usar adb para acceder a su dispositivo.

Actualizaciones:

¹ Tenga en cuenta que en versiones posteriores de Linux, la sintaxis de las reglas de UDEV ha cambiado ligeramente, como p. jcomeau_ictx señaló en su comentario. Para los valores que encontramos arriba serían:

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

Dos diferencias:ahora es SUBSYSTEM (sin plural), y el grupo ha cambiado de androiddev a plugdev (el primero no existe en los sistemas recientes, el último sí y generalmente se asigna al menos al primer usuario).

Además, es posible que deba agregar el ID de proveedor a su ~/.android/adb_usb.ini (una ID por línea, en notación hexadecimal):

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970

Algunos comentarios de una nueva distribución de Linux. Fedora 29 con un teléfono Nexus 5X o Nokia 7.1 (Android One).

Primero desconecte el teléfono, si ya está conectado.

  1. Instale las herramientas de Android que proporcionarán ADB (sudo dnf install android-tools )
  2. Copiar reglas de udev (sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d )
  3. Recargar reglas udev (sudo udevadm control --reload-rules )
  4. Reinicie ADB para estar seguro (sudo systemctl restart adb )

Ahora conecta el teléfono y ejecuta adb devices desde la línea de comandos. Probablemente verá un dispositivo en la lista con "sin permisos". Esto esta bien.
SI no está en la lista, tendrá que agregar su dispositivo al archivo de reglas de udev, pero para mí, los dispositivos probados simplemente funcionaron con las reglas predefinidas.

Ejecute adb shell y con suerte recibirá una notificación de seguridad en el teléfono preguntándole si desea confiar en la computadora, seleccione sí.
SI en cambio, su computadora dice "error:permisos insuficientes para el dispositivo", debe asegurarse de que en el teléfono haya configurado su puerto USB en el modo "Transferir archivos", y no en "Cargar este dispositivo". En Android 8.1, se encuentra en la configuración de "Dispositivos conectados"> "USB".

Me he dado cuenta de que aunque hoy tengas todo funcionando, mañana puede estropearse de repente sin motivo aparente. Si eso sucede, primero verifique la configuración del puerto USB en el dispositivo, que puede haber vuelto a cambiar al modo de carga, y si eso falla, revoque las autorizaciones de depuración USB en el dispositivo (en la configuración en Opciones de desarrollador), y con suerte debería obtener el pop -up de nuevo cuando ejecutas adb shell .

Con esto, puedo ejecutar Android Studio y ejecutarlo en el dispositivo conectado.


Linux
  1. Cómo instalar un controlador de dispositivo en Linux

  2. Cómo usar SSH en Linux desde Android

  3. Cómo obtener el tamaño del directorio en Linux

  4. ¿Cómo obtener información del proveedor y del producto USB mediante programación en Linux?

  5. ¿Cómo montar un dispositivo en Linux?

Cómo usar la terminal de Linux en Android

Cómo instalar Kali Linux en un teléfono Android

Cómo obtener su dirección IP en Linux

Cómo comenzar con Arch Linux

Cómo obtener una lista de enlaces simbólicos en Linux

¿Cómo iniciar un emulador de Android en ubuntu 16.04?