Dua perbaikan penting dirilis berturut-turut minggu ini, untuk dua masalah yang sama sekali berbeda. Yang pertama menyangkut paket ikon bawaan yang sempat tidak diterapkan dengan benar — bug yang cukup mengganggu dan sudah bersembunyi diam-diam sejak beberapa versi lalu. Yang kedua menyangkut penghitung langkah di halaman kiri, yang bisa melewatkan langkah-langkah pertama di hari itu.

1.0.8 — paket ikon kembali normal

Gejalanya

Sejak beberapa versi terakhir, memilih salah satu paket ikon bawaan Sola (Pixelarticons, Lucide, Fluent Emoji, Bootstrap, Feather, Heroicons) tidak berjalan sesuai harapan: alih-alih menampilkan ikon dari paket yang dipilih, semua ikon di dock dan laci aplikasi malah menampilkan ikon Sola itu sendiri. Sementara itu, paket ikon pihak ketiga yang dipasang dari Play Store berfungsi normal.

Penyebabnya

Biang keladinya adalah resource shrinker Android — alat yang, saat mengompilasi versi release, menghapus dari file APK semua resource grafis yang dianggapnya tidak terpakai. Berguna untuk memperkecil ukuran akhir aplikasi, tapi rapuh: jika aplikasi memuat sebuah resource secara dinamis (misalnya lewat namanya dalam bentuk string, seperti iconpack_google_chrome), shrinker tidak bisa menebak bahwa resource itu sebenarnya dipakai. Ia pun menghapusnya, secara diam-diam.

Itulah persis yang terjadi pada 558 ikon yang menyusun paket-paket bawaan Sola. Karena dimuat secara dinamis lewat namanya saat pengguna memilih sebuah paket, ikon-ikon itu tidak terlihat oleh shrinker saat proses build.

Perbaikannya

Solusinya adalah file res/raw/keep.xml yang secara eksplisit memberi tahu shrinker bahwa semua resource dengan nama yang diawali iconpack_ harus tetap dipertahankan, apa pun yang terjadi:

Pemilih paket ikon juga dirombak sekalian: mengetuk sebuah paket kini langsung menampilkan pratinjau real-time (dock dan layar utama diperbarui seketika), dan tombol mengambang "Terapkan" muncul untuk mengonfirmasi pilihan. Tidak perlu lagi keluar dari menu untuk melihat hasilnya. Dock, layar utama, dan laci aplikasi tetap sinkron sempurna setiap kali paket ikon diganti.

Tiga rangkaian pengujian otomatis ditambahkan untuk memastikan bug serupa tidak lolos lagi: unit test yang memverifikasi bahwa ke-558 drawable bisa di-resolve dengan benar, test yang memastikan paket ikon yang dipilih benar-benar diteruskan ke semua komponen, dan test yang mensimulasikan siklus A → B → default tanpa kebocoran state.

1.0.9 — penghitung langkah yang lebih andal

Gejalanya

Penghitung langkah yang ditampilkan di halaman kiri (dashboard) bisa menunjukkan angka 0 saat dibuka, lalu baru mulai menghitung sejak saat itu. Contoh nyatanya: berjalan 3.000 langkah di pagi hari tanpa membuka halaman kiri bisa membuat langkah-langkah tersebut tidak tertampil sampai ada event pertama yang tertangkap setelah halaman dibuka.

Penyebabnya

Logika penghitung ini tertanam langsung di dalam composable halaman kiri. Akibatnya, sensor langkah hanya mendengarkan event saat halaman tersebut sedang terlihat. Begitu Anda menggeser ke layar utama atau ke laci aplikasi, penghitung berhenti mendengarkan.

Di Android, sensor perangkat keras untuk langkah (TYPE_STEP_COUNTER) bersifat kumulatif sejak restart terakhir ponsel. Sensor ini tidak pernah kehilangan satu langkah pun — hardware-nya menghitung 24 jam nonstop. Tapi jika tidak ada aplikasi yang aktif mendengarkan event-nya, nilai yang ditampilkan tidak pernah diperbarui. Ditambah lagi, garis acuan (baseline) yang dipakai untuk menghitung langkah hari berjalan baru ditetapkan saat event pertama diterima — yaitu saat halaman kiri pertama kali dibuka.

Perbaikannya

Logikanya kini dipindahkan ke komponen singleton — sebuah StepCounterManager — yang berjalan independen dari halaman kiri. Komponen ini aktif segera setelah izin Activity Recognition diberikan, dan tetap aktif selama aplikasi berada di memori (yang hampir selalu terjadi untuk launcher default). Hasilnya: sensor mendengarkan event langkah secara terus-menerus, baseline ditetapkan sejak langkah pertama di hari itu (jauh lebih awal), dan nilai yang ditampilkan selalu up to date saat Anda membuka halaman tersebut.

Sebagai bonus, nilai terakhir yang diketahui kini disimpan secara persisten antar-sesi. Tidak ada lagi angka 0 sementara di layar: saat Anda membuka kembali halaman kiri, nilai dari event terakhir langsung dipulihkan, dan nilai sebenarnya ditulis begitu sensor mengirim event baru.

Catatan untuk Android yang sangat ketat

Di ponsel dengan kebijakan manajemen memori yang agresif (beberapa Xiaomi, Huawei, OnePlus asal Tiongkok), proses Sola bisa dimatikan paksa meski berstatus launcher default. Dalam kasus langka ini, baseline harian bisa saja dihitung ulang saat restart pertama — sehingga langkah yang sudah dilakukan sebelumnya tidak tercatat. Solusi berbasis Health Connect (yang menyimpan riwayat 24/7 secara independen dari Sola) sedang dipertimbangkan untuk versi mendatang: solusi ini akan menghilangkan sepenuhnya kasus batas ini, tapi memerlukan proses administratif dengan Google Play yang akan diurus nanti.

Cara mendapatkan pembaruan ini

Kedua versi ini digulirkan secara bertahap lewat Play Store. Keduanya seharusnya sudah tersedia untuk semua pengguna dalam 24 hingga 48 jam. Anda juga bisa memaksa pemeriksaan pembaruan dari aplikasi Play Store, di bagian "Kelola aplikasi & perangkat".

Buka di Google Play