App Thinning: una buena noticia para los usuarios de dispositivos iOS con 8 y 16GB de almacenamiento interno
iOS 8 no fue muy amistoso con los iPhones y iPads con 8GB y 16GB de almacenamiento interno. Sus actualizaciones aéreas (OTA) requieren varios GB de espacio libre, y al instalarlas reducías la cantidad de espacio libre disponible en el dispositivo.
En realidad el problema comenzó con el iPhone 6 Plus, cuando las aplicaciones empezaron a hacerse tres veces más grandes de lo que ya eran. Pero por suerte iOS 9 solucionará el problema.
Durante la pasada keynote Apple mencionó cómo había reducido la cantidad de espacio requerido por la actualización OTA de iOS 9 desde 4.6GB a 1.3GB. Pero también mencionaron una nueva tecnología llamada "App Thinning" que optimiza el espacio que ocupan las aplicaciones en nuestros dispositivos iOS, al permitir que cada dispositivo descargue sólo lo que necesite.
Hay tres mecanismos diferentes que los desarrolladores pueden utilizar para hacer que las aplicaciones sean más pequeñas.
El primero, es el App Slicing, que es el más significativo. Y significa que el binario que descargas de cada aplicación de iOS contiene un montón de código para un montón de dispositivos diferentes.
Supongamos que descargaste una aplicación universal actualizada, que soporta el iPhone 6 Plus y que se ejecuta en dispositivos de 32 bits y 64 bits. En tal caso, la aplicación que descargas contiene activos para, literalmente, todos los dispositivos iOS soportados, independientemente de si tu dispositivo necesita todo ese código o no.
Es importante tener en cuenta que esto no requiere mucho trabajo adicional de los desarrolladores, ya que todo lo que necesitan hacer es seguir subiendo las versiones completas de sus aplicaciones a la App Store como lo han hecho hasta ahora, y la App Store hará el trabajo de recopilación y entrega de las versiones específicas para cada dispositivo.
La segunda característica es un poco más complicada. Los Recursos Bajo Demanda (ODRs), que son trozos de aplicaciones que sólo se descargan cuando se necesitan y se eliminan de tu dispositivo cuando has terminado de usarlos.
Por ejemplo, en un juego con múltiples niveles, Apple sugiere que tu aplicación realmente sólo necesita tener los datos para el nivel en el que estás en y los niveles siguientes, no necesariamente los niveles que ya hayas superado. En una aplicación con un tutorial, puedes descargar ese tutorial la primera vez que lo utilices, y se eliminará de tu dispositivo cuando quede claro que no vas a necesitar el tutorial de nuevo. Otro ejemplo, puede ser una aplicación con compras in-app, y este método sólo descargará los activo cuando hayas realizado la compra, en lugar de descargar todo al dispositivo y mantenerlo bloqueado.
La pieza final del rompecabezas es algo que Apple llama "Bitcode" o "código binario". Cuando los desarrolladores suban sus aplicaciones a la App Store, ya no estarán presentando los binarios pre-compilados, sino una "representación intermedia" de esas aplicaciones que se compilan en función de la demanda del dispositivo que está descargándola. Esto habilita algunas de las funcionalidades de App Slicing, específicamente la que determina si tu dispositivo se descarga un binario de 32 bits o 64 bits.
El uso de Bitcodes está activado por defecto, pero su uso aún sigue siendo opcional para las aplicaciones de iOS. Mientras que es obligatorio para las aplicaciones nativas del Apple Watch.
Es bueno ver que Apple está pensando en los usuarios de dispositivos iOS con menos capacidad de almacenamiento, es decir, dispositivos con 8GB y 16GB, pues al ritmo al que íbamos, bastaba con descargar dos o tres juegos para tener un iPhone 16GB lleno. Con este tipo de medidas, los usuarios podrán aprovechar mejor la memoria interna de sus dispositivos iOS.