Eu só tenho o meu novo brilhante Wileyfox Swift - e antes de colocá-lo para usar Eu quero oem unlock
e raiz-lo (como eu costumo fazer com novos dispositivos;) O problema é que, embora usb-depuração é ativado no dispositivo, e uma linha correspondente no /etc/udev/rules.d/51-android.rules
existe , o dispositivo não é visto por adb devices
.
Sei que existem várias respostas espalhadas por este site, mas elas são difíceis de encontrar, apenas cobrem um dispositivo específico ou não cobrem todas as etapas que finalmente precisei. Portanto, tomo isso como uma chance para uma pergunta canônica independente de dispositivo e dou uma resposta detalhada abaixo:
Como posso ver meu dispositivo Android e usá-lo adb
no Linux?
Respostas:
Ativar depuração USB no dispositivo
Isso é feito em Configurações ›Desenvolvimento . Se você não tiver essa entrada no menu de configurações, vá para Configurações ›Sobre , vá até o" Número da versão "e martele-o como um macaco até que o dispositivo parabenize você por se tornar um desenvolvedor. Volte para a página principal do menu Configurações e, na parte inferior, você deverá ver as configurações "Desenvolvimento" (ou "Desenvolvedores") agora. Digite-o e ative a Depuração USB aqui.
Identifique o dispositivo
Primeiro, precisamos saber como o dispositivo se identifica no barramento USB. Para isso, com o dispositivo Android não ligado, pegue um shell e execute o comando
lsusb
. Em seguida, conecte o dispositivo e execute o comando novamente. Descubra a nova linha. Para o Wileyfox Swift, este é um "dispositivo sem nome":Configurando as regras para o ADB
Precisamos agora os números no final da linha acima:
2970:2282
. Eles especificam o fornecedor (2970) e o próprio dispositivo (2282). Tendo esses detalhes, precisamos de um shell raiz em nossa máquina Linux para editar (ou criar, se ainda não existir) o/etc/udev/rules.d/51-android.rules
arquivo. Lá, adicione uma linha para o seu dispositivo. A linha de exemplo a seguir mostra como fica a aparência do Wileyfox Swift:Se você tiver um dispositivo diferente, substitua os IDs do fornecedor e do produto pelo que você encontrou acima ao executar
lsusb
. Uma breve explicação da linha:SUBSYSTEMS=="usb"
: obviamente, esta regra é apenas para USB;)ATTRS{idVendor}=="2970"
: o ID do fornecedor do dispositivo para o qual esta regra éATTRS{idProduct}=="2282"
: o ID do dispositivoMODE="0666"
: permissões que o nó do dispositivo deve obter.0666
é bastante relaxado, permitindo a todos os usuários do sistema permissão de leitura e gravação - por isso, se você estiver preocupado, tente substituí-lo por um0660
(dando apenas leitura e gravação ao proprietário e ao grupo e negando tudo a outros).GROUP="androiddev"
: a qual grupo o nó do dispositivo deve pertencer. Este deve ser um grupo ao qual os usuários pretendem trabalhar com o dispositivo.SYMLINK+="android%n"
: apenas para dar um nome bonito ao nó, para que você possa encontrá-lo mais facilmente/dev
(no meu caso, ele apareceu mais tarde como/dev/android5
)Essa regra entrou
/etc/udev/rules.d/51-android.rules
, devemos dizerudev
para fazer uso dela. A maneira mais segura (ao lado de uma reinicialização;) é reiniciar oudev
serviço. Dependendo da distribuição do Linux, isso pode ser feito viaservice udev restart
ou/etc/init.d/udev restart
.Feito isso, deixe o shell raiz. Desconecte e reconecte seu dispositivo Android, tente
adb devices
novamente. A maioria dos dispositivos apareceu agora, mas não o Wileyfox Swift - que obviamente quer alguns abraços extras. Se você estiver nessa situação, abra (ou crie, se não existir) o arquivo~/.android/adb_usb.ini
e adicione uma única linha, nomeando o fornecedor com o qual você descobriulsusb
acima; para o Swift que seria0x2970
(yupp, aqui você precisa prefixá-lo0x
para apontar que é um número hexadecimal). Em seguida, reiniciar o servidor ADB:adb kill-server && adb start-server
. Desconecte e reconecte o dispositivo novamente. Agoraadb devices
deve ver.Conectando o dispositivo
Você deve ter notado
adb devices
algo como isso0123456789ABCDEF unauthorized
. Tudo bem e para sua segurança (dispositivos): seu computador deve estar autorizado primeiro para poder acessar o dispositivo. Portanto, basta emitiradb shell
agora - que será encerrado com umerror: device unauthorized. Please check the confirmation dialog on your device.
aviso Siga esse conselho (marque a caixa de seleção para autorizar permanentemente o computador) e pronto: agora você pode usar o adb para acessar o seu dispositivo.Atualizações:
¹ Observe que nas versões posteriores do Linux, a sintaxe para as regras UDEV mudou levemente, como por exemplo jcomeau_ictx apontou em seu comentário. Para os valores que encontramos acima, isso seria:
Duas diferenças: agora é
SUBSYSTEM
(no plural) e o grupo mudou deandroiddev
paraplugdev
(o primeiro não existe em sistemas recentes, o último existe e geralmente é atribuído pelo menos ao primeiro usuário).Além disso, pode ser necessário adicionar o vendorID ao seu
~/.android/adb_usb.ini
(um ID por linha, em notação hexadecimal):fonte
jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d
tive que ignorar o conselho para executáandroid update adb
-lo e inseri-lo manualmente, como você declarou.plugdev
vez deandroiddev
). Não verificado, mas eu diria que a parte importante aqui é que é um grupo que seu usuário (com o qual você deseja usar o USB) também.SUBSYSTEM
vez deSUBSYSTEMS
, emATTR
vez deATTRS
vírgula, depois deMODE="0666"
não ter certeza se todas essas alterações eram necessárias, mas foi o que funcionou.sudo wget -O /etc/udev/rules.d/51-android.rules
a partir daqui trabalhou para mim para o meu Xiaomi Mi A1. É claro que é melhor para aprender, mas bom ser preguiçoso :)Alguns comentários de uma distribuição Linux mais recente. Fedora 29 com um telefone Nexus 5X ou Nokia 7.1 (Android One).
Primeiro desconecte o telefone, se já estiver conectado.
sudo dnf install android-tools
)sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
)sudo udevadm control --reload-rules
)sudo systemctl restart adb
)Agora conecte o telefone e execute a
adb devices
partir da linha de comando. Você provavelmente verá um dispositivo listado com "sem permissões". Isto é bom.Se não estiver listado, você precisará adicionar seu dispositivo ao arquivo de regras do udev, mas, para mim, os dispositivos testados apenas funcionaram com as regras predefinidas.
Execute
adb shell
e esperamos que você receba uma notificação de segurança no telefone perguntando se deseja confiar no computador, selecione sim.Se, em vez disso, o computador indicar "erro: permissões insuficientes para o dispositivo", verifique se você definiu a porta USB no telefone para o modo "Transferir arquivos" e não "Carregar este dispositivo". No Android 8.1, isso está localizado nas configurações em "Dispositivos conectados"> "USB".
Percebi que, mesmo que você tenha tudo funcionando hoje, amanhã ele poderá se romper repentinamente sem motivo aparente. Se isso acontecer, verifique primeiro a configuração da porta USB no dispositivo, que pode ter voltado ao modo de carregamento, e se isso falhar, revogue as autorizações de depuração USB no dispositivo (nas configurações em Opções do desenvolvedor) e espere obter o pop -up novamente quando você executar
adb shell
.Com isso, sou capaz de executar o Android Studio e executar no dispositivo conectado.
fonte