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.

terça-feira, 12 de maio de 2009

Não jogue seu PS2 pela janela??

Tô muito puto da vida, eu estava muito feliz com a quantidade de jogos que serão lançados para Playstation 2. Eu fiquei pensando "pô, se Black ficou lindão assim, então os novos jogos devem ter uma qualidade parecida", mas eu estava enganado!

Tive duas desilusões, primeiro vi o lançamento Star Wars: The Force Unleashed, vi que uma das plataformas do jogo era o PS2 e resolvi testar o jogo. Achei meio sem graça, meio travado. Os gráficos até que eram legais, mas eu sentia que faltava alguma coisa. Acabei concluindo que a falta de um processador potente impedia uma simulação física mais detalhada e isso tirava um pouco da graça do jogo. Nunca mais peguei o DVD para jogar.

Agora algo parecido aconteceu novamente, peguei o DVD do X-Men Origins: Wolverine para Playstation 2. Porra, ao invés de trabalharem o jogo direito para ter um visual pelo menos parecido com God of War II, tenho a impressão de que pegaram a engine do jogo e desabilitaram todos os efeitos gráficos legais, tiraram todas as texturas bonitas e todo o polimento. Os personagens do jogo são tão quadrados que os gráficos lembram os jogos de PSX, além disso, a jogabilidade é travada pra caramba. Desconfio que o mesmo aconteça para a versão PSP e, talvez, para Wii.

Além disso, um amigo que tem um Xbox 360 me confirmou que o começo do jogo é super empolgante e bem mais divertido que o filme mas que pelo fato do jogo ter tido a obrigação de ser lançado perto da data de lançamento do filme, ele ficou com bugs e defeitos feios nos gráficos, que ficam mais evidentes no final do jogo.

quarta-feira, 6 de maio de 2009

Black

Black é um jogo de tiro em primeira pessoa desenvolvido pela Criteriom Games, a mesma empresa que desenvolveu a fantástica série de jogos Burnout.

O jogo tem um estilo muito próximo dos filmes de ação de Hollywood, com direito a armamento pesado, muitas explosões e inimigos morrendo cinematograficamente. Por exemplo, se você jogar uma bomba ou atirar um míssil em uma pequena sala com janelas, a parte de dentro da sala será completamente destruída e os ocupantes serão lançados pela janela de uma maneira espetacular!

Para completar a dinâmica hollywoodiana, o ambiente é extremamente destrutível, e depois do combate a devastação é evidente. Carros acabados, colunas caídas, marcas de explosão e muito mais. Uma grande injeção de adrenalina, certamente.

Além do estilo cinematográfico, o jogo tem gráficos incríveis, comparáveis aos gráficos de jogos de Xbox 360 e PS3 e a trilha sonora é bem empolgante. Ter um bom home theater certamente vai incrementar muito a diversão.

Infelizmente existem uns problemas: o jogo é bem curto, são apenas 7 missões que podem ser terminadas em 1 ou 2 horas, o jeito é colocar no hard logo no início para tentar aproveitar o jogo por um tempo maior. Além disso, a IA do jogo não é das melhores, mais um motivo para iniciar o jogo em um modo mais difícil.

Sendo um jogo voltado à ação e à adrenalina, não dá para esperar uma história muito profunda. Eu mesmo ignorei completamente a história quando joguei. Até fiquei meio cansado de assistir os vídeos, que infelizmente não podem ser pulados, antes do começo de cada fase.

Apesar dos defeitos citados, acho que vale a pena conferir o jogo, pois a adrenalina realmente compensa, os gráficos são excelentes e a dificuldade pode render uma ou duas tardes de muita diversão.