ios (Reprodução)
Da Redação
Publicado em 9 de junho de 2015 às 10h11.
O fato de que a Apple não vai deixar nenhum aparelho que rodava iOS 8 para trás com a nova versão de seu sistema operacional mobile surpreendeu todo mundo que acompanha a empresa. Mas em retrospecto isso parece ser uma consequência natural do principal objetivo do iOS 9: encaixar as mudanças do iOS 8 em um pacote mais eficiente.
O iOS 8 introduziu muitas mudanças por baixo do pano "flat design" do iOS 7, mas essa mudança considerável na infraestrutura do sistema também causou uma série de problemas. Além de instável, o OTA do sistema precisava de 4,6 GB de espaço livre, uma exigência absurda para quem tinha aparelhos com 8 ou mesmo 16 GB de memória.
O iOS 9, por sua vez, procura manter os recursos novos do iOS 8 (a API gráfica Metal, por exemplo) sem o peso do mesmo. A Apple já anunciou que o OTA do novo sistema só exigirá 1,3 GB de espaço livre. Esse fato por si só não é tão extraordinário - o Android já teve OTAs menores, por exemplo. Mas a Apple não parou por aí.
Olhando as notas da nova versão do Xcode (este link exige uma conta de desenvolvedor), percebemos que a Apple também está adotando uma estratégia de economia de dados em aplicativos chamada "App Thinning". Ela tem três abordagens: "bitcode", "slicing" e "on demand resources".
O "bitcode" consiste em um novo método para desenvolvedores mandarem seus aplicativos para a App Store. Em vez de enviar binários pré-compilados, o desenvolvedor manda uma representação intermediária que é compilada especificamente para o aparelho do usuário que baixar o app mais tarde. Basicamente, isso quer dizer que a App Store reconhece se seu iPhone usa um processador de 32 ou de 64 bits e entrega a versão mais adequada do app. Antes dessa mudança, apps universais continuam código para as duas versões de processador, o que aumenta o espaço ocupado na memória.
Nesse mesmo sentido, o "app slicing" elimina a nessecidade de incluir recursos visuais para os vários tipos de aparelhos que rodam iOS. Por exemplo, um game universal atual não contém apenas o código para versões de 32 e 64 bits. Ele também contém código para utilizar a API Metal e texturas em resolução adequada para as várias versões de iPhone e iPad. Com o app slicing, a app store identifica o aparelho do usuário e entrega apenas o que for preciso para rodar o programa no aparelho específico do usuário. Quem tem um iPhone 6, por exemplo, não precisará mais baixar imagens que só servem para o iPhone 6 Plus.
Crucialmente, a Apple implementou esse sistema de uma forma que não exige muito trabalho para adaptar cada app. Basta que os desenvolvedores coloquem os recursos pertinentes em um Asset Catalogue e incluam tags para especificar qual recurso serve para cada aparelho.
Por fim, o "on demand resources" é um pouco mais sofisticado. Ele permite que um desenvolvedor especifique um tipo de recurso para ser baixado pelo aparelho do usuário apenas no momento em que ele for necessário. Por exemplo, digamos que um jogo tem uma história que se divide em dois caminhos diferentes. O game só precisa exibir os mapas de um desses caminhos de cada vez, então o desenvolvedor pode determinar que os outros mapas não sejam baixados até o momento em que o jogador decidir explorá-los. Tudo seria feito por download assíncrono, então o jogador nem perceberia o que está acontecendo.
Mas vale notar que o on demand resources também introduz alguns problemas: o que acontece quando o aparelho não tiver acesso à internet, por exemplo? Se o usuário utilizar um plano de internet com limite de dados, isso também pode ser inconveniente.
De qualquer maneira, a possibilidade de separar o código e os recursos visuais pode tornar os apps universais muito mais econômicos em termos de espaço. Quem tem um iPhone com pouca memória interna certamente vai se beneficiar com a atualização para o iOS 9.