Como programar para iPhone, iPad e Android de barbada!

Todo mundo sabe que aplicações mobile estão bombando. Em outro post citei tudo o que era necessário saber para programar para o Windows Phone 7, certo? Desta vez, mato 3 coelhos com uma cajadada só, ensinando como programar para iPhone, iPad e Android. Enquanto que no post sobre WP7 eu não coloquei código, neste ensinarei a fazer nem que seja o Hello World tradicional. A motivação toda para este post foi uma matéria na Info do mês passado onde apareceu um case de um garoto prodígio de 14 anos que desenvolveu um game para iPhone que já teve mais de 6 milhões de downloads, o que fez com que ele tivesse de abrir uma empresa para dar conta do recado.

É, a vida é dura.

Lua

Lua

Primeiro de tudo, esqueça Java. As promessas de portabilidade entre dispositivos mobile se perde em meio a problemas de desempenho e às próprias restrições da Apple. Ok, você tranquilamente pode usar o Java para rodar apps no Android, mas se quiser algo mais eclético terá de usar Lua. Para quem não sabe, Lua é uma linguagem de script criada na PUC do Rio de Janeiro. Isso mesmo, ela é brazuka e segundo o ranking da Tiobe, é a linguagem que mais cresce no mercado, principalmente com a ascensão dos portáteis como os tablets e smartphones. Enquanto que o tradicional Apple-C, digo Objective-C, é extremamente ruim para programar e o Java muito pesado, temos no Lua o meio-termo ideal, uma linguagem de script poderosa com sintaxe semelhante à Javascript. No fundo tudo é C, mas de uma forma muito mais simples de trabalhar, independente de SO (isso mesmo, roda em janelas, pinguins e maçãs).

Acesse agora mesmo o site Lua.org, baixe o SDK para seu sistema favorito e comece hoje mesmo a programar a melhor linguagem de script para criar games para iCoisas e Android. Junto no SDK vem um editor de código chamado Scite. Ele é bem bonzinho, embora faça uma falta danada ter um Visual Studio pra isso, hehehehe.

Corona

Corona SDK

Sabe o piá de 14 anos que citei que fez o game milionário?

Pois é, o jogo é o BubbleBreaker e ele utilizou um tal de Corona SDK para desenvolver o game em apenas um mês. Sendo que antes disso ele nem sabia programar!

O Corona SDK é um kit de desenvolvimento para plataformas mobile, essencialmente iOS e Android. Ele promete coisas como interoperabilidade (code once, run everywhere…onde foi que eu já ouvi isso?), produtividade e outros jabás que os SDKs nos vendem. Testei o dito-cujo e pude notar que ele possui uma documentação muito boa, com descrição de tudo o que é possível fazer na API, incluindo coisas específicas para iPhone ou Android, por exemplo, dependendo do hardware é claro. Ele inclui também um emulador que no Windows emula somente Android (incluindo Nexus One, Milestone e Galaxy) e no Mac emula iOS (incluindo iPhone e iPad), ou seja, você desenvolve a aplicação usando Lua e com alguma sorte, roda em qualquer iCoisa e Android sem muitas adaptações.

Pois é, esse Corona SDK é do caramba e totalmente free. Isso mesmo, ele é gratuito para fins não comerciais. Para quem não sabe, a única forma de colocar uma app pra rodar dentro do teu iCoisa é pelas famosas lojinhas virtuais que existem, como Google Play ou App Store. Caso queira comercializar seu app (porque ninguém é de ferro) você deve pagar taxas específicas de acordo com a(s) plataforma(s) da sua aplicação. O Corona é tão bacana que no site deles tem várias aplicações de exemplo para baixar, incluindo alguns jogos. Você consegue olhar os fontes, realizar alterações e criar suas próprias versões!

Vá no site do fabricante, a Corona Labs e baixe o SDK, só usando para acreditar. Lembre-se: o piá tem apenas 14 anos.

Hello World

Então você baixou o Lua e o Corona SDK e não sabe por onde começar. Na verdade existem vários tutoriais e a própria documentação do Corona SDK abrange os primeiros passos, porém é tudo em inglês. Então, eis que o desocupado aqui fez alguns tutoriais e resolveu escrever o seu em inglês. Nada rebuscado, apenas um Hello World meio estiloso para mostrar algumas coisas.

Criar um projeto em Lua é simples: basta criar uma pasta com o nome do projeto. Dentro desta pasta, estarão todos os arquivos do projeto, incluindo imagens, sons, etc. Mas o mais importante deles é o arquivo main.lua (crie com o bloco de notas e renomeie para .lua ou então crie pelo Scite). Este arquivo é interpretado pelo Corona SDK para rodar sua aplicação e é nele onde ficam seus scripts. Neste primeiro momento, apenas copie e cole o trecho de código abaixo e abra o Corona Simulator (ele é instalado junto do Corona SDK). Vá em File -> Open e escolha o main.lua que acabou de criar (jogue uma imagem com o nome de teste.jpg na pasta do projeto).

Você irá ver a imagem teste.jpg no fundo da aplicação e os dizeres Hello World meio deitados e esticados verticalmente. O código está bem comentado, então não há muito o que dizer a respeito. A primeira linha carrega a imagem no plano de fundo, considerando que você possui uma imagem com o nome de teste.jpg. A função newText do objeto display recebe alguns parâmetros como o texto a ser exibido, a distância em pixels em relação ao topo, a distância em relação à margem esquerda, a fonte que será utilizada no texto e por último o tamanho da fonte. A instrução abaixo, setTextColor, faz exatamente o que você imagina: troca a cor do objeto myText usando o padrão RGB (Red Green Blue) onde 255-0-0 representa o vermelho puro. Os dois últimos comandos são alterações na aparência do texto, como uma multiplicação na altura (yScale) e uma rotação em graus (rotation). E isto é tudo!

Conclusões

Espero que tenha sido de alguma utilidade. Embora o exemplo seja simplório, já dá pra ter uma idéia de onde iniciar seus estudos. Na verdade o maior trunfo deste post é dar um norte ao pessoal que quer entrar no mercado de mobile apps e não sabe como. Então ficam aí as dicas: Lua e Corona SDK. Uma hora dessas se eu criar um game bacana eu volto aqui a fazer um jabá. E nunca esqueça: o piá tem apenas 14 anos.

Quer ler mais tutoriais de Corona SDK? Dê uma olhada nesta categoria!

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

Livro Corona SDK
Livro Corona SDK

Curso de Extensão em ASP.NET na TecnoDohms

Encerrou neste sábado na TecnoDohms (Faculdade de Tecnologia Pastor Dohms) a primeira edição do Curso de Extensão em ASP.NET ministrado por mim, em uma parceria entre a referida instituição e a RedeHost. Esse projeto, que já conta com mais de 15 instituições de ensino técnico e superior na região metropolitana de Porto Alegre, visa fomentar o estudo das tecnologias ASP.NET e SQL Server entre os alunos, com grandes chances dos melhores alunos serem contratados pela RedeHost como Aprendizes de Desenvolvimento. Desta vez não tirei fotos (falha minha) mas não deixou de ser mais uma experiência super bacana.

A Parceria

Nossa parceria foi firmada no início do ano, com o prof. Arno Oelrich, responsável pelas Relações Empresariais da instituição, que viu potencial na parceria e abriu as portas da instituição para que déssemos nossa tradicional palestra de Lavagem Cerebral da RedeHost. O auditório estava lotado no dia e embora não tenhamos obtido tantas inscrições para o treinamento quanto eu gostaria, foi uma das melhores palestras que já fiz, tendo o local ajudado muito. Quem dera todas as instituições tivessem um auditório tão bom para este tipo de evento, com um projetor tão bom e uma acústica excelente. Acabei chegando atrasado à palestra (triste, mas verdade) devido a um congestionamento na hora do rush da Cristóvão Colombo, mas os aplausos no final da “performance” me mostraram que valeu a pena. Em pouco tempo depois tivemos a também tradicional prova de lógica, o que diminuiu um pouco os alunos que entraram no curso em 11 alunos.

Novo brinquedo da RedeHost

O Curso

Durante 6 encontros, nos sábados de abril e maio, os alunos viram um pouco de ASP.NET, C#, SQL Server e Engenharia de Software, em um curso com conteúdo tão exaustivo que somente 5 alunos restaram no final do curso. Um parabéns a todos que aguentaram meus inúmeros trabalhos, cobranças, conteúdo em cima de conteúdo, etc. Destes alunos, provavelmente alguns serão contratados (colocarei um update no post quando isso acontecer) e os demais serão aproveitados pelo restante do mercado de trabalho. Foi uma experiência bem gratificante, principalmente por conhecer um pouco da instituição, seu modus-operandi (a idéia dos alunos utilizarem notebooks da escola ao invés de PCs em laboratórios específicos é muito genial), sua estrutura etc. Fiquei impressionado. O curso superior deles é outro ponto interessante, pois ele é um Tecnólogo de Desenvolvimento para Internet, o que é uma tendência mundial.

E Então?

Fico no aguardo dos trâmites de seleção da RedeHost para que sejam escolhidos os novos integrantes da nossa equipe. O pessoal do Pastor Dohms estarão competindo com alguns alunos do curso técnico Dom Feliciano, que encerra o curso de extensão na semana que vem (este eu já tirei fotos). Nesta mesma semana participei de 11 palestras na escola Alcides Maya, no centro da capital, para turmas dos cursos Técnico em Informática, Técnico em Gestão e Especialização em Web, o que deve ter totalizado mais de 200 cérebros lavados, hehehehehe (inclusive de duas pessoas da concorrência, hehehehe).

Só para ilustrar, fiz upload da imagem do novo brinquedo da RedeHost. Se você pensa em fazer seleção conosco (independente de setor) ou se já está em processo de seleção (como os alunos do Pastor Dohms), tenha esta imagem como inspiração, hehehehe.

Solução: The given key was not present in the dictionary.!

Fazia tempo que não postava aqui nada relacionado à código, mas isto merece um post. Havia algumas semanas que fiz uma limpeza em meu computador. Andava instalando tudo quanto é besteira e tive inclusive de fazer alguns testes de conexão ASP.NET com MySQL, ocasião na qual tive de instalar o conector do MySQL. Bom, durante a “limpeza” acabei removendo o conector do MySQL, mas ficou para trás uma conexão com o dito-cujo no Server Explorer do meu Visual Studio 2010, que desde então, parou de permitir a manipulação das conexões. Ficava lá apenas a conexão com o finado MySQL que nem existia mais em minha máquina, disparando a mensagem “Unable to add connection. The given key was not present in the dictionary.”. Tentei várias e várias soluções, achando que o problema era com o SP1 que tinha instalado a pouco no meu VS, mas tudo em vão. Estava quase decidido a reinstalar o VS, senão meu Windows inteiro (vida de programador sem VS não é vida…) quando resolvi dar uma buscada mais a fundo no Google e encontrei a solução…

Solução

Bom, o problema todo mundo entendeu: eu tinha um conector do MySQL instalado, criei uma conexão, removi o conector e depois disso nunca mais consegui manipular o Server Explorer novamente que ficava me xingando. Existam basicamente três soluções, dependendo de quão radical você é ou se tem alguma conexão importante salva no Server Explorer.

A primeira solução, é reinstalar o conector que você usava antigamente e reiniciar o Visual Studio. Neste caso, eu teria de baixar o conector .NET do MySQL no site oficial deles e instalar na minha máquina, para só depois remover a conexão com MySQL do Server Explorer e depois excluir o conector.

A segunda opção, é ir em “C:\Users\[usuario]\AppData\Roaming\Microsoft\Visual Studio\10.0\ServerExplorer\”, obviamente trocando o nome de usuário pelo seu usuário (note que provavelmente se você excluisse seu usuário e criasse-o novamente, iria funcionar pois as configurações do Server Explorer são por usuário). Nesta pasta, entram as duas soluções restantes: se você tem conexões importantes que não podem ser perdidas, abra o arquivo XML “DefaultView.SEView” e remova a entrada com problema (o Visual Studio deve estar fechado). A outra solução, mais radical, é apagar esse arquivo por completo e já era. Basta reiniciar o Visual Studio e estará tudo em perfeita ordem.

Obviamente eu não achei esse diretório sozinho, tendo encontrado a solução completa no blog Flatlander.