Due correzioni importanti rilasciate a distanza ravvicinata questa settimana, su due argomenti ben distinti. La prima riguarda i pack di icone integrati che non venivano più applicati correttamente — un bug particolarmente fastidioso che si trascinava silenziosamente da diverse versioni. La seconda riguarda il contapassi della pagina di sinistra, che poteva perdere i primi passi della giornata.
1.0.8 — pack di icone ripristinati
Il sintomo
Da alcune versioni, selezionare uno dei pack di icone integrati in Sola (Pixelarticons, Lucide, Fluent Emoji, Bootstrap, Feather, Heroicons) non funzionava come previsto: invece di mostrare le icone del pack scelto, tutte le icone del dock e del cassetto mostravano l'icona di Sola stessa. I pack di icone di terze parti installati dal Play Store, invece, funzionavano normalmente.
La causa
Il colpevole era il resource shrinker di Android — uno strumento che, al momento di compilare la versione release, rimuove dal file APK tutte le risorse grafiche che ritiene inutilizzate. Utile per ridurre le dimensioni finali dell'app, ma fragile: se l'app carica una risorsa dinamicamente (per esempio tramite il suo nome sotto forma di stringa, come iconpack_google_chrome), lo shrinker non può intuire che è utilizzata. La rimuove, silenziosamente.
È esattamente ciò che era successo per le 558 icone che compongono i pack integrati in Sola. Caricate dinamicamente tramite il loro nome nel momento in cui l'utente seleziona un pack, erano invisibili allo shrinker al momento del build.
La correzione
La soluzione è un file res/raw/keep.xml che indica esplicitamente allo shrinker che tutte le risorse il cui nome inizia con iconpack_ devono essere conservate, qualunque cosa accada:
Il selettore di pack è stato anche rielaborato nel frattempo: un tap su un pack ora offre un'anteprima dal vivo (il dock e la schermata home si aggiornano istantaneamente), e un pulsante flottante «Applica» appare per confermare la scelta. Non serve più uscire dal menu per vedere il risultato. Il dock, la home e il cassetto restano perfettamente sincronizzati dopo ogni cambio di pack.
Sono state aggiunte tre serie di test automatizzati per garantire che un bug simile non si ripresenti: un test unitario che verifica che le 558 drawable siano correttamente risolvibili, un test che verifica che il pack selezionato si propaghi correttamente a tutti i componenti, e un test che simula il ciclo A → B → predefinito senza fughe di stato.
1.0.9 — contapassi più robusto
Il sintomo
Il contapassi mostrato nella pagina di sinistra (dashboard) poteva mostrare 0 all'apertura, per poi iniziare il conteggio solo da quel momento in poi. In pratica: camminare 3.000 passi al mattino senza aver aperto la pagina di sinistra poteva far perdere la visualizzazione di quei passi fino al primo evento rilevato dopo l'apertura.
La causa
La logica del contapassi era integrata direttamente nel composable della pagina di sinistra. Risultato: il sensore di passi ascoltava gli eventi solo quando questa pagina era visibile. Non appena si passava alla schermata home o al cassetto, il contapassi smetteva di ascoltare.
Su Android, il sensore hardware dei passi (TYPE_STEP_COUNTER) è cumulativo dall'ultimo riavvio del telefono. Non perde alcun passo — l'hardware conta 24 ore su 24. Ma se nessuna app ascolta attivamente i suoi eventi, il valore mostrato non viene mai aggiornato. In aggiunta, la linea di riferimento (baseline) che permette di calcolare i passi della giornata in corso veniva stabilita solo al primo evento ricevuto — quindi alla prima apertura della pagina di sinistra.
La correzione
La logica è stata estratta in un componente singleton — uno StepCounterManager — che vive indipendentemente dalla pagina di sinistra. Si attiva non appena viene concesso il permesso Activity Recognition, e resta attivo finché l'app è caricata in memoria (il che è quasi permanente per un launcher predefinito). Risultato: il sensore ascolta gli eventi dei passi in continuo, la baseline viene stabilita al primo passo della giornata (molto prima), e il valore mostrato è sempre aggiornato nel momento in cui si apre la pagina.
In più, l'ultimo valore noto viene ora salvato tra le sessioni. Niente più 0 transitorio a schermo: quando riapri la pagina di sinistra, il valore dell'ultimo evento viene ripristinato immediatamente, e il valore reale viene scritto non appena il sensore emette un nuovo evento.
Nota sugli Android molto restrittivi
Sui telefoni con politiche di gestione della memoria aggressive (alcuni Xiaomi, Huawei, OnePlus cinesi), il processo di Sola può essere terminato anche se è il launcher predefinito. In questo caso raro, resta possibile che la baseline del giorno venga ricalcolata al primo riavvio — perdendo i passi fatti nel frattempo. Una soluzione basata su Health Connect (che mantiene uno storico 24/7 indipendentemente da Sola) è allo studio per una versione futura: eliminerà completamente questo caso limite, ma richiede pratiche amministrative con Google Play che saranno affrontate più avanti.
Come ottenere questi aggiornamenti
Entrambe le versioni vengono distribuite gradualmente tramite il Play Store. Dovrebbero essere disponibili per tutti entro 24-48 ore. È anche possibile forzare il controllo dall'app Play Store, sezione «Gestisci app e dispositivo».
Apri su Google Play