¿Cómo configurar el acceso ADB para dispositivos Android?

39

Estoy usando Ubuntu 12.10 y he instalado Android SDK, configuré su ruta en mi usuario .bashrcy funciona.

El problema es que mi teléfono requiere que adb se ejecute por root para obtener permisos, pero al ejecutar adb con sudo obtengo el siguiente error:

sudo: adb: comando no encontrado

Intenté usarlo simplemente sudo -E adb start-server, pero no funciona. Intenté agregar la línea de ruta de exportación a /root/.bashrcy (después de darme cuenta de que no ayudó) a /etc/bash.bashrc.

Recuerdo que podría configurarlo en mi Arch Linux, pero supongo que mi problema ahora está conectado a la cuenta raíz de Ubuntu que no se comporta como lo esperaba.


Lo que no entiendo es lo siguiente:

Estos no funcionan:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

Esto hace (escribiendo la ruta completa):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

Esto no funciona (usando -E con sudo):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

Esto funciona (como root):

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

Ahora estoy totalmente confundido y agradecería algunas aclaraciones sobre cómo establecer un camino para sudo o cómo podría resolver mi problema.

(Y por favor, no digas que adb no debería ejecutarse como root).

¡Gracias por adelantado!

Editar: Al requerir permisos de root quiero decir que los necesito porque de lo contrario obtengo:

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

que no ocurre como superusuario Lo siento si fue un malentendido.

Martin Fejes
fuente
He notado con Windows y Ubuntu que los dispositivos Android a menudo no aparecen si los tienes enchufados en un puerto USB 3, enchufarlos en un puerto que no sea USB3 alivia el problema.
Paul Gregoire
de los documentos: source.android.com/source/…
Paschalis

Respuestas:

48

Lea primero lo siguiente: ¿Cómo configuro Android ADB?


Configurar acceso USB

Primero, no necesita permisos de root para ejecutar ADB si ha configurado los permisos en consecuencia. El sitio de AOSP proporciona ejemplos para configurar el acceso USB para dispositivos Pixel / Nexus. Puede usar el siguiente esquema para dispositivos que no sean Nexus:

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

El proveedor y la identificación del producto se pueden obtener usando lsusby buscando su dispositivo. (Nota: el dispositivo en realidad es un Galaxy Nexus).

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

Entonces mi /etc/udev/rules.d/51-android.rulesregla de udev se ve así:

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

Es posible que desee repetir esto para los otros estados del teléfono como fastboot si es necesario. Para que los cambios surtan efecto, vuelva a cargar udev ( sudo udevadm control --reload) o reinicie (recomendado).

Hacer programas disponibles

En lugar de modificar la variable de ruta , sugeriría agregar un enlace simbólico al ejecutable en ~/bin/(solo usuario) o en /usr/local/bin/(todo el sistema).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
LiveWireBT
fuente
1
Intenté agregar las reglas de udev para mi teléfono, pero no ayudó, así que pensé que tal vez no estaba claro acerca de mi problema. Por favor, si tienes tiempo, mira el final de mi pregunta.
Martin Fejes el
¿Has agregado las ID correctas? modaco.com/topic/329317-guide-ubuntu-and-the-blade ¿Has reiniciado tu máquina después? adb devicesfunciona para mí sin privilegios de root.
LiveWireBT
44
Yay, funciona! Agregué las reglas de udev a /etc/udev/rules.d/51-android-rules y aparentemente fue un error. Después de usar /lib/udev/rules.d/11-android.rules, ¡todo estuvo bien! ¡No necesito persmisiones de root! ¡Muchas gracias!
Martin Fejes el
Tenía el mismo ???????????? sin situación de permisos y su respuesta la resolvió, gracias.
Panthro
por alguna razón no funcionó aquí, tuve que iniciar el servidor adb con sudo; ¿Alguna idea de dónde podría mirar para ver por qué no funcionó?
Aquarius Power
29

Me encontré con el mismo problema con una tableta de China (algún fabricante extraño).

Además del /etc/udev/rules.d/51-android.rulesarchivo, necesitaba cambiar ~/.android/adb_usb.initambién.

Ejecutar a continuación en la terminal;

sudo gedit ~/.android/adb_usb.ini

y su adb_usb.iniarchivo debería verse así:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

Dispositivo desconectado y reconectado y también necesitaba ejecutar los siguientes comandos en el terminal;

adb kill-server

y después

adb start-server

Y el dispositivo fue detectado.

Uygar Y
fuente
Intenté con tu consejo también, pero nada cambió, ¿alguna idea de dónde podría ver para ver por qué no funcionó aquí?
Acuario Power
Buena esa. Eso funcionó para mí. Junto con eso, tuve que actualizar mi adb .
Waffle's Crazy Peanut
Esta solución no funciona en Ubuntu 14.04. La lista de dispositivos todavía sale vacía.
Luís de Sousa
1
Muchas gracias, Uygar, finalmente encontré la solución que me funciona.
Dmitry Popov
Eso es lo que me faltaba. De hecho, 0x2207en su ejemplo es la misma ID de proveedor que utiliza mi dispositivo.
ssokolow
2

En mi caso, en lugar del modo MTP, algunos teléfonos inteligentes solo tenían que configurarse en modo PTP, a diferencia de la mayoría de los dispositivos que requerían que mi estudio Android detectara el modo MTP (v1.5.1).

Por lo tanto, asegúrese de probar primero los modos MTP y PTP antes sin necesidad de perder tiempo en la configuración ADP más compleja de Unix y quizás dañarlos.

En los dispositivos más nuevos, puede elegirlo directamente en las opciones de desarrollo, mientras que en los más antiguos está en las Opciones de conexión USB en la barra de estado.

Sin embargo, también para mí, los dispositivos Sony Xperia más nuevos de Z5 y superiores no funcionarán sin importar el modo USB. Tal vez mi Android Studio es viejo o necesito cavar también con las configuraciones de Unix ADP.

George Goodporter
fuente
1

Sigue estos pasos:

  1. Establecer Android Vars

    Inicialmente vaya a su casa y presione Ctrl+ H, le mostrará archivos ocultos, ahora busque el .bashrcarchivo, ábralo con cualquier editor de texto y luego coloque las líneas a continuación al final del archivo:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Reiniciar

  3. Usando el dispositivo para depurar

    Escuche la conexión:

    adb -a
    

    Conecte su dispositivo Android y autorícelo:

    cordova run android --device
    
Vladimir Tamayo
fuente
0

Configurar acceso USB

El enfoque recomendado es crear un archivo en /etc/udev/rules.d/51-android.rules.

Por favor, escriba Terminal:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

Esas nuevas reglas entrarán en vigencia la próxima vez que se conecte un dispositivo. Por lo tanto, podría ser necesario desconectar el dispositivo y volver a enchufarlo a la computadora.

Benny
fuente
0

Aunque la respuesta aceptada me ayudó a hacer las cosas, todavía estaba confundido acerca de:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

y especialmente

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

ya que según sudo --help:

-E, --preserve-env          preserve user environment when running command

Resulta que en muchas distribuciones de Linux (que incluye Debian y Ubuntu) secure_pathy las env_resetopciones están activadas de forma predeterminada, que restablecen su PATHvariable y la configuran secure_path. Puedes cambiarlo en el/etc/sudoers archivo usando visudo.

Alternativamente, puede ejecutar:

sudo env PATH=$PATH adb devices
maxnorbi
fuente
-1

Prueba este comando: sudo tools/android update sdk --no-ui

SDK README:

¡Bienvenido al SDK de Android! El archivo del SDK de Android inicialmente contiene solo las herramientas básicas del SDK. No contiene una plataforma Android ni ninguna biblioteca de terceros. De hecho, ni siquiera tiene todas las herramientas que necesita para desarrollar una aplicación. Para comenzar a desarrollar aplicaciones, debe instalar las herramientas de plataforma y al menos una versión de la plataforma Android, utilizando el SDK Manager. Platform-tools contiene herramientas de compilación que se actualizan periódicamente para admitir nuevas funciones en la plataforma Android (razón por la cual están separadas de las herramientas básicas del SDK), incluidas adb, dexdump y otras. Para instalar herramientas de plataforma, plataformas de Android y otros complementos, debe tener una conexión a Internet, por lo que si planea usar el SDK sin conexión, asegúrese de descargar los componentes necesarios mientras está en línea. Para iniciar el SDK Manager, ejecute el programa "android". Desde la línea de comandos también puede activar directamente una actualización ejecutando:tools/android update sdk --no-ui

usuario121040
fuente
No estoy seguro de que esto aborde la pregunta original ...
landroni