sexta-feira, 4 de março de 2011

Ubuntu, ADB e Defy

Conectar um aparelho que roda Android em um computador com Ubuntu é uma tarefa trivial. Basta conectar o cabo, liberar o acesso ao cartão de memória no aparelho e navegar livremente. Já fazer o dispositivo conectar com a ponte de debug do Android SDK não é tão simples assim.
O Android SDK disponibiliza o chamado Android Debug Bridge (ADB). Através dessa ferramenta é possível executar aplicativos diretamente do computador no aparelho. Para isso, porém, o ADB precisa de um "registro" do dispositivo, e é nesse ponto em que ocorre o problema no Ubuntu. Para corrigir esse problema, tive que reunir alguns tutoriais e criar o meu próprio procedimento, que apresento em seguida. Esse procedimento funcionou para conectar meu Motorola Defy a meu computador com o Ubuntu 10.10. Não há garantias de que irá funcionar em quaisquer outras configurações. Também não me responsabilizo por quaisquer problemas ocorridos na execução dos passos citados.

Primeiro, sugiro conectar o dispositivo em uma porta USB que esteja conectada diretamente a placa mãe. Evite hubs ou portas dianteiras do gabinete. Em testes com a conexão intermediada por um hub ocorreram diversos problemas.

Ative o modo de desenvolvimento do seu dispositivo em Menu > Settings > Applications > Development > USB Debugging.

Verifique se se o ADB reconheceu a existência de um dispositivo, através da linha de comando abaixo:
./adb device
Seu dispositivo deverá aparecer com uma linha com pontos de interrogação, semelhante as linhas abaixo:
List of devices attached
??????????? no permissions
Isso indica que o ADB localizou um dispositivo, porém não conseguiu identificá-lo. Caso esse seja o seu caso, prossiga. Caso contrário, é necessário procurar outro problema.

Acesse o site de desenvolvimento para a plataforma Android e localize o identificador do fabricante do seu dispositivo. Anote esse código.

Crie um arquivo 51-android.rules no diretório /etc/udev/rules.d
Eu costumo utilizar o gedit para edição de arquivos texto. Nesse caso, a linha de comando ficaria mais ou menos assim:
sudo gedit /etc/udev/rules.d/51-android.rules
Adicione uma linha no arquivo 51-android.rules para cada dispositivo Android conectado, no seguinte format0:
SUBSYSTEM=="usb",SYSFS{idVendor}=="ID",MODE="0666",OWNER="USUARIO"
Nessa linha, substitua ID pelo id do fabricante obtido anteriormente. O trecho USUARIO deve ser substituído pelo nome do usuário que irá executar o ADB. Caso necessário, mais de uma linha pode ser adicionada para cada dispositivo, com usuários diferentes.

Altere as permissões do arquivo criado, com a seguinte linha de comando:
sudo chmod a+r /etc/udev/rules.d/51-android.rule
Atualize as regras de controle de dispositivos com a seguinte linha de comando:
sudo udevadm control --reload-rules
Por fim, reinicie o serviço do ADB com as seguintes linhas de comando:
./adb kill-server
./adb start-server
Esses passos funcionaram perfeitamente para mim. Além disso, não tive problema algum de conexão do Defy no meu computador com Ubuntu. E você, teve problemas? Conectou outros dispositivos? Conhece métodos mais simples?

Alguns sites que me ajudaram:

Nenhum comentário:

Postar um comentário