Desenvolver aplicativos para Android requer uma certa dose de loucura

Off topic: Antes de mais nada, gostaria de me desculpar pela falta de atualização do blog no último mês. Este foi o segundo mês com menos posts de toda a história do blog (O primeiro foi o fatídico mês de janeiro de 2010 quando o NokiaBR foi fechado e tive que me organizar para continuar blogando). Andamos todos bastante ocupados com nossos trabalhos que não conseguimos escrever o quanto gostaríamos. Também acho que o Mobile Analyst anda comendo tanto ovo cozido na Cinelândia que se esqueceu de nós…

Mas vamos ao que interessa. Android. Plataforma aberta. Milhares de opções de aparelhos. Isso é bom para o usuário (tenho minhas dúvidas). Mas será que é bom para o desenvolvedor?

Venho desenvolvendo há alguns anos aplicativos para iOS e, no ano passado aqui na empresa começamos a portar alguns dos nossos aplicativos e jogos para Android. Para nossa surpresa, desenvolver um aplicativo no Android que funcione em todos os aparelhos requer muita paciência porque várias coisas que funcionam para uma versão do sistema não funcionam em outras versões. Às vezes, coisas que funcionam no 2.3 não existem no 2.2 e coisas do 2.3 não funcionam da mesma maneira no 3.0, e assim por diante. É preciso testar o programa no máximo de aparelhos que você consiga, o que é inviável.

Para completar a guerra, existe um número absurdo de tipos de tela (dimensões x densidade de pixels x orientação). Telas quadradas, telas verticais, telas horizontais, resolução baixa, resolução média, resolução alta, resolução extra alta, cada uma dessas com suas peculiaridades.

A cereja desse bolo é a chamada “customização” dos fabricantes e operadoras, que pode deixar a guerra ainda mais complicada para o desenvolvedor.

Os defensores do Android dizem que essa fragmentação é uma qualidade e não um problema. Garanto que quem diz isso nunca desenvolveu nada para Android ou nunca teve que responder a um cliente que vem reclamar que o seu aplicativo não roda no aparelho dele que tem tela hexagonal e nem no do amigo dele que tem tela elíptica em landscape. 🙂

Outro dia li num post do TechCrunch que um desenvolvedor chamado Animoca, chega a testar os seus aplicativos em 400 aparelhos diferentes (parte deles na foto abaixo).

E outro, esse eu li no Ars Technica, que diz já ter identificado 4.000, QUATRO MIL, modelos de aparelhos diferentes rodando um aplicativo dele (gráfico abaixo). Outra curiosidade que esse desenvolvedor revelou, é que nesses 4.000 modelos de aparelhos, ele descobriu quase 600 fabricantes diferentes! 599 para ser mais preciso.

Com os nossos aplicativos acontece exatamente a mesma coisa. Temos o exemplo do jogo “Manobrista Maluco“, que é sucesso no iOS e também no Android, que tem mais de 850.000 downloads no iOS e pouco mais 145.000 downloads no Android (a versão Android tem quase dois anos a menos).

O gráfico de aparelhos que usam esse jogo é o seguinte:

Como podemos reparar, somente 46% dos downloads estão concentrados em 9 aparelhos. Os outros 54% estão distribuídos em aparelhos que individualmente participam com menos de 2,6% do total. Se quiséssemos atender à maioria dos usuários, teríamos que testá-lo em centenas de aparelhos diferentes.

Hoje recebemos da Amazon um e-mail informando que o Manobrista Maluco não foi aceito para ser publicado na loja de aplicativos do Kindle Fire. Segundo eles, o jogo não se adapta às dimensões de tela do Kindle Fire. Teremos que adaptar o jogo para o Kindle se quisermos publicá-lo na loja da Amazon.

Cada vez mais vemos aparelhos com Android sendo vendidos nas mais variadas versões do sistema e com as mais diversas disposições de tela. Outro dia alguém me mandou uma foto de um flagra de uma loja de celulares vendendo aparelhos com Android com a versão 1.6 ainda! Isso sem falar dos Xing-Lings dos camelódromos que de MP10 viraram num passe de mágica aparelhos com Android.

Enfim, gostaria de saber se outros desenvolvedores de aplicativos para Android compartilham dessa opinião e o que eles fazem para contornar esse problema, além de testar os seus programas em N+K aparelhos.

Comments on this entry are closed.

  • Marcelo Barros

    Tudo ia bem com meu programa android até eu levar o cara para um tablet de 184ppi e tela de 8.2″ num android 3.x da vida. Tudo que havia pensado, separando os recursos em 4 tamanhos organizados por ppi, não deu certo. E ele rodava bem no 2.2, 2.3 e 4.0 (de um QVGA como o samsung Y Pro até o galaxy note, ppi bem mais alto). Seria preciso combinar os ppis e os tamanhos de tela, também 4, gerando até 16 combinações, com Possibilidades de layouts específicos para certas telas.

    O SDK suporta tudo isso mas é realmente chato. Pra piorar, tudo ainda depende do que o aparelho reporta para o android. Por exemplo, a tela pode ser P, M, L, XL, mas não é claro na documentação a margem exata deste valores. Eu senti que caí numa região de sombra, onde o reportado não batia com planejado e o programa acabava usando um ppi e tamanho de tela inadequados. Com isso, uma fonte “android large” ficava muito fora do que eu previa, por exemplo. E as versões erradas dos ícones eram carregadas.

    É possível colocar restrições no manifesto, para impedir combinações não testadas ainda de tela e ppi, mas reduz seu publico. Também exigir um modo de tela, como landscape. No emulador, gerar varias telas, com aspectos diferentes e ajustar para um tamanho real, dado o seu monitor. Ou então ler as dimensões na partida do programa e se auto ajustar. Usar medidas relativas como o dip, etc. Tudo ajuda, mas continua dando trabalho.

    Enfim, é bem mais fácil fazer um programa pra meia dúzia de aparelhos.

  • Edw

    Qual a sua opinião sobre o futuro dos app para windows phone? Existirão muitos? Acabarão?

  • Edw, com o Windows Phone 8 acho que a briga vai esquentar. Acabar acho que não vai mesmo.

    Só é pena não ter upgrade do WP7.5 para o 8. É verdade que já não teve upgrade do Windows Mobile 6.5 para o Windows Phone 7, mas como estou com um Lumia novinho, assim como muita gente, achei um desperdício isso. 🙂