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":
Bus 004 Device 003: ID 2970:2282
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:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
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 dispositivo
MODE="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 um 0660
(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 dizer udev
para fazer uso dela. A maneira mais segura (ao lado de uma reinicialização;) é reiniciar o udev
serviço. Dependendo da distribuição do Linux, isso pode ser feito via service 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ê descobriu lsusb
acima; para o Swift que seria 0x2970
(yupp, aqui você precisa prefixá-lo 0x
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. Agora adb devices
deve ver.
Conectando o dispositivo
Você deve ter notado adb devices
algo como isso 0123456789ABCDEF unauthorized
. Tudo bem e para sua segurança (dispositivos): seu computador deve estar autorizado primeiro para poder acessar o dispositivo. Portanto, basta emitir adb shell
agora - que será encerrado com um error: 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:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
Duas diferenças: agora é SUBSYSTEM
(no plural) e o grupo mudou de androiddev
para plugdev
(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):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970