Bu hafta art arda, birbirinden bağımsız iki konuda önemli düzeltme yayınlandı. İlki, artık doğru şekilde uygulanmayan yerleşik ikon paketleriyle ilgili — birkaç sürümdür sessizce süregelen özellikle can sıkıcı bir hata. İkincisi, günün ilk adımlarını kaçırabilen sol sayfadaki adım sayacıyla ilgili.
1.0.8 — ikon paketleri geri geldi
Belirti
Birkaç sürümdür, Sola'ya yerleşik ikon paketlerinden birini (Pixelarticons, Lucide, Fluent Emoji, Bootstrap, Feather, Heroicons) seçmek beklendiği gibi çalışmıyordu: seçilen paketin ikonlarını göstermek yerine, dock ve çekmecedeki tüm ikonlar Sola'nın kendi ikonunu gösteriyordu. Play Store'dan kurulan üçüncü taraf ikon paketleri ise normal şekilde çalışıyordu.
Neden
Suçlu, Android'in resource shrinker'ıydı — release sürümü derlenirken kullanılmadığını düşündüğü tüm grafik kaynaklarını APK dosyasından çıkaran bir araç. Uygulamanın son boyutunu küçültmek için faydalı, ama kırılgan: uygulama bir kaynağı dinamik olarak yüklüyorsa (örneğin iconpack_google_chrome gibi bir metin dizisi üzerinden adıyla), shrinker onun kullanıldığını tahmin edemez. Sessizce siler.
Sola'ya yerleşik paketleri oluşturan 558 ikonun başına gelen tam olarak buydu. Kullanıcı bir paket seçtiği anda adlarıyla dinamik olarak yükleniyor olmaları, build sırasında shrinker'ın onları göremediği anlamına geliyordu.
Düzeltme
Çözüm, adı iconpack_ ile başlayan tüm kaynakların ne olursa olsun korunması gerektiğini shrinker'a açıkça belirten bir res/raw/keep.xml dosyası:
Bu arada paket seçici de yeniden ele alındı: bir pakete dokunmak artık anlık bir önizleme sunuyor (dock ve ana ekran hemen güncelleniyor), seçimi onaylamak için ise kayan bir "Uygula" butonu beliriyor. Sonucu görmek için artık menüden çıkmaya gerek yok. Dock, ana ekran ve çekmece her paket değişikliğinden sonra kusursuz şekilde senkronize kalıyor.
Benzer bir hatanın gözden kaçmasını önlemek için üç otomatik test dizisi eklendi: 558 drawable'ın gerçekten çözümlenebildiğini doğrulayan bir birim testi, seçilen paketin tüm bileşenlere doğru şekilde yayıldığını doğrulayan bir test, ve state sızıntısı olmadan A → B → varsayılan döngüsünü simüle eden bir test.
1.0.9 — sağlam adım sayacı
Belirti
Sol sayfada (gösterge paneli) görünen adım sayacı açılışta 0 gösterebiliyor, ardından sayımına ancak o andan itibaren başlıyordu. Somut olarak: sabahleyin sol sayfayı hiç açmadan 3.000 adım yürümek, sayfa açıldıktan sonra ilk sensör olayı yakalanana kadar bu adımların görüntülenmesini kaybettirebiliyordu.
Neden
Sayaç mantığı doğrudan sol sayfanın composable'ına gömülüydü. Sonuç olarak: adım sensörü yalnızca bu sayfa görünürken olayları dinliyordu. Ana ekrana ya da çekmeceye kaydırır kaydırmaz sayaç dinlemeyi bırakıyordu.
Android'de donanım adım sensörü (TYPE_STEP_COUNTER) telefonun son yeniden başlatmasından bu yana kümülatiftir. Hiçbir adımı kaybetmez — donanım 24 saat boyunca sayar. Ama hiçbir uygulama olaylarını aktif olarak dinlemiyorsa, görüntülenen değer hiç yenilenmez. Buna ek olarak, günün adımlarını hesaplamak için kullanılan referans çizgisi (baseline) yalnızca alınan ilk olayda kuruluyordu — yani sol sayfanın ilk açılışında.
Düzeltme
Mantık, sol sayfadan bağımsız yaşayan tek bir bileşene — bir StepCounterManager'a — taşındı. Activity Recognition izni verilir verilmez etkinleşiyor ve uygulama bellekte yüklü kaldığı sürece (bir varsayılan launcher için neredeyse kalıcı bir durum) aktif kalıyor. Sonuç: sensör adım olaylarını sürekli dinliyor, baseline günün ilk adımında (çok daha erken) kuruluyor ve sayfayı açtığınız anda görüntülenen değer her zaman güncel oluyor.
Bonus olarak, bilinen son değer artık oturumlar arasında kalıcı hale getiriliyor. Ekranda artık geçici bir 0 yok: sol sayfayı yeniden açtığınızda son olayın değeri anında geri yükleniyor, sensör yeni bir olay verdiği an gerçek değer yazılıyor.
Çok kısıtlayıcı Android'ler hakkında not
Agresif bellek yönetimi politikasına sahip telefonlarda (bazı Xiaomi, Huawei, OnePlus Çin modelleri), Sola süreci varsayılan launcher olsa bile öldürülebilir. Bu nadir durumda, günün baseline'ının bir sonraki yeniden başlatmada yeniden hesaplanması ve bu arada atılan adımların kaybolması mümkün. Bunu tamamen ortadan kaldıracak, Sola'dan bağımsız olarak 7/24 geçmiş tutan Health Connect tabanlı bir çözüm gelecekteki bir sürüm için değerlendiriliyor: bu sınır durumu tamamen ortadan kaldıracak, ancak Google Play nezdinde daha sonra ele alınacak idari adımlar gerektiriyor.
Bu güncellemeleri nasıl alırsınız
Her iki sürüm de Play Store üzerinden kademeli olarak dağıtılıyor. 24 ila 48 saat içinde herkes için kullanılabilir olmaları bekleniyor. Play Store uygulamasından "Uygulamaları ve cihazı yönet" bölümünden manuel kontrol de yapılabilir.
Google Play'de aç