Como configurar o acesso ADB para dispositivos Android?

39

Estou usando o Ubuntu 12.10 e instalei o Android SDK, defina o caminho no meu usuário .bashrce funcione.

O problema é que meu telefone exige que o adb seja executado pela raiz para obter permissões, mas ao executar o adb com o sudo, recebo o seguinte erro:

sudo: adb: comando não encontrado

Eu tentei simplesmente usar sudo -E adb start-server, mas não funciona. Tentei adicionar a linha do caminho de exportação /root/.bashrce (depois de perceber que isso não ajudava) /etc/bash.bashrc.

Lembro que eu poderia configurá-lo no meu Arch Linux, mas acho que agora o meu problema está conectado à conta raiz do Ubuntu não se comportando como eu esperava.


O que eu não entendo é o seguinte:

Estes não funcionam:

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

Isso ocorre (digitando o caminho completo):

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

Isso não funciona (usando -E com sudo):

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

Isso funciona (como root):

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

Agora estou totalmente confuso e gostaria de esclarecer como definir um caminho para o sudo ou de que outra forma eu poderia resolver o meu problema.

(E não diga que o adb não deve ser executado como root.)

Desde já, obrigado!

Edit: Ao exigir permissões de root, quero dizer que preciso delas, caso contrário, recebo:

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

o que não ocorre como superusuário. Desculpe se foi mal entendido.

Martin Fejes
fonte
Percebi no Windows e no Ubuntu que os dispositivos Android geralmente não aparecem se você os tiver conectado a uma porta USB 3, e a conexão a uma porta que não seja USB3 alivia o problema.
Paul Gregoire
dos documentos: source.android.com/source/…
Paschalis

Respostas:

48

Leia o seguinte primeiro: Como faço para configurar o Android ADB?


Configurando o acesso USB

Primeiro, você não precisa de permissões de root para executar o ADB se tiver definido as permissões adequadamente. O site AOSP fornece exemplos para configurar o acesso USB a dispositivos Pixel / Nexus. Você pode usar o seguinte esquema para dispositivos que não sejam do Nexus:

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

O ID do fornecedor e do produto pode ser obtido usando lsusbe pesquisando o seu dispositivo. (Nota: o dispositivo é realmente um Galaxy Nexus.)

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

Portanto, minha /etc/udev/rules.d/51-android.rulesregra do udev se parece com isso:

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

Você pode repetir isso para os outros estados do telefone, como inicialização rápida, se necessário. Para permitir que as alterações entrem em vigor, recarregue o udev ( sudo udevadm control --reload) ou reinicie (recomendado).

Disponibilizando programas

Em vez de modificar a variável de caminho , sugiro adicionar um link simbólico ao executável em ~/bin/(somente usuário) ou em /usr/local/bin/(todo o sistema).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
LiveWireBT
fonte
11
Tentei adicionar as regras do udev para o meu telefone, mas não ajudou, então pensei que talvez não estivesse claro sobre o meu problema. Por favor, se você tiver tempo, veja o final da minha pergunta.
Martin Fejes
Você adicionou os IDs corretos? modaco.com/topic/329317-guide-ubuntu-and-the-blade Reiniciou sua máquina depois? adb devicesfunciona para mim sem privilégios de root.
LiveWireBT
4
Sim, isso funciona! Adicionei as regras do udev ao /etc/udev/rules.d/51-android-rules e, aparentemente, foi um erro. Depois de usar /lib/udev/rules.d/11-android.rules, estava tudo bem! Eu não preciso de suposições de raiz! Muito obrigado!
Martin Fejes
Tinha o mesmo ???????????? situação sem permissões e sua resposta resolveu, obrigado.
Panthro 24/02
por algum motivo não funcionou aqui, tive que iniciar o servidor adb com o sudo; Alguma idéia de onde eu poderia procurar para ver por que não funcionou?
Aquarius Power
29

Eu me deparei com o mesmo problema com um tablet da China (algum fabricante estranho).

Além do /etc/udev/rules.d/51-android.rulesarquivo, eu precisava mudar ~/.android/adb_usb.initambém.

Corra abaixo no terminal;

sudo gedit ~/.android/adb_usb.ini

e seu adb_usb.iniarquivo deve se parecer com:

# 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 e reconectado e também necessário para executar os comandos abaixo no terminal;

adb kill-server

e depois

adb start-server

E o dispositivo foi detectado.

Uygar Y
fonte
Eu tentei com a sua dica também, mas nada mudou, alguma idéia de onde eu poderia olhar para ver por que não funcionou aqui?
Aquarius Power
Agradável. Isso funcionou para mim. Junto com isso, tive que atualizar meu adb .
Amendoim louco do Waffle,
Esta solução não funciona no Ubuntu 14.04. A lista de dispositivos ainda sai vazia.
Luís de Sousa
11
Muito obrigado, Uygar, finalmente encontrei a solução que funciona para mim.
Dmitry Popov
Isso é o que eu estava perdendo. De fato, 0x2207no seu exemplo é o mesmo ID de fornecedor que meu dispositivo usa.
Ssokolow
2

No meu caso, em vez do modo MTP, alguns smartphones precisavam ser configurados no modo PTP, diferente da maioria dos dispositivos que exigem que o modo MTP seja detectado pelo meu Android Studio (v1.5.1).

Portanto, certifique-se de experimentar primeiro os modos MTP e PTP antes, sem precisar gastar tempo com a Configuração ADP mais complexa do Unix e talvez prejudicá-los.

Em dispositivos mais novos, você pode selecioná-lo diretamente nas opções de desenvolvedor, enquanto nos mais antigos, nas Opções conectadas por USB na barra de status.

No entanto, também para mim, os mais recentes dispositivos Sony Xperia da Z5 e superior, não funcionarão independentemente do modo USB. Talvez o meu Android Studio seja antigo ou precise cavar também com as configurações do Unix ADP.

George Goodporter
fonte
1

Siga esses passos:

  1. Definir vars android

    Inicialmente, vá para sua casa e pressione Ctrl+ Hele exibirá os arquivos ocultos agora, procure o .bashrcarquivo, abra-o com qualquer editor de texto e coloque as linhas abaixo no final do arquivo:

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

  3. Usando o dispositivo para depurar

    Escute a conexão:

    adb -a
    

    Conecte seu dispositivo Android e autorize-o:

    cordova run android --device
    
Vladimir Tamayo
fonte
0

Configurando o acesso USB

A abordagem recomendada é criar um arquivo em /etc/udev/rules.d/51-android.rules.

Digite o 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

Essas novas regras entram em vigor na próxima vez que um dispositivo for conectado. Portanto, pode ser necessário desconectar o dispositivo e conectá-lo novamente ao computador.

Benny
fonte
0

Embora a resposta aceita tenha me ajudado a fazer as coisas, eu ainda estava confuso sobre:

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

e especialmente

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

pois de acordo com sudo --help:

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

Acontece que em muitas distribuições linux (que incluem Debian e Ubuntu) secure_pathe env_resetopções estão ativadas por padrão, que redefinem sua PATHvariável e a definem como secure_path. Você pode alterá-lo no /etc/sudoersarquivo usando o visudo.

Como alternativa, você pode executar:

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

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

LEIA-ME DO SDK:

Bem-vindo ao Android SDK! O arquivo do SDK do Android contém inicialmente apenas as ferramentas básicas do SDK. Ele não contém uma plataforma Android ou bibliotecas de terceiros. Na verdade, ele nem tem todas as ferramentas necessárias para desenvolver um aplicativo. Para começar a desenvolver aplicativos, você deve instalar as ferramentas da plataforma e pelo menos uma versão da plataforma Android, usando o Gerenciador de SDK. As ferramentas de plataforma contêm ferramentas de construção que são atualizadas periodicamente para dar suporte a novos recursos na plataforma Android (é por isso que eles são separados das ferramentas básicas do SDK), incluindo adb, dexdump e outros. Para instalar ferramentas de plataforma, plataformas Android e outros complementos, é necessário ter uma conexão com a Internet. Portanto, se você planeja usar o SDK enquanto estiver offline, baixe os componentes necessários enquanto estiver online. Para iniciar o SDK Manager, execute o programa "android". Na linha de comando, você também pode acionar diretamente uma atualização executando:tools/android update sdk --no-ui

user121040
fonte
Não tenho certeza de que isso aborda a questão original ... #
1111 landroni