Segundo estudo realizado pela TestBird, uma startup focada na análise e desempenho de jogos móveis, o Android Lollipop causa 60% mais falhas e problemas de compatibilidade se comparado a versão anterior, o KitKat. Um dos problemas é o novo ambiente de tempo de execução (Runtime), o ART, mas esgana-se quem pensa que essas falhas ocorrem apenas em jogos antigos. O problema afeta também games novos!
– Lollipop vs Dalvik
Na atualização para o Android Lollipop, a Google moveu o seu sistema mobile completamente para um novo ambiente de tempo de execução, o ART. Desde o Android Froyo 2.2, todas as versões do sistema rodavam sobre o Runtime Dalvik. Mas com o ART, a Google conseguiu uma performance e velocidade na execução de apps muito maior no Android 5.0, além de uma melhor performance da bateria.
Segundo a teoria, o Android Lollipop deveria exigir menos recursos, mas na realidade, não é isso que está acontecendo, quando o tema em questão são games. Muitos jogos estão enfrentando problemas de performance.
– Papo Tech
Um adento para quem está boiando. A mudança de Dalvik para ART, significa uma mudança em como os apps e jogos são compilados e interpretados pelo sistema. Anteriormente, com Dalvik, o Android usava o compilador Just in Time (JIT ou “na hora certa”).
No Runtime Dalvik, o código de um app é compilado para ser interpretado por ele, mas também facilmente convertido para outras “máquinas virtuais”. Apenas ao ser executado, é que um app e jogo é transformado em “linguagem de máquina” pelo JIT Compiler. Quem manja de emuladores sabe como o JIT deixa as coisas mais rápidas. Mas ele não está lá apenas para isso, ele é responsável também por manter as coisas “compatíveis”.
Para evitar essas “recompilações” constantes, ou seja, toda vez que um app é aberto, a Google introduziu, ainda em testes no KitKat, o Android Runtime (ART). Ele estava disponível para desenvolvedores fazerem testes, mas podia ser acessado facilmente pelas configurações do sistema.
O ART possui um compilador diferente, o ahead-to-time (afrente do tempo). Nesse Runtime, a compilação final acontece já na instalação do aplicativo ou game. Para manter a compatibilidade (em teoria), o ART usa o mesmo código de bits do Dalvik.
Há uma infinidade de melhorias que o ART trouxe como melhor performance, menos MBs para download, e etc. Mas não vamos nos ater a essas melhorias, até por que, o tema aqui é o que está causando problemas ao games.
– O que não te contaram!
Como você pode perceber, a compilação final no ART acontece apenas uma vez e é justamente aí onde o Dalvik se sobressaia ao Lollipop, em termos de compatibilidade. Com o Dalvik e JIT Compiler, o Android precisava de mais memória, isso é fato, mas o sistema dizia ao JIT a quantidade disponível para um game naquele momento. Assim, o jogo rodava e tinha sua performance calibrada pelo JIT.
No ART isso não acontece, ou melhor, acontece apenas quando o jogo é instalado. Por conta disso, é comum alguns, ou vários jogos apresentarem “travadinhas” ou fechamentos (Force Close), pois seus códigos estavam implementados de forma a esperar a calibração do JIT.
Em termos de performance, o ART é muito mais rápido que o Dalvik e quem atualiza o seu sistema para o Lollipop percebe isso ao utilizar apps mais simples. Entretanto, em jogos a coisa fica diferente e a compatibilidade ideal só é alcançada apenas em dispositivos com 2GB de RAM ou mais.
– Erros entre o Android Lollipop e o Play Games Services
Desde a implementação do Android Lollipop, pela Google, em 2014, muitos desenvolvedores vêm enfrentando problemas com seus games que utilizam serviços do Google Services, como Google Play Games e outros.
No fórum de uma das principais engines para dispositivos móveis, a Unity, vários desenvolvedores reclamam de erros que acontecem apenas quando o jogo é baixado pela Google Play.
O que acontece? Eles fazem vários testes internos onde não há problemas. Testam o game em vários dispositivos, com um APK interno. Mas quando o jogo é enviado para a loja de aplicativos do Google, e o Google Play Games Services é implementado, ele começa a apresentar vários problemas de compatibilidade.
– Problema afeta também games novos
Como você viu acima, não se trata apenas de jogos antigos. Lançamentos recentes como FIFA 16, Dead Effect 2 e Fallout Shelter, para não citar muitos outros, enfrentaram vários problemas de compatibilidade no Android Lollipop.
A Google simplesmente dá as ferramentas para os desenvolvedores trabalharem e produzirem seus conteúdos. Mas em sua guerra contra Apple e Microsoft, por performance e bateria, parece que os desenvolvedores de jogos mobile ficaram com um pepino nas mãos.
A solução virá apenas com o tempo. Conforme os desenvolvedores forem se acostumando com o novo ambiente de execução e suas peculiaridades. Para quem gosta de jogos, o ideal é manter o dispositivo no KitKat, algo que parece impossível, pois muitos celulares e tablets já são vendidos com o Android Lollipop.