domingo, 24 de maio de 2009

Programando para Android sem Eclipse

Eu nunca consegui me acostumar a nenhuma IDE de programação, cheguei a usar Emacs, Anjuta, Eclipse e nem lembro mais quais outras: eu sempre ficava perdido com a quantidade grande de opções e me frustrava. Meu jeito de programar sempre segue o estilo mais clássico, uso um editor de texto bem simples e um terminal para compilar, debugar e executar o programa.

Esse foi um dos motivos que acabou me afastando por um tempo de começar a programar para Android, sempre que eu pegava um tutorial ele começava explicando como como instalar o Eclipse, depois o plugin e outras coisas mais chatas. Mas tomei vergonha na cara e resolvi descobrir como fazer para não precisar de nenhuma IDE, e até que é mais simples do que eu imaginava.

Claro, programadores mais experientes podem ganhar muita produtividade usando IDEs como o Eclipse, porém, para iniciantes e estudantes, os métodos clássicos de programação fazem com que se tenha um maior contato com a estrutura do projeto e consequentemente melhor compreensão dos vários fatores relacionados ao desenvolvimento.

Vou dar dicas de como proceder num sistema Debian, mas que quase com certeza deve funcionar também no Ubuntu. E claro que qualquer pessoa com o mínimo de força de vontade vai conseguir adaptar esse tutorial a outra distribuição ou outro sistema operacional. Estou levando em consideração que o leitor tem alguma familiaridade com o sistema operacional GNU/Linux, que sabe se virar usando linha de comando e que também tem alguma noção de programação.


Instalação

Primeiro vamos instalar as dependências, que são os pacotes do Java 6 SDK e o Ant, que é uma ferramenta de construção parecida com o make. Como root, execute o seguinte comando para instalar os pacotes:

aptitude install openjdk-6-jdk ant

Então precisamos pegar o Android SDK e em seguida configurar o ambiente de trabalho. Como gosto de manter meu sistema limpo, eu vou instalar o SDK no meu $HOME. Como usuário comum, vá ao diretório onde foi feito o download do SDK e o descompacte. Então, na linha de comando, siga os seguintes passos:

mkdir ~/bin
mv android-sdk-linux_x86-1.5_r1 ~/bin
ln -sf ~/bin/android-sdk-linux_x86-1.5_r1~/bin/android

Agora precisamos definir algumas variáveis de ambiente para que alguns programas estejam no path e que esses programas saibam qual versão ou implementação do Java deve ser usada. Edite o ~/.bashrc adicionando as seguintes linhas no final do arquivo:

## configuração do PATH ##
export PATH="$HOME/bin:$HOME/bin/android/tools:$PATH"

## configuração do PATH ##
export JAVA_HOME="/usr/lib/jvm/java-6-openjdk/jre/"
export PLUGIN_HOME="$JAVA_HOME/plugin"

Agora basta recarregar as configurações do bash. Você pode simplesmente abrir outra instância do bash, por exemplo, abrindo outra janela do seu terminal gráfico preferido, mas se você estiver com alguma janela aberta, basta executar o seguinte comando:

source ~/.bashrc

Neste momento o Android deve estar funcionando perfeitamente e a maneira mais fácil de começar a testar é executando o emulador. Mas antes de rodar o emulador, precisamos criar um Android Virtual Device (AVD). Basta executar o comando a seguir:

android create avd \
--name \
--target
O android vai perguntar se você quer criar uma versão customizada do hardware. Responda que não.

O target, ou melhor, o alvo define qual versão do Android e qual especificação de hardware será usada pelo emulador quando você carregar esse AVD. Para ver a lista de alvos possíveis execute o seguinte comando:

android list target

Para carregar o emulador, basta executar o comando:

emulator -avd


Criando um projeto

Para criar um novo projeto é necessário usar o comando android, cujos parâmetros de linha de comando são:

Parâmetros para a ação "criar projeto"

Parâmetro curto
Parâmetro longo
Descrição
-k
--package
Esse é o nome de pacote do seu programa. Ele deve ser escolhido para ser único, e deve seguir as especificações de nome de pacote da linguagem Java
-n
--name
Nome do projeto. É esse o nome que os usuários do seu programa verão.
-a
--activity
Nome da classe Activity do seu projeto. Essa é a classe que vai interagir com o usuário.
-t
--target
Esse parâmetro define qual será o "alvo de construção" do seu projeto. Esse alvo é qual versão do Android e qual especificação de hardware será usada pelo seu projeto. Digite android list target na linha de comando para ver a lista de alvos possíveis
-p
--path
Caminho para o diretório onde ficará seu novo projeto


Aqui está um exemplo de criação de projeto:

android create project \
--package com.exemplo.jahnke.helloworld \
--name HelloWorld \
--activity HelloWorld \
--target 1 \
--path ~/projetos/android/helloworld


Programando

Agora vamos implementar o Hello World no Android. A partir de agora vou supor que você está no diretírio especificado no path do comando anterior.

Use seu editor de texto preferido para abrir o arquivo src/com/exemplo/jahnke/helloworld/HelloWorld.java e o modifique para que ele fique assim:

package com.exemplo.jahnke.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorld extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

TextView text_view = new TextView(this);
text_view.setText("Olá mundo!");

setContentView(text_view);
}
}


Compilando e instalando

O Ant é usado para compilar e instalar os aplicativos e seu uso é bem simples. Para compilar e instalar o aplicativo que acabamos de criar, basta executar os comandos:

ant debug
ant install
Se você modificar o aplicativo e quiser reinstalar, também é super simples, basta executar:

ant debug
ant reinstall
Agora o programa já deve estar acessível pelo emulador.

Espero que você tenha gostado do meu texto, e se você gostou do exemplo e estiver empolgado para continuar aprendendo a desenvolver para Android, o próximo passo é ler sobre os fundamentos dos aplicativos do Android. Caso tenha alguma crítica, sinta-se livre para participar nos comentários.

7 comentários:

  1. Muito bom, parabéns.

    Odeio IDEs também, pode facilitar pra uns, mas pra mim só dificulta.

    Gosto mesmo é do vim.

    abraços.

    ResponderExcluir
  2. Muito boa essa dica!!! agora sim, pretendo entrar nessa plataforma!

    Abraço e Parabens!
    Franci

    ResponderExcluir
  3. Rapaz falando sério, já ouviu falar do Maven?

    Pelo que me lembre o Maven cuida muito destes processos de gerencia, compilação, teste e execução. Neste caso nem precisa de IDE para fazer qualquer coisa, eu entendo que é bom trabalhar direto nos sources, mas fazer isso tudo sem um controle mais centralizado, acaba sendo trabalhoso demais e consome muito tempo (sim já fui um programador a moda antiga, usei muito isso para aprender na época), mas usando Maven você tem uma flexibilidade maior, já que não se preocupa com a gerecia do projeto e ainda permite que outros desenvolvedores possam continuar o mesmo projeto em qualquer lugar em IDEs ou não.

    ResponderExcluir
  4. carai vei, vc me ajudou pacas com esse artigo, chapô mesmo!
    valeus!
    tenho uma duvida, eu tbn sempre tive um peh atraiz com essas drogas de IDE mas sempre tem de ter algo para poder digitar os fontes, dai eu uso o geany, tem como eu compilar com o "ant debug", "ant install" usando o Geany?
    agradece

    ResponderExcluir
  5. Olá, sou deficiente visual, e este artigo me deu uma luz para programar, já que a ide não é nada acesivel. Porém, como ainda sou estudante, será que teria como realizar isso na plataforma windows, peço isso pois ainda não tenho familiaridade com linux. Grata!

    ResponderExcluir
    Respostas
    1. Olá, Camila,

      Infelizmente eu não programo para Android há muito tempo e não estou mais familiarizado com essa plataforma. Eu fiz uma pesquisa na documentação do Android e lá diz que o método que eu descrevi aqui está ultrapassado. Eles indicam que seja usada a ferramenta chamada "Android Studio", mas eu não sei se ela possui recursos de acessibilidade. Sei que ela possui ferramentas de linha de comando disponíveis, mas não sei o quão longe você consegue ir apenas com elas.

      Espero que você encontre boas ferramentas de programação que atenda suas necessidades.

      Desculpe-me por não poder te ajudar mais.

      Boa sorte em sua busca.

      Excluir
  6. fiz aqui pelo s.o windows e deu tudo certo, obrigado pelo post, muito bom mesmo.

    ResponderExcluir