Tutorial app Android com Firebase – Analytics e Crashes

Recentemente iniciei uma série de artigos sobre a plataforma Firebase para Android e hoje trago mais um, desta vez falando sobre a API de Analytics e de Crash Reporting deles.

Para quem não está acostumado com o termo, analytics é basicamente o registro e análise de dados dos seus usuários durante o uso de seu software. Ter uma boa ferramenta de analytics é essencial para entender o seu público e conseguir engajá-lo cada vez mais. Um público engajado tende a realizar comportamentos que você deseja como adquirir seus produtos, fazer upgrades ou até mesmo recomendar seu software/app para amigos.

Já Crash Reporting é o ato de registrar todos os ‘crashes’ do seu app nos dispositivos dos usuários, para entender o que está acontecendo e poder tomar providências para corrigir estas falhas. Sabe quando dá aquela mensagem de “O app parou!”? Pois é, o Crash Reporting te ajuda a descobrir que está acontecendo isso com seus usuários e dá muitas pistas da causa desses crashes.

Pré-requisitos

Este tutorial exige que você tenha um projeto Android criado e funcionando no Android Studio. Minha sugestão é que você realize o primeiro artigo da série, onde criei um app que tem apenas uma tela de login e permite o cadastro de usuários para posterior autenticação. Ele não faz nada demais ainda, mas já nos permitirá analisar o comportamento dos usuários que, por enquanto, sou apenas eu. 😀

Outro ponto importante de ler o artigo introdutório desta série é entender o que é a plataforma Firebase, como criar uma conta gratuita e como funciona o modus operandi dela.

Embora alguns possam acreditar que colocar coleta de dados nesta fase do desenvolvimento é inútil, eu discordo. Quanto antes você começar a coletar dados dos seus usuários melhor, e colocando nessa etapa do desenvolvimento você evita se esquecer, já cria o hábito de coletar dados e terá um histórico completo assim que tiver tempo para analisar o resultado do seu trabalho duro.

Vamos ver:

  1. Firebase Analytics
  2. Capturando eventos
  3. Analisando os dados
  4. Firebase Crash Reporting

#1 – Firebase Analytics

Existem diversas plataformas para coleta e análise de dados analíticos, como o Mixpanel, que eu já usei e excelente, mas hoje usaremos o Google Firebase. É importante que você já tenha uma conta criada no Firebase Console e um projeto ativo, que no meu caso é o ForcaVendas.

Firebase Console
Firebase Console

Agora abra o seu projeto de app no Android Studio e no meu Tools > Firebase, você abrirá o Firebase Assistant, com todas as opções de APIs que ele possui.

Selecione a opção Analytics e você deverá ver a tela abaixo:

Firebase Analytics
Firebase Analytics

No meu caso o passo 1 está marcado como “Connected” pois eu já me conectei na minha conta do Firebase no primeiro artigos desta série. Caso o seu tenha um botão para conectar no lugar, você terá de fazer todo um passo-a-passo que é bem simples, porém necessário.

Como eu já possuo uma conta no Firebase, vou partir para o passo 2, clicando no botão “Add Analytics to your app”, que abrirá um popup pedindo para aceitar algumas dependências novas no projeto. Tudo muito rápido e simples.

Uma vez com as dependências instaladas, é muito simples sair usando a ferramenta de Analytics no Firebase para capturar eventos dos usuários no seu app, que é o que faremos agora!

#2 – Capturando eventos

Você pode capturar todo tipo de ação do usuário no seu app para entender o comportamento dele. Muitas vezes é função do desenvolvedor apenas coletar os dados e cabe a um profissional de marketing digital, de UX, ou ambos, analisá-los, para propor mudanças no app visando melhorar a experiência do usuário como um todo. Geralmente são usadas ferramentas de marketing chamadas “funis de conversão”, que servem para analisar o fluxo de ações que os usuários realizam até comprarem seu produto ou executarem uma ação que você deseja muito.

Como nosso app até o momento possui poucas funcionalidades, podemos pensar em um funil de conversão bem simples: de todos os usuários que entram no app, quantos decidem se cadastrar e quantos de fato conseguem se cadastrar? Aqui considerarei usuários anônimos como o topo do meu funil (a boca, maior parte), usuários que clicam no botão Registrar como meio do meu funil (anônimos com intenção de cadastro) e novos cadastros realizados como a base do meu funil (a menor parte).

O objetivo do funil é medir as conversões, sendo usuários anônimos que viram novos cadastros a definição de ‘conversão’ neste caso. Sendo assim, precisamos coletar dados de 3 momentos distintos.

Primeiro, para permitir que o Firebase Analytics passe a funcionar no seu app, vamos começar adicionando a seguinte variável no topo da Activity que vamos coletar dados, neste caso a LoginActivity:

Depois, no evento onCreate desta mesma Activity, vamos inicializar o nosso objeto mFirebaseAnalytics:

As visualizações e transições de tela são automaticamente rastreadas pelo Firebase Analytics, então não há nada que precisamos fazer em relação ao screenview da tela de login por usuários anônimos.

No entanto, precisamos saber quando houve o clique no botão “Registrar”. Para capturar este clique, vamos na LoginActivity, bem no trecho de código que efetua o onClick, para adicionar o código de rastreamento:

O objeto Bundle permite que a gente adicione propriedades a este ‘evento’, mas aqui decidi por apenas registrar o evento em si como o nome ‘RegistrarClick’. Essa linha de código é interessante de ser colocada em todos os botões que você julga importantes no seu app, para entender se os usuários estão utilizando-os. Quando você detecta que botões importantes (como o botão de fazer Upgrade) não estão sendo utilizados, é hora de repensar o local onde estão, a cor e forma que possuem ou o texto contido neles. Somente com dados analíticos e vários testes é que é possível tirar essas conclusões.

Mas depois do usuário clicar no botão de Registrar eu quero coletar o evento se de fato ele conseguiu realizar o cadastro. Isso porque podem haver erros no cadastro como campos faltantes ou senha muito fraca que impedem o visitante anônimo de converter em usuário identificado. Para mapear este segundo evento,  basta modificarmos o método attemptLoginOrRegister da LoginActivity, mais especificamente o ‘if(isNewUser)’:

Com isso, temos todos os dados que precisamos para entender se os usuários anônimos, após manifestarem seu interesse em se cadastrar, estão conseguindo de fato. Note que armazenei dois eventos diferentes aqui: o de sucesso no registro (salvando o email do usuário que recém se cadastrou) e outro de falha, armazenando o email e senha, para entendermos porque o Firebase não permitiu esse cadastro.

Por que ele rejeitaria um cadastro? Existem diversas políticas e validações envolvidas que o Google Firebase pode fazer em cima de suas tentativas de cadastro como força de senha, formato de email, etc.

Agora teste o seu app e brinque um pouco com ele para gerar um pouco de dados para uma análise posterior.

#3 – Analisando os dados

Agora que temos eventos registrados e dados coletados, vá até o Firebase Console, acesse seu projeto e depois selecione a opção Analytics no menu lateral esquerdo. É importante ressaltar que os dados não são exibidos real-time aqui e é possível que demore a serem exibidos, até 1 dia, então não se preocupe.

Analytics Dashboard
Analytics Dashboard

Uma vez que os dados já estejam disponíveis para visualização, você pode criar filtros, acompanhar conversões, analisar cohorts, tempo de visita em cada tela, além de muitos dados demográficos, tais como:

  • porcentagem de usuários por versões do Android;
  • porcentagem de usuários por aparelho;
  • sexo dos usuários;
  • localização geográfica dos usuários;
  • idade;
  • categorias de interesse;

E isso só citando as informações que aparecem no dashboard, existe muito mais coisas interessantes para se explorar nesse ferramenta de analytics. Quem já conhece o Google Analytics, que é a ferramenta mais usada na web para acompanhar os dados analíticos de websites e sistemas web vai se sentir em casa aqui.

#4 – Firebase Crash Reporting

Além dos eventos que queremos coletar para entender o comportamento dos nossos usuários, é importantíssimo saber quando o app pára de funcionar no dispositivos deles, visando entender as limitações que podem estar prejudicando a experiência, as falhas que você pode ter deixado para trás sem querer ou até mesmo como está a qualidade geral do seu app.

Para ativar o Crash Reporting do Firebase é muito simples. No Android Studio, vá no menu Tools > Firebase e o Firebase Assistant se abrirá. Escolha a opção Crash Reporting.

Firebase Crash Reporting
Firebase Crash Reporting

Minha conta do Firebase já está conectada e, à essa “altura do campeonato”, você já deve saber como criar a sua caso ainda não tenha feito. Clique no botão “Add Crash Reporting to your app” e aceite a instalação das dependências necessárias.

O recurso de Crash Reporting funciona automaticamente para exceções não tratadas e você pode manualmente registrar exceções tratadas, se assim desejar, para entender o comportamento do usuário ou as exceções mais disparadas, para tomar medidas quanto a isso.

Enviar exceções manualmente para o Crash Report é simples como a linha abaixo demonstra, onde ex é o objeto de exceção capturado:

Para poder ver um crash facilmente no Firebase Console, experimente rodar o seu app e antes de realizar um login ou cadastro, desligue sua Internet para que não seja possível se comunicar com a nuvem do Google Firebase, certamente seu app vai quebrar e um crash será registrado no Firebase Console, não instantaneamente, mas em breve.

Crash
Crash

Caso esteja tendo problemas para rastrear seus crashes em produção, é sugerido dar uma lida nesta página aqui.

O Google está migrando sua ferramenta de análise de crashespara o Crashlytics, uma plataforma focada nesse tipo de serviço, então no futuro talvez seja mais interessante para você deixar de usar os relatórios de crashes do Firebase e passar a usar esta outra ferramenta.

Espero que tenha gostado do artigo, e  até a próxima!

* OBS: curtiu o post? Então dá uma olhada no meu livro de Android clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!

Criando apps para empresas com Android

Tutorial app Android com Firebase – Autenticação

Lembro quando comecei a trabalhar com a plataforma Android em 2012 e me deparei com todo tipo de desafio inédito para mim, sendo o principal deles a necessidade de ficar construindo todo o tipo de APIs usando tecnologias web para serem consumidas pelo seu app. Preciso acessar o banco de dados remoto? Cria API. Precisa de autenticação? Cria API. Precisa de algum processamento mais pesado? Cria API.

Tem algum tempo que isso mudou. Com a aquisição da startup Firebase, o Google disponibilizou uma plataforma de backend-as-a-service pronta para uso em todo tipo de aplicação. E a ideia deste tutorial completo dividido em etapas, é criarmos um app Android que use as APIs fornecidas pelo Firebase para lhe ajudar a entender todo o poder desta plataforma.

Começaremos com a autenticação, mas passaremos por cada uma das grandes frentes do Firebase. Para o artigo de hoje veremos:

  1. Introdução ao Firebase
  2. Firebase Authentication
  3. Forçar a autenticação
  4. Permitir o registro
  5. Realizando o Login
  6. Realizando o Logout

Em outros artigos devo cobrir as demais APIs do Firebase como Database, Storage, Analytics, Crash, Messaging e Ads.

Atenção: se você nunca programou para Android antes, sugiro fazer primeiro este tutorial aqui e/ou ler meu livro de Android.

Vamos lá!

#1 – Introdução ao Firebase

Basicamente o Google Firebase é uma plataforma de Backend-as-a-Service, fornecendo um set de recursos prontos para usar em APIs e SDKs que permitem ao desenvolver Android se focar na construção do seu app, sem se preocupar com desenvolvimento de backend, banco de dados, etc. Com um modelo de negócio escalável, permite que você comece seu app sem pagar nada e depois ir pagando conforme a sua base de usuários cresce.

Pré-requisitos

Para poder usar em apps Android é necessário que o dispositivo possua a versão 4.0 ou superior, e o Google Play Services 11.0.4 ou superior. Também é necessário que você tenha instalado na sua máquina o Google Play Services do Repositório do Google, disponível no SDK Manager do Android Studio. E sim, é necessário usar o Android Studio versão 1.5 ou superior.

Existem duas formas de adicionar Firebase ao seu projeto Android no Android Studio. Uma é inserindo as dependências manualmente no arquivo build.gradle. A outra, mais moderna e disponível no Android Studio a partir da versão 2.2, é usando o Firebase Assistant, que é a que usarei neste tutorial.

Criando o projeto

Nós vamos criar um app de força de vendas. Trabalhei com isto em 2007, no meu primeiro emprego oficialmente como programador (antes disso trabalhava com suporte, mas também programava). Basicamente imagine que representantes de vendas que trabalham na rua possam abandonar suas agendas físicas e usar esse app para registrar as vendas realizadas, os pedidos solicitados e que possam tirar relatórios simples de pedidos, vendas e dívidas. Nesse momento de desemprego no país em que muita gente está trabalhando por conta principalmente como representantes autônomos (Hinode, Mary Kay, Jequiti, etc), um app desses pode ajudar muita gente.

Crie no Android Studio um projeto chamado ForcaVendas, com SDK mínimo Android 4.0.3 (API 15) e uma Basic Activity por padrão (MainActivity). A partir de agora criaremos todo o app de força de vendas usando cada um dos recursos fornecidos na plataforma Firebase.

Atenção!

Uma última dica, antes de partir pro código: se for usar o emulador nativo do Android para os testes, certifique-se de criar seu AVD usando uma imagem que possua a Play Store instalada (a imagem abaixo mostra o ícone da Play Store em algumas imagens), para que o Google Play Services possa ser atualizado facilmente (uma das exigências do Firebase é ter a última versão do Google Play Services instalado).

Imagens com Play Store
Imagens com Play Store

#2 – Firebase Authentication

Nosso app exigirá autenticação do vendedor. Isso porque como nossos dados serão armazenados na nuvem do Google, temos que saber quem está autenticando no app para carregar os dados das vendas e prospecções deste usuário específico.

Adicione uma nova Activity do tipo Login Activity no seu projeto, como abaixo:

Login Activity
Login Activity

Depois disso, vá no menu Tools > Firebase e o Firebase Assistant se abrirá, com diversas opções. Vamos começar usando os recursos de autenticação do Firebase clicando na opção Authentication > Email and password authentication.

Firebase Authentication
Firebase Authentication

O Firebase Assistant abrirá um passo-a-passo para configurar o uso desse recurso no seu projeto. O primeiro passo é conectar seu app ao Firebase, o que você faz clicando no botão “Connect to Firebase”.

Passo 1: Connect ro Firebase
Passo 1: Connect ro Firebase

Ao clicar no botão, você será levado ao site do Google Accounts para fornecer permissões ao Firebase na sua conta do Google. Se tudo aconteceu corretamente, você deve ver a tela de sucesso informando que você já pode voltar ao Android Studio.

Firebase conectado
Firebase conectado

Quando voltar ao Android Studio, você terá de configurar um novo Firebase Project, que basicamente é o seu projeto de backend. Use o mesmo nome do seu projeto (ForcaVendas) e selecione a região Brazil, clicando no botão “Connect to Firebase” para continuar, como abaixo.

Configuração do Firebase
Configuração do Firebase

Nesse momento o Android Studio baixará algumas dependências necessárias e adicionará as configurações das mesmas no seu build.gradle, tudo isso sem que você tenha de saber muitos detalhes do processo. Quando esse processo automático terminar, o Firebase Assistant deve exibir que o Firebase está conectado e você deve passar para o passo 2, “Add Firebase Authentication to your app”.

Add Firebase Authentication to your app
Add Firebase Authentication to your app

Ao clicar no botão o Android Studio lhe apresentará algumas modificações que serão feitas automaticamente para você confirmar. Confirme e aguarde que as alterações se completem para ver que o passo 2 informará que as dependências foram instaladas corretamente.

Dependências corretamente instaladas
Dependências corretamente instaladas

Note que há uma descrição adicional logo abaixo do passo 2, que informa que você deve habilitar no Firebase Console o Sign-In Method que será utilizado no seu app.

Sendo assim, acesse o Firebase Console, que é o software web usado para gerenciar seus projetos Firebase. No nosso caso, basta clicar no projeto ForcaVendas, como na imagem abaixo:

Firebase Console
Firebase Console

No meu lateral, selecione a opção Authentication e depois clique no botão “Configurar Método de Login”.

Método de Login
Método de Login

Escolha a opção Email & Senha e clique em ativar, salvando logo em seguida. Existem diversas outras opções, como usar Facebook Auth ou Google Auth, por exemplo. Aqui usaremos o bom e velho “email e senha”.

A partir do passo 3, o processo é manual, pois o Firebase Assistant apenas ensina como utilizar o recurso de autenticação no seu app, então vamos programar!

#3 – Forçar a autenticação

Quando nosso app foi criado, definimos que a MainActivity seria a activity inicial, lembra?

Pois é, mas caso o usuário não esteja autenticado em nosso app ele não deve ver a MainActivity primeiro, mas sim a LoginActivity. Então, vamos começar a programar nossa autenticação verificando na MainActivity se o usuário está logado. Se ele não estiver, vamos redirecioná-lo para a LoginActivity.

Para começar, na sua MainActivity.java coloque a seguinte variável a nível de classe (imports serão necessários, use o recurso ALT+ENTER do Android Studio para auto completar as dependências):

E agora dentro do seu onCreate da MainActivity, coloque o seguinte código que verifica se há um usuário logado no app e, caso contrário, redireciona o fluxo para a LoginActivity:

Neste código nós carregamos a instância atual da autenticação do Firebase (FirebaseAuth) e com ela, tentamos carregar o usuário atualmente autenticado. Se ele estiver null, é porque ninguém está autenticado neste app neste dispositivo.

Com isso, você vai notar que ao mandar rodar o app, mesmo a MainActivity sendo a principal, você deverá ver primeiro a LoginActivity, pois não está autenticado. Na verdade nem mesmo você possui um usuário, o que faremos no passo seguinte.

Tela de Login
Tela de Login

#4 – Permitir o registro

A própria LoginActivity já considera a possibilidade do auto-registro por parte do usuário que ainda não está cadastrado no app. Dependendo das suas necessidades de segurança (e de cadastro), você pode querer fazer algo diferente do que vou fazer aqui, mas a ideia é basicamente o que vou mostrar.

Quando criamos uma Activity com o padrão LoginActivity, o Android Studio não cria apenas o layout XML de uma tela de login, mas toda uma lógica básica de autenticação na LoginActivity.java, que inclui validação de campos, autenticação via coleção in-memory e algumas coisas mais. Vamos modificar algumas coisas presentes neste exemplo para que fique mais funcional.

Primeiro, abra o activity_login.xml na pasta res/layout para mudarmos o texto do botão de Sign In, sua cor de fundo e para adicionarmos um segundo botão para Sign Up (registro ou cadastro), ficando da seguinte forma:

Vamos começar nossa programação declarando a variável abaixo a nível de classe na LoginActivity.java:

Para aproveitar o código já existente, vamos modificar o método attemptLogin para que ele sirva para signin ou signup, de acordo com um parâmetro passado à ele.

Note que apenas alterei a assinatura do método e criei um if que verifica se é um novo usuário ou não, que está tentando se autenticar/registrar. Se for um novo cadastro (o usuário clicou no botão Registrar), nos comunicamos com o FirebaseAuth para criar um usuário com email e senha informados (createUserWithEmailAndPassword). Quando essa criação terminar (o que depende de Internet sempre pode demorar um pouco), escondemos o loader e exibimos uma mensagem de texto ao usuário informando que agora ele pode se autenticar com o usuário e senha criados.

Com essas mudanças no método, incluindo sua assinatura, vamos mudar no onCreate da LoginActivity as chamadas ao antigo attemptLogin e também vamos adicionar o listener de onClick ao botão de signup:

Note que aproveitei para instanciar a variável mAuth com a instância atual de autenticação do Firebase. Note também que nenhum dos dois botões de fato faz alguma coisa, mas sim que delega ao attemptLoginOrRegister que tem o ‘if’ que expliquei anteriormente.

Agora mande rodar sua aplicação, preencha os dois campos e clique no segundo botão, o de registrar.

Nova tela de login
Nova tela de login

Você deve ver o loader aparecer por alguns segundos e sumir, voltando à tela de login com uma mensagem de texto (Toast) dizendo que você já pode se autenticar. Não vai funcionar o login, porque não programamos ele ainda (oque vamos fazer no próximo passo), mas antes de falar disso, vamos ver como sabemos os usuários da nossa aplicação.

Volte ao Firebase Console, na aba Authentication você deve ver os usuários já cadastrados e inclusive poderá realizar cadastro manual se quiser.

Usuários registrados
Usuários registrados

Uma dica legal é enviar por email ao usuário um email de boas vindas, falando das features do seu app e informando a senha que ele escolheu. Você pode aprender como enviar emails em Android neste tutorial aqui.

#5 – Realizando o login

Agora vamos programar o login!

Para fazer isso, basta modificarmos o ‘if’ que deixamos pronto no método attemptLoginOrRegister anteriormente.

Note que a alteração foi somente no ‘else’, onde uso o método assíncrono signInWithEmailAndPassword que vai no servidor do Firebase, verifica a autenticidade das informações fornecidas e retorna um usuário, se existir, que tenha aquele email e senha. Neste caso, enviamos o usuário para a MainActivity, caso contrário, exibimos uma mensagem de erro pra ele.

Rode novamente seu projeto e, se tudo deu certo, você deve conseguir se autenticar com um usuário criado no Firebase Console ou mesmo no próprio app, usando o botão Registrar.

#6 – Realizando o Logout

Para terminar este primeiro artigo sobre Firebase e para concluir todo o processo de autenticação, devemos permitir que o usuário consiga ‘sair do app’, pois do jeito que está hoje, você se autentica uma vez e ele fica sempre logado. Para isso, vamos usar o menu superior direito da tela MainActivity, onde hoje há apenas um menu falso de Settings.

Vamos começar trocando o texto de Settings para Sair. Vá na pasta res/menue altere o arquivo menu_main.xml para ter um id e texto mais condizente com um menu Sair:

E agora, na MainActivity.java, procure pelo método onOptionsItemSelected, que faz o tratamento de itens selecionados de menu, alterando-o para que caso o item de Sair seja selecionado, vamos pedir ao Firebase que faça o signout e depois redirecionamos o usuário de volta à tela de Login:

Teste agora: se autentique usando um usuário já existente e depois selecione a opção Sair no menu superior direito do app para ser direcionado de volta à tela de Login.

Com isso finalizamos o primeiro de uma série de artigos sobre a plataforma Firebase que devem aparecer aqui no blog. Espero que tenham gostado!

Quer ler o próximo? Clica neste link!

* OBS: curtiu o post? Então dá uma olhada no meu livro de Android clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!

Criando apps para empresas com Android

Como programar para Android no NetBeans

sdk-netbeans

Atualizado em 30/08/2017!

Tem muita, mas muita gente mesmo, que não gosta do Android Studio.

Não me entenda mal, a ferramenta não é ruim, só é pesada demais para a maioria dos computadores comuns entre os desenvolvedores de software (aqui tem algumas dicas de performance se quiser). Geralmente quem não reclama (tanto) de performance são os felizes usuários de discos SSD, uma vez que o I/O de disco é o principal gargalo dessa IDE.

Como professor de desenvolvimento de apps, muitos alunos me perguntam se não existem alternativas. É claro que existem! Eu comecei desenvolvendo apps Android no Eclipse, uma popular e leve IDE que super recomendo…para quem está familiarizado com ela, pois é meio chatinha de configurar. Outra IDE igualmente popular e com maior aceitação entre o público iniciante é o NetBeans, que ensinarei neste post como configurar para desenvolvimento de aplicativos mobile para a plataforma Android.

Depois de ler, caso queira se aprofundar mais, dê uma olhada no livro de Android que escrevi! Mas se o seu problema é com o Java em si, esse livro resolve!

Ingredientes

Para o tutorial de hoje vamos precisar:

  • conexão com a Internet;
  • muito espaço em disco livre;
  • IDE NetBeans 8.1 completa (tem de ser a 8.1);
  • plugin para programar Android no NetBeans;
  • Android Tools (linha de comando, standalone);

Internet e espaço em disco são essenciais aqui, baixaremos e instalaremos diversas coisas neste tutorial, então certifique-se de ter alguns GB sobrando no HD e uma conexão banda-larga antes de prosseguirmos. Ah, e tempo disponível também, não é algo muito rápido de fazer…

Eu possuo a versão completa do NetBeans 8.2 na minha máquina, embora seja bem provável que não seja necessária essa versão. Na dúvida, recomendo baixar a versão completa no site do fabricante. Um leitor mencionou ter tido problemas com a versão 8.2 e que com a 8.1 funcionou pra ele (inclusive tem essa resposta no StackOverflow), então fique atento a isso.

O plugin eu vou fornecer a URL para ser adicionado ao gerenciador de plugins do NetBeans logo adiante, então não se preocupe.

O Android SDK Tools via linha de comando deve ser baixado do site oficial do Android (procure no final da página, depois dos links do Android Studio). Atenção: mesmo que você já possua o Android Studio instalado na sua máquina, não se recomenda o uso do mesmo repositório de SDKs, então não seja preguiçoso e baixe o que estou mandando! 😛

Modo de Preparo

Baixe e instale o NetBeans (277MB) com o link fornecido antes (versão completa), apenas vá avançando até o final!

Baixe e descompacte o Android SDK Tools (entre 82MB até 132MB, dependendo do sistema operacional) com o outro link que forneci, em uma pasta sem acentos e espaços, para evitar problemas futuros. Que tal C:\android?

Atenção: o Google removeu nas versões mais recentes do SDK o executável android.exe que possuía a interface gráfica para obrigar todo mundo a usar o Android Studio. Sendo assim, temos três alternativas para que você consiga usar no Eclipse:

Após conseguir ter acesso a alguma forma de instalar as dependências, certifique-se de instalar ao menos as versões mais recentes do Android SDK Tools, Android SDK Build-Tools e Android SDK Platform-Tools, além de uma versão do Android SDK. Isso vai consumir algumas centenas de MB e potencialmente mais de 1GB, então vá fazer outra coisa da sua vida enquanto tudo é baixado.

Quando tudo terminar, na sua pasta C:\android vão ter duas pastas novas: platforms e platform-tools.

Agora abra o NetBeans e vá na opção Ferramentas > Plugins (Tools > Plugins), acesse a opção Definições (Settings) e mande adicionar uma nova configuração clicando no botão correspondente. Para essa nova definição, adicione o nome Android e no campo URL informe a seguinte:

http://nbandroid.org/release81/updates/updates.xml

Ainda na mesma janela, vá na opção Plugins Disponíveis (Available Plugins) e marque as duas opções de plugins para Android. A primeira fornece suporte à programação Android no NetBeans e a segunda permite que você abra projetos Android criados no Android Studio. Na dúvida, baixe os 2, são apenas 6MB, é rapidinho.

Reinicie o NetBeans quando ele pedir.

Quando ele reiniciar, vá em Ferramentas > Android SDK Manager. Ele vai dizer que você não configurou o SDK Manager ainda e vai solicitar que você configure, lhe dando um atalho para o local de configuração (janela abaixo).

captura-de-tela-2016-12-18-as-15-58-32

Aqui você apenas deve informar o local onde está instalado o seu Android SDK, que instalamos e configuramos no segundo passo deste tutorial, lembra? Coloque o caminho da pasta onde estão as pastas tools, platforms e platform-tools, Aplique e dê um ok.

Agora o seu NetBeans está configurado para programarmos em Android!

Experimentando

Se você for em Ferramentas > Android SDK Manager, você abre o gerenciador do SDK do Android, onde pode baixar novas versões das plataformas, plugins e bibliotecas de desenvolvimento.

Se você for em Ferramentas > AVD Manager, você abre o gerenciador de máquinas virtuais do Android (Android Virtual Devices), onde pode criar e inicializar máquinas virtuais para fazer os seus testes de apps (é o mesmo emulador usado no Android Studio).

Mas agora vem a parte mais legal: se você for em Arquivo > Novo Projeto você verá uma nova categoria de projetos no NetBeans: Android!!!

captura-de-tela-2016-12-18-as-16-42-27

A tela seguinte, de configuração do projeto, muda um pouco, mas não muito…

captura-de-tela-2016-12-18-as-16-43-38

Nela, você é obrigado a informar um Package Name com ao menos duas partes (no exemplo usei o domínio do meu site, mas você pode inventar qualquer coisa) e também é obrigado a selecionar a TargetPlatform, que no meu caso apenas tenho baixado a versão Android 2.3.3 (no Android SDK Manager, lembra?). Note também que o nome da Activity principal foi deixado como MainActivity, que é a sugestão do próprio NetBeans.

Após finalizar, o NetBeans nos mostra o projeto aberto, que cuja árvore de diretórios é a seguinte:

captura-de-tela-2016-12-18-as-16-46-15

Note como ela lembra a árvore de diretórios dos projetos feitos no Android Studio, com a mesma divisão de um pacote para as classes Java e uma pasta de resources para layouts, valores (além das futuras imagens que deverão ser colocadas aí também!).

Mas e aquele erro ali? Se assim como eu você der alguma “ratiada” e deixou de instalar o Build Tools do Android SDK, você vai ter aquele erro ali que se mandarmos compilar, teremos a mensagem abaixo:

“SDK does not have any Build Tools installed.”

Pra solucionar é simples: abra novamente o Android SDK Manager e marque a opção Android SDK Build-Tools (a mais recente já serve). Espere ele baixar tudo e mande compilar no NetBeans que vai estar resolvido.

Agora vamos testar nosso app de Olá Mundo!

Quando você clicar no botão de Run/Executar/Play-verde do NetBeans, ele vai abrir uma máquina virtual android (AVD) para testarmos nosso app nele!

Prós e contras

Óbvio que nem tudo são flores, apesar de podermos programar em uma IDE bem mais rápida que o Android Studio, temos alguns reveses.

O primeiro, é que perdemos o editor visual de layouts do Android Studio, inexistente no NetBeans. Dá pra usar o DroidDraw, ferramenta externa pra isso, mas não é a mesma coisa.

O segundo revés é que perdemos o acesso rápido e prático às ferramentas de desenvolvedor do Android, como o File Explorer, Android Device Monitor, entre outros. Você vai ter de procurá-los na pasta tools e alguns só serão acessíveis via linha de comando.

E aí, o que achou da ideia de programar apps Android no NetBeans ao invés do Android Studio?

* OBS: curtiu o post? Então dá uma olhada no meu livro de Android clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!

Criando apps para empresas com Android