Dos correcciones importantes lanzadas una detrás de otra esta semana, sobre dos temas bien distintos. La primera afecta a los packs de iconos integrados, que habían dejado de aplicarse correctamente: un bug especialmente molesto que llevaba varias versiones pasando desapercibido. La segunda afecta al contador de pasos de la página izquierda, que podía perder los primeros pasos del día.
1.0.8 — packs de iconos restaurados
El síntoma
Desde hace algunas versiones, seleccionar uno de los packs de iconos integrados en Sola (Pixelarticons, Lucide, Fluent Emoji, Bootstrap, Feather, Heroicons) no funcionaba como debería: en lugar de mostrar los iconos del pack elegido, todos los iconos del dock y del cajón mostraban el propio icono de Sola. Los packs de iconos de terceros instalados desde la Play Store, en cambio, funcionaban con normalidad.
La causa
El culpable era el resource shrinker de Android, una herramienta que, al compilar la versión release, elimina del archivo APK todos los recursos gráficos que considera no utilizados. Es útil para reducir el tamaño final de la app, pero es frágil: si la app carga un recurso de forma dinámica (por ejemplo, a través de su nombre como cadena de texto, como iconpack_google_chrome), el shrinker no puede adivinar que se está usando. Lo elimina, silenciosamente.
Eso es exactamente lo que había ocurrido con los 558 iconos que componen los packs integrados en Sola. Al cargarse de forma dinámica por su nombre en el momento en que el usuario selecciona un pack, resultaban invisibles para el shrinker durante la compilación.
La corrección
La solución es un archivo res/raw/keep.xml que indica explícitamente al shrinker que todos los recursos cuyo nombre empieza por iconpack_ deben conservarse, pase lo que pase:
De paso, también se ha rediseñado el selector de packs: pulsar sobre un pack ahora ofrece una vista previa en directo (el dock y la pantalla de inicio se actualizan al instante), y aparece un botón flotante «Aplicar» para confirmar la elección. Ya no hace falta salir del menú para ver el resultado. El dock, el inicio y el cajón permanecen perfectamente sincronizados tras cualquier cambio de pack.
Se han añadido tres series de pruebas automatizadas para garantizar que un bug similar no vuelva a colarse: una prueba unitaria que verifica que los 558 drawables se resuelven correctamente, una prueba que verifica que el pack seleccionado se propaga bien a todos los componentes, y una prueba que simula el ciclo A → B → por defecto sin fugas de estado.
1.0.9 — contador de pasos más robusto
El síntoma
El contador de pasos mostrado en la página izquierda (dashboard) podía mostrar 0 al abrirse, y empezar a contar solo a partir de ese momento. En la práctica: caminar 3000 pasos por la mañana sin haber abierto la página izquierda podía hacer que esos pasos no se mostraran hasta el primer evento captado después de abrirla.
La causa
La lógica del contador estaba integrada directamente en el componible de la página izquierda. Resultado: el sensor de pasos solo escuchaba eventos cuando esa página estaba visible. En cuanto deslizabas hacia la pantalla de inicio o hacia el cajón, el contador dejaba de escuchar.
En Android, el sensor físico de pasos (TYPE_STEP_COUNTER) es acumulativo desde el último reinicio del teléfono. No pierde ningún paso: el hardware cuenta las 24 horas del día. Pero si ninguna app está escuchando activamente sus eventos, el valor mostrado nunca se refresca. A esto se añadía que la línea de referencia (baseline) que permite calcular los pasos del día en curso solo se establecía en el primer evento recibido, es decir, en la primera apertura de la página izquierda.
La corrección
La lógica se ha extraído a un componente singleton —un StepCounterManager— que vive de forma independiente a la página izquierda. Se activa en cuanto se concede el permiso Activity Recognition, y permanece activo mientras la app está cargada en memoria (algo casi permanente en el caso de un launcher predeterminado). Resultado: el sensor escucha los eventos de pasos de forma continua, la baseline se establece en el primer paso del día (mucho antes), y el valor mostrado está siempre actualizado en el momento en que abres la página.
Como extra, el último valor conocido ahora se guarda entre sesiones. Se acabó el 0 transitorio en pantalla: al volver a abrir la página izquierda, el valor del último evento se restaura inmediatamente, y el valor real se escribe en cuanto el sensor emite un nuevo evento.
Nota sobre los Android muy restrictivos
En teléfonos con una política de gestión de memoria agresiva (algunos Xiaomi, Huawei, OnePlus chinos), el proceso de Sola puede ser cerrado por el sistema aunque sea el launcher predeterminado. En ese caso, poco frecuente, es posible que la baseline del día se recalcule en el primer reinicio, perdiendo los pasos dados mientras tanto. Se está estudiando una solución basada en Health Connect (que mantiene un historial 24/7 independiente de Sola) para una versión futura: eliminará por completo este caso límite, pero requiere trámites administrativos ante Google Play que se abordarán más adelante.
Cómo obtener estas actualizaciones
Ambas versiones se están desplegando de forma progresiva a través de la Play Store. Deberían estar disponibles para todos en un plazo de 24 a 48 horas. También es posible forzar la comprobación desde la aplicación Play Store, en la sección «Gestionar apps y dispositivo».
Abrir en Google Play