Ruler es una herramienta de código abierto desarrollada en Spotify para analizar aplicaciones de Android y guiar a los desarrolladores a identificar cuáles de sus componentes contribuyen más al tamaño de la aplicación .
La importancia de optimizar el tamaño de la aplicación para aumentar las tasas de conversión de instalación no se puede subestimar, explica el ex Googler Sam Tolomei . De hecho, un estudio realizado en Google durante los años 2013-2017 mostró que por cada aumento de 6 MB en el tamaño de una aplicación, la tasa de conversión de instalación disminuyó en un 1 %. También se demostró que los tamaños grandes de APK aumentan la tasa de instalaciones fallidas, ya sea por el tiempo o el costo asociado con la descarga o por problemas de conectividad. El panorama empeora cuando se considera que un gran porcentaje de usuarios no tiene acceso a WiFi ni a una gran capacidad de almacenamiento gratuito.
Dado que las aplicaciones de Android se distribuyen actualmente como AAB , para estimar el tamaño de un APK para una configuración de dispositivo determinada, Ruler se basa en el mismo enfoque que utiliza Google para generar APK a partir de AAB con Bundletool de Google . Una vez generado el APK, Ruler lo analizará.
Analizamos este APK para ver qué archivos terminan realmente en la aplicación y cuánto espacio ocupan esos archivos, aprovechando apkanalyzer para garantizar que los números informados por Ruler sean consistentes con los analizados por Android Studio y garantizando que medimos el tamaño de la aplicación después de realizar cualquier optimización. por otro proceso.
El siguiente paso del proceso es asignar cada uno de los archivos de la aplicación a su componente principal, en función de un análisis de todos los módulos y dependencias de Gradle incluidos en el proyecto. Esto proporciona una estimación de la contribución de tamaño de cada módulo individual y dependencia. Ruler también puede asignar cada componente al equipo que lo posee, en función de una lista de propietarios de componentes.
La herramienta está lista para integrarse en una canalización de DevOps y ejecutarse, como lo hace Spotify, en cada solicitud de extracción para detectar cualquier regresión lo antes posible.
Spotify dice que han estado usando Ruler internamente durante más de seis meses con una reducción general en el tamaño de su aplicación de aproximadamente un 9%. Cabe señalar que la aplicación de Spotify es bastante compleja, con más de 1000 módulos de Gradle y cientos de dependencias de terceros, por lo que su experiencia puede variar.