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 reglaATTRS{idProduct}=="2282"
:el ID del dispositivoMODE="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 un0660
(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.
- Instale las herramientas de Android que proporcionarán ADB (
sudo dnf install android-tools
) - Copiar reglas de udev (
sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
) - Recargar reglas udev (
sudo udevadm control --reload-rules
) - 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.