¿Por qué ocupa tanto la aplicación de Facebook?

¿Por qué ocupa tanto la aplicación de Facebook?

20 comentarios Facebook Twitter Flipboard E-mail
¿Por qué ocupa tanto la aplicación de Facebook?
Actualización enero 2018 Un año después, hemos vuelto a analizar la aplicación de Facebook para ver qué hay dentro y cuánto ocupa. ¿Ha mejorado o empeorado? Encuéntralo al final de este artículo.

En el momento de escribir este texto, la última versión oficial de Facebook es la 106.0.0.26.68, un APK que, como puedes comprobar en APKMirror, ocupa exactamente 72,73 MB. Teniendo en cuenta que Facebook tiene fama de optimizar bastante mal sus aplicaciones, no podemos evitar preguntarnos ¿es eso mucho?, ¿por qué ocupa tanto?

Para llegar al fondo del asunto nos hemos remangado las manos y puesto a su APK en la camilla para realizarle la autopsia. Al final decidiremos si la fama de aplicación pesada está justificada o si se encuentra en los rangos normales para una aplicación de su calibre.

Comparación con otras aplicaciones

Lo primero y más fácil de hacer es compara el tamaño del APK de Facebook con el de otras aplicaciones. De este modo podemos de un vistazo ver si se encuentra por encima o por debajo de la media. Para que haya de todo un poco, estos son los tamaños, ordenados de mayor a menor, de diez de las aplicaciones Android populares (basado en la última versión estable a la hora de escribir este texto, ARM, Lollipop 5.x si fuera posible y para 320 dpi).

  • Facebook: 72,73 MB
  • Snapchat: 71,99 MB
  • Facebook Messenger: 60,66 MB
  • Skype: 38,41 MB
  • Twitter: 29,9 MB
  • Spotify: 29 MB
  • WhatsApp: 26,7 MB
  • Google+: 22,97 MB
  • Netflix: 20,39 MB
  • Instagram: 18,99 MB
  • Pinterest: 13,87 MB

Efectivamente, la aplicación de Facebook parece de entrada ser más pesada de a lo que estamos acostumbrados en Android. Mientras que la media de las aplicaciones anteriores es de 32,68 MB, Facebook pesa más del doble.

Fbygplus
Las comparaciones son odiosas y a veces te dejan en evidencia

Ahora bien, no hay nada como Facebook. No se trata de un lema publicitario, sino de la realidad de que pocas aplicaciones son tan complejas como Facebook. Hay otras redes sociales, sí, pero ninguna se acerca a tener tantas subsecciones y funciones como Facebook. Por ejemplo, Twitter no tiene grupos o listas de lugares cercanos, y Google+ no tiene emisión de vídeo en directo.

¿Y si comparamos Facebook como la suma de aplicaciones similares? Podría decirse que Facebook es como Google+ unido a Periscope (Facebook Live Video), Google My Business (Gestión de páginas en Facebook) y Timehop (Un día como hoy). ¿El resultado de sumar el tamaño de todas estas aplicaciones juntas? 22,97 + 10,94 + 17,29 + 9,8 = 61 MB. Ni uniendo cuatro aplicaciones se llega al tamaño de Facebook. No obstante, esta comparación no deja de ser más que una curiosidad, más o menos orientativa, pero que no nos dice demasiado.

¿Qué hay en el APK?

Antes de continuar es preciso mencionar que en el apartado anterior, por simplificar, estabamos comparando el tamaño del APK tal cual. Como quizá sepas, un APK no es más que un ZIP con archivos en su interior, así que el tamaño real de la aplicación y de sus componentes variará según lo bien o mal que se comprima el contenido.

Para continuar nuestar investigación, el paso siguiente era obvio, extraer el APK y ver qué guarda Facebook ahí para que ocupe tanto. La respuesta corta es "muchas cosas": en su interior se albergan 15.699 archivos, con un tamaño descomprimido de 143 MB. Si lo quieres comparar con Google+, su APK está compuesto por 2.324 archivos.

Recursos: imágenes, sonidos...

Para empezar a analizar el APK, lo más fácil es distinguir, de esos 143 MB, qué porcentaje son recursos, es decir, imágenes y sonidos. Los recursos son con frecuencia los culpables de las aplicaciones más pesadas, especialmente si tienen muchas imágenes o vídeos. Los recursos en el APK de Facebook suponen 25,3 MB, un 17% del total, que no está nada mal la verdad, pero que no parecen el principal culpable del sobrepeso.

Aquí hay que reconocerle parte del mérito a Facebook pues la gran mayoría de las imágenes incluidas están bien optimizadas y se encuentran por debajo del kilobyte de tamaño. Las más de 2.500 imágenes PNG incluidas en el APK de Facebook apenas suponen unos 7 MB en total, lo cual implica que, de media, cada imagen no llega a los 3 KB. Hay algunas excepciones, no obstante, como esta imagen PNG que se lleva el récord con 243 KB (y lo mejor es que no sabemos dónde se usa).

Sc Fb4a Header

Los archivos de sonido tampoco son los culpables, pues los 70 sonidos en formato M4A incluidos en el APK no llegan a ocupar ni medio mega todos juntos. ¿Tipografías? Tampoco, 200 Kb. ¿Archivos Javascript? Sí, estos sí son parte del problema pues ocupan en total más de 8 MB y hay la descomunal cantidad de 3.699 archivos JS de Javascript, una bestialidad. ¿Y qué tienen en su interior? Funciones de Javascript, montones y montones de funciones javascript.

Archivosjs
Una cosa no falta en el APK de Facebook: archivos JS

No seré yo quien enseñe a los ingenieros de Facebook como diseñar una aplicación tan complicada como Facebook, pero desde mi ignorancia esta sobredosis de archivos JS da la impresión de no estar muy optimizada.

Archivos DEX

Los archivos DEX son los ejecutables de Android, en tanto a que el acrónimo se corresponde con Dalvik Executable format. Mientras que Google+ tiene dos archivos DEX, Facebook tiene nada menos que trece. Y cada uno ocupa unos 8 MB.

Es posible descompilar los archivos DEX para ver de qué se trata cada uno con utilidades como Dex Manager, y así lo he hecho para los dos primeros: classes.dex y classes2.dex. Sin embargo, bucear entre lo que realmente se esconde detrás de cada uno sería una tarea titánica y, en cierto modo, innecesaria.

Dexmanager

Con echar un vistazo al código dentro de unos pocos DEX ya queda claro cuál es el problema de Facebook: está lleno de cosas. Hasta arriba. Componentes de Analytics, tests A-B, subida de fotos, sincronización de contactos, páginas, instant articles, notificaciones, ubicación y montones, montones y montones de librerías y componentes.

Componentes
Librerías y componentes no faltan tampoco

Estos archivos DEX suponen 84,3 MB de los 143 totales, que es el 60% del total. Todo ayuda a la hora de crear un monstruo que ocupe tanto, pero ahora ya hemos encontrado quién se lleva más de la mitad de la culpa.

Pruebas y falta de limpieza

Una causa de, al menos, parte del sobrepeso de la aplicación de Facebook que se suele mencionar son las constantes pruebas y tests A-B a los que se somete la aplicación. ¿Cuántas veces nos hemos encontrado con una función que está disponible para algunos pero no para todos? Pues bien, aunque tú no la tengas activada, su código en el APK instalado en tu móvil igualmente, ocupando espacio.

Coloriness
Colores en estados, un ejemplo de función que tengas activada o no, está en tu APK

De igual modo, con frecuencia se ha culpado a Facebook de no hacer limpieza en su aplicación y dejar "por ahí" partes de código que no está ya en uso. Así, distintas iniciativas como FB Patcher lograban activar la función de Mensajes en Facebook, aun cuando llevaba meses desactivada. Teniendo en cuenta que Facebook no para de hacer pruebas de esto y aquello, el no limpiar la casa de vez en cuando es un gran problema que se va acumulando.

La optimización no es una prioridad

Tras mirar a la aplicación de Facebook y a los 72 MB+ de tamaño de su APK en profundidad, ¿qué hemos aprendido? ¿es realmente pesada la aplicación de Facebook? La respuesta es , está por encima de la media en cuanto al tamaño de aplicaciones, aunque en cierto modo se puede excusar por la cantidad de componentes necesarios para hacer funcionar todo lo que hay detrás de esta red social y de lo que con frecuencia nos olvidamos.

Aunque tenemos la impresión de que Facebook es una red social sin más y que por tanto básicamente muestra textos e imágenes, la realidad es que la aplicación es bastante más compleja que esto, con componentes de edición de foto y vídeo, emisión y reproducción en Internet, soporte para Chromecast, sincronización de contactos, lugares en el mapa, instant articles, estadísticas, seguimiento de ubicaciones y un largo etcétera.

Todo esto, unido al clásico lema de Facebook de "Move Fast and Break Things" -que más tarde fue suavizado a "Move Fast with stable Infra" - ya nos deja claro que la prioridad de Facebook nunca ha sido optimizar su aplicación o perfeccionarla, sino ser rápido en añadir nuevas funciones, aunque no sean perfectas.

Movefast

No hay tiempo por tanto para pasar la escoba y eliminar lo viejo, y en vez de incluir en el APK una función para probar en un grupo de usuarios, a lo mejor se incluyen tres. Otro ejemplo es que Facebook se distribuye en un APK único para todos los DPI disponibles, lo cual será por pereza o no, pero implica que se incluyen los gráficos a todas las resoluciones, en lugar de optimizados para los DPI del dispositivo.

Google lleva algún tiempo introduciendo mejoras en sus aplicaciones y en Android para lograr reducir el tamaño de las mismas, como se puede leer en la documentación de Android, pero de nada sirven todos los algoritmos y toda la información del mundo si la prioridad de Facebook es la de hacerlo rápido, aunque el resultado no sea el mejor.

La aplicación de Facebook en 2018

Un año después de escribir este artículo, hemos vuelto a analizar la aplicación de Facebook y su APK para determinar qué tal le ha sentado el paso del tiempo. ¿Ha mejorado o empeorado? ¿Ha seguido aumentando de tamaño?

Tengo buenas noticias: la aplicación de Facebook no solo ha dejado de engordar, sino que ha reducido su tamaño en este tiempo. De los 72,73 MB que ocupaba su APK en 2017 ha pasado a 64 MB de la versión 156.0. Tras descomprimir el APK, el ahorro es aun mayor: en 2017 el APK descomprimido ocupaba 143 MB, ahora solo 86 MB.

Fbapps

La diferencia está en su interior. Todos los archivos JS que inundaban la aplicación de Facebook hace un año han ahora desaparecido, y con ellos el número de archivos se ha reducido en más de 4.000. Los 13 archivos DEX del pasado también se han reducido a solo 1 (el resto están comprimidos en un único archivo).

Esto curiosamente coincide con un año en el que la aplicación de Facebook no ha incluído demasiadas novedades aparte de preguntas, GIF animados y, por supuesto, las Historias. ¿Significa esto que, por fin Facebook le está otorgando prioridad a la optimización? Eso esperamos, sobre todo después de que Facebook se comprometiera a simplificar Messenger este año.

En Xataka Android | Las 19 mejores aplicaciones para sacar partido de tu phablet

Comentarios cerrados
Inicio