11 junho 2010

A epopéia de um desenvolvedor independente (para celulares)

Tudo começa com uma boa idéia, pelo menos pra quem é o pai da idéia, ai vem o design, rascunha aqui, repensa ali, monta um protótipo, mostra pro amigo, parente, esposa, aí pára tudo... outras prioridades, falta de tempo, de inspiração para terminar, de verba pra cumprir a burocracia, é quem disse que só de boas idéias vive o empreendedor, precisa ter capital inicial!

Ai você pensa: Mas quais burocracias? Então... um desenvolvedor cujo projeto seja web ou desktop não precisa se preocupar muito, gravamos e lemos arquivos à vontade, acessamos a rede, mudamos janelas de lugar, fazer e aparecemos, do jeito que quisermos! Mas quando você parte para desenvolver para celulares, a coisa muda de figura.

Não vou falar hoje de como é o processo para Android ou iPhone, esses dois merecem um post exclusivo para cada um, hoje vou falar de desenvolvimento usando Java ME, qua abrange uma gama maior de aparelhos, fabricantes e modelos (aí que começa os problemas).

Imagine você, qua acabou de instalar um novo aplicativo, todo feliz e contente, um jogo por exemplo. Quem garante que esse joguinho não está lendo os seus contatos e enviando SMS com um spam qualquer? Complicado não? Para isso o Java ME possuí um esquema de segurança, que só permite acesso a determinados recursos do aparelho para aplicativos assinados.
Aí que a brincadeira começa!

Até ai tudo bem, vou fazer o meu próprio certificado em casa! Não pode (hehehe)! O certificado deve ser de uma autoridade certificadora, cujo certificado raiz esteja instalado no celular (ai é cada um por si, cada fabricante faz de um jeito, vou me concentrar no exemplo da Nokia, que é onde estou mais focado).

Então te resta quatro alternativas:

  1. Comprar um certificado próprio;
  2. Utilizar o processo de assinatura de aplicativos para celular da Sun
  3. Não assinar a sua aplicação

Comprar um certificado próprio

Essa pode parecer a saída mais lógica, mas não é a mais barata... para assinar um MIDlet (como é chamado um aplicativo em JavaME) existem dois fornecedores de certificados: A VeriSign e a Thawte. Com preços variando de USD$299 a USD$499 por um certificado Java Code Sign com validade de um ano. É isso mesmo, um ano de validade!

Se você optar por comprar um certificado, se prepare, pois o processo é um pouco burocrático, você precisa enviar uma documentação para provar que você é você, no meu caso precisei até fazer uma carta, levar em cartório para reconhecer firma, e enviar para os EUA, ainda bem que aceitaram via PDF pro email, me poupou algumas semanas...

Muito provavelmente a entidade certificadora vai tentar entrar em contato com você por telefone, junte a isso o meu mau inglês, ligação para celular vinda do exterior, é só chiadeira. Tenho que reconhecer o empenho da empregada da Verisign em tentar falar comigo em português (de portugal), em espanhol (pra mim não alivia nada) e em inglês mesmo (nossa, como americano fala rápido!).

A desvantagem de ter o seu próprio certificado, além do cutos, é que nem todos os aparelhos vêm de fábrica com a última versão dos certificados raizes... aí acontece igual aconteceu comigo, você descobre na hora "H" que o certificado da VeriSign só funciona na série S60 da Nokia, e o da Thawte só funciona na série S40 (isso não cheira a cartel combinado ?)...

Utilizar o processo de assinatura de aplicativos para celular da Sun

Nesse caso você não precisa comprar o seu certificado, você manda o seu MIDlet para a Sun, ela vai encaminhar para uma "test house" que vai fazer uma bateria de testes, avaliar se está tudo Ok, se não forem encontrados problemas a Sun te devolce o MIDlet assinado com o certificado dela, que é aceito em 99,9999% dos aparelhos existente na face da terra.

Parece ser uma coisa legal, pois você não tem o problema de ficar caçando onde o seu certificado comprado funciona, mas ai vem a parte chata: cada vez que você alterar o seu MIDlet você precisa mandar pra Sun tertar novamente e assinar novamente.

Quanto custa? Não dá pra saber a priori, pois depende de quanto tempo vão demorar para testar o seu aplicativo, e o quanto custa testar? Aproximadamente USD$150 a hora! a hora!

Para se inscrever no Java Verified Program, você deve preencher uma ficha, reconhecer firma e enviar por carta para a Sun, é um processo que vai demorar um pouquinho rs

Não assinar a sua aplicação

Por último, mas não menos importante, temos a opção de não assinar a aplicação. E qual o problema disso?

O problema é que sem a assinatura o celular ira reclamar, com uma mensagem do tipo "Esse aplicativo não é assinado e pode danificar o seu aparelo, deseja continuar?" é meio assustador prum usuário comum não?

Além disso, acesso à rede, dados gravados no cartão de memória, etc necessitarão de confirmação do usuário a cada requisição, uma coisa chata pra caramba...


Bom, fico por aqui, mas ainda vou escrever mais sobre como é a publicação em lojas do tipo AndroidMarket e OviStore (Apple AppStore é prum futuro distanta ainda rs).