Se alguma coisa puder dar errado, dará! Então, para solucionar possíveis problemas, temos esse "Kit de sobrevivência", com algumas dicas para os problemas mais comuns com a plataforma PhoneGap / Cordova.
Kit
de primeiros socorros da plataforma Android
Cleuton
Sampaio
A comunicação do Android SDK com o dispositivo Android
(ou o emulador), é complexa e depende de vários componentes para
poder funcionar corretamente.
Muita coisa pode acontecer, e vou tentar mostrar a vocês
como se safar de alguns desses “sufocos”.
Android SDK Manager
O programa Android SDK Manager gerencia as plataformas e ferramentas Android instaladas em seu perfil de conta, na sua estação de trabalho.A instalação das plataformas e ferramentas do Android SDK é feita por PERFIL! Então, casa usuário que se loga na estação de trabalho, deve realizar o procedimento de instalação.
Procure colocar no $PATH (ou %PATH%) a localização das pastas: <android-sdk>/sdk/tools (ou <android-sdk>/tools, para linux) e <android-sdk>/sdk/platform-tools (ou <android-sdk/platform-tools, para linux)!
Para executar o Android SDK Manager, você tem duas opções: via Eclipse (“window”) ou chamando diretamente:
- Windows: Duplo-clique no arquivo “SDK Manager.exe”, na
pasta raiz do Android SDK;
- Mac/Linux: Abra um terminal, navegue para a pasta “tools/”,
dentro da pasta do Android SDK, e execute: “./android sdk”;
O que deve estar instalado?
- Android SDK Tools;
- Android SDK Platform-tools;
- Pelo menos uma Plataforma Android:
- SDK Platform;
- ARM EABI System image ou Intel System Image (ou ambas);
- Google APIs ou Google System image (se você quiser usar Internet no Emulador);
- Só para Windows: Google USB Driver, dentro de “Extras”, no final de tudo.
AVD Manager
Para emular aplicações Android, você vai necessitar
de pelo menos uma instância do Emulador Android. Você pode criá-lo
pelo AVD (Android Virtual Device) Manager, dentro do Android SDK
Manager. Basta usar o menu “tools / Manage AVDs”.
Crie uma instância selecionando “create”, e inicie
selecionando “start”.
Emulator
Você pode subir uma instância do Emulador Android usando o programa “emulator” (dentro de “tools”, na pasta do Android SDK).Lançar o emulador através da linha de comando, nos permite controlar melhor suas opções, e pode ser a única maneira, caso você venha enfrentando problemas para iniciá-lo do Eclipse ou do SDK Manager.
Eis as opções da linha de comando:
emulator -avd <avd_name> [-<option> [<value>]] ... [-<qemu args>]
- “-avd <avd_name>”:
O nome do emulador que você criou;
- Algumas opções
especiais (-<option>):
- “-shell”: Abre o
emulador e cria uma console (shell) com root no mesmo terminal;
- “-scale <fator>”:
Permite escalar a janela do emulador (valor de 0 a 3);
- “-force-32bit”:
Inicia o emulador na versão de 32 bits.
- “-shell”: Abre o
emulador e cria uma console (shell) com root no mesmo terminal;
Se você estiver rodando o Android SDK em um sistema operacional de 32 Bits, provavelmente receberá essa mensagem. Isso quer dizer que o emulador roda melhor em ambiente de 64 Bits. Você pode forçar o emulador a rodar em 32 Bits usando a opção “-force-32bit” ao iniciar o emulador com o programa “emulator”.
No linux, outra opção é criar a variável de ambiente: “ANDROID_EMULATOR_FORCE_32BIT=true”, dentro de /etc/profile e /etc/bash.bashrc. Se não tiver senha de root (sudo), então pode usar: gedit .profile.
export ANDROID_EMULATOR_FORCE_32BIT=true
Ao usar o emulador, existem atalhos de teclado para as principais funções de um dispositivo Android. Você pode verificar clicando AQUI.
Android Debug Bridge - ADB
O ADB é a ferramenta que permite nos comunicarmos com qualquer dispositivo Android conectado, seja ele um dispositivo real ou um emulador. Ele tem os seguintes componentes:- Cliente:
Pode ser executado no seu PC e serve para enviar comandos ao ADB;
- Servidor:
Executa como um “daemon” (um processo em background) no seu PC,
e gerencia a comunicação entre o Cliente e o ADB rodando em um
dispositivo Android (ou emulador);
- Servidor
no Dispositivo: Um “daemon” que é executado em background no
dispositivo Android conectado ou no emulador;
Controlando o Servidor em seu PC
Quando iniciamos um Cliente ADB em nosso PC, ele verifica se existe um processo de Servidor ADB sendo executado. Se não existir, ele vai iniciar o Servidor ADB em nosso PC.Quando ativamos um emulador Android ou abrimos um projeto Android no Eclipse com o plugin ADT, um Cliente ADB é executado e inicia o Servidor ADB automaticamente.
Ao iniciar, o Servidor ADB usa a porta TCP 5037 para aguardar conexões de Clientes.
O Cliente ADB pode ser encontrado dentro da pasta: <sdk>/platform-tools/.
Podemos controlar o servidor ADB com o Cliente ADB:
- “adb
start-server”: Inicia uma instância do Servidor ADB em nosso PC,
caso não esteja rodando;
- “adb
kill-server”: Termina a instância do Servidor ADB em nosso PC;
Verificando os dispositivos Android
Podemos verificar quais dispositivos Android estão conectados com o comando: “adb devices”. Por exemplo, vamos supor que eu tenha um emulador rodando e um dispositivo Android conectado via USB, logo, o comando “adb devices” deve mostrar algo assim:
$ adb
devices
List
of devices attached
4df7d35c1d47cf67
device
emulator-5554
device
Eu tenho um dispositivo Android, cujo “id” é: 4df7d35c1d47cf67, e um emulador, rodando na porta 5554 (cada instância de emulador usa uma porta diferente, começando de 5554).
Problemas:
1) Tenho um emulador rodando, mas ele não aparece no Eclipse e nem no ADB Devices!O problema aqui pode ser com o Servidor ADB. Neste caso, abra um Terminal, pare e reinicie o Servidor ADB. Isso resolve em 90% dos casos:
- adb
kill-server
- adb
start-server
2) Tenho um dispositivo rodando, mas não aparece no Eclipse e nem no ADB Devices!
Você já conseguiu ligar seu dispositivo no seu PC? Então, tente parar e reiniciar o Servidor ADB.
Se não funcionou, pode ser um problema de Driver USB. No caso de Máquinas Windows, é recomendável que você instale o “Google USB Driver”, no SDK Manager, pois ele funciona com quase todos os dispositivos Android.
Se o seu dispositivo for Samsung, então é necessário instalar o KIES (http://www.samsung.com/br/support/usefulsoftware/KIES/), que já tem o driver USB para o seu dispositivo Android.
Agora, se você está rodando no Ubuntu...
- Verifique
se você tem o pacote mtpfs instalado, caso contrário, instale-o:
“sudo apt-get install mtpfs”;
- Se
não funcionou, você pode tentar atualizar o pacote:
- sudo
add-apt-repository ppa:langdalepl/gvfs-mtp
- sudo
apt-get update
- sudo
add-apt-repository ppa:langdalepl/gvfs-mtp
3) Tenho um dispositivo rodando, mas ele aparece como “unauthorized”!
Em certos casos, você poderá ter essa resposta do “adb devices”:
List
of devices attached
4df7d35c1d47cf67
unauthorized
emulator-5554
offline
Isso significa que o dispositivo não está permitindo a depuração USB, necessária para executar programas do Eclipse nele. Neste caso, tente:
- No dispositivo, abra o
menu “configurações” e procure “Desenvolvedor”. Marque a
opção “Depuração de USB”, e dê permissão (devem abrir duas
janelas perguntando isso);
- Se a opção já estava
marcada, tente desmarcá-la e marcá-la novamente;
- Pare e inicie o Servidor
ADB.
Se nada disso funcionar, tente usar o protocolo MTP: Media Transfer Protocol em seu tablet / smartphone:
Para isto, é necessário que o seu PC esteja configurado para trabalhar com dispositivos MTP. No caso do Ubuntu, é necessário que o pacote “mtpfs” esteja instalado.
Eclipse
No eclipse, alguns problemas podem acontecer:1) Abri a workspace e travou tudo... Fica em “Android content loader”, com 0%...
É normal... Abra a sua pasta home, procure a pasta oculta “.android” e:
- Delete a subpasta “cache”;
- Delete o arquivo “ddms.cfg”;
2) Importei o projeto Android e ele não executa no Emulador. Dá “ClassNotFoundException”...
O Cordova (e o PhoneGap) geram dois projetos sempre: xxxx e xxxx-CordovaLib. O segundo é um “Library Project”, e não deve ser colocado no “Build Path”, dentro do Eclipse, como “project”. Se você fizer isso, vai ocasionar esse erro.
Se você acabou de criar os projetos com o Cordova e o PhoneGap, então deve fazer o seguinte:
- File / Import / Android / Existing Android Code...
- Selecione a pasta “android”, que fica dentro de
“platforms”;
- Certifique-se que os dois projetos estejam marcados (XXXX e
XXXX-CordovaLib);
- Importe os dois;
- Se der erro no projeto principal, geralmente, basta dar um
“Project / Clean”. Se não resolver, então selecione o projeto
principal, e, com o botão direito, abra “properties”. Selecione
“android” e verifique se o projeto secundário (CordovaLib) está
marcado. Se estiver, remova e adicione novamente. Então, feche
tudo, e faça outro “Project / Clean”.
Nota: Se você exportou o projeto a partir do Eclipse (File / Export / General / Archive file), então não deve importar como “Existing Android Code...”, faça como “File / Import / General / Existing projects into workspace”.
Nenhum comentário:
Postar um comentário