Geliştirici günlüğü
2026’da bir uyku uygulamasını bütün gece çalışır tutmak hâlâ şaşırtıcı derecede zor
Telefonumun sabaha kadar vantilatör sesi çıkarmasını istiyordum. 2026’da bunun büyük ölçüde çözülmüş olduğunu sanıyordum. Yine de geliştirici olarak şaşırtıcı derecede çok zamanımı aldı.
Yıllarca White Noise Lite kullandım. Reklamları ve bana çok eski gelen bir arayüzü vardı ama genelde çalışıyordu. Sonra sık sık durmaya başladı. Ne olduğunu gösterecek günlüklerim olmasa da bunları çökme olarak düşünüyordum. Modern bir arayüz ve kayıt yerine cihazda üretilen, hassas ayarlanabilen ses de istiyordum. Sonunda Veil’i geliştirdim ve güvenilirlik sorununu çok daha iyi anladım.
iOS’ta arka planda çalma nispeten kolaydı; benim deneyimime göre Veil başından beri çok kararlı. Android daha uzun sürdü: farklı donanımlar, az bellekli eski telefonlar, üreticiye özgü pil yönetimi ve dinlerken gelen güncellemeler. Kendi kodumda da hatalar vardı. Gece üçte uyanan biri için bu ayrım pek önemli değil.
Çökme raporları yetmedi. Sonlandırılan süreç istisna bildirmeyebilir; çalışan süreç sessiz bir ses akışına sahip olabilir. Ön plan hizmeti ve çalma bildirimi bile hoparlörden ses çıktığını kanıtlamaz. Yerel bir çalma günlüğü, süreç çıkış bilgileri, bellek ölçümleri, hizmet durumu, ses olayları ve bilinçli durdurma kayıtları ekledim. İlgili veriler süreç sonlandıktan sonra korunur ve sonraki açılışta toplanır.
Olası nedenleri ayıracak kadar geceyi yeniden kurmak istedim. Çalması hâlâ isteniyor muydu? Zamanlayıcı bitmiş miydi? Bellek artıyor muydu? Telefon şarjda mıydı? Android paketi değiştirmiş miydi? Sinyaller, ne gösterdiklerini anladığımda işe yarıyordu.
Önce ölçümü düzeltmem gerekti. Veil’i son uygulamalardan kaydırmak sesi durdurup kayıtlı oturumu açık bırakabiliyordu. Android önbellekteki süreci saatler sonra temizleyince raporum bunu çalma hatası sayıyordu. Sabah bilinçli durdurma “gece sonlandırması” oluyordu. Gerçek çalmayı kesen güncellemelerse zararsız sistem çıkışları diye dışlanıyordu.
Tanımları düzeltmek, ses kodunu düzeltmeden hata tablosunu değiştirdi. Artık çalma iyileşmesini ölçüm iyileşmesinden ayırıyorum. Sürüm, cihaz ailesi, oturum süresi ve çıkış nedenini düzenli inceliyor, test cihazlarını ve mükerrer raporları çıkarıyorum. Gecikmiş raporlar da önemli: birkaç kısa oturum bir sürümün geceyi çıkaracağını göstermez.
Bu örüntüler testleri yönlendiriyor. Fiziksel telefonlarda uzun ve gece boyu testler, Samsung’un uzaktan laboratuvarında oturumlar yapıyorum. Sürekli logcat, bellek ve bellek baskısı örnekleri, hata anında ses ve hizmet durumları kaydediliyor. Sorunu bizzat görmem gerekmiyor.
Test düzeni sonucu değiştirebiliyor. USB telefona güç verir; bu, şarjdan çekilmiş pil testi değildir. Tekrarlanan dumpsys meminfo bile seste aksamalara yol açabiliyordu. Sorunsuz bir gece yalnızca o koşullarda hatayı üretemediğimi gösterir, her cihaz ve sistem durumunu doğrulamaz.
İlginç bir bulgu Android Auto Backup’tı. Pixel’imde günlükler, ses çalarken BackupManager’ın yedekleme sırasında Veil’i sonlandırdığını gösterdi. Kurulum verilerinde 14 Ağustos ile 11 Eylül 2026 arasında 93 kurulumda 190 korumalı süreç SIGKILL’i buldum; tekrarlar yaklaşık üç gündü. Bu, yedekleme açıklamasını destekliyordu ama her olayı kanıtlamıyordu.
Buluttan geri yükleme ödününü kabul ederek Auto Backup’ı kapattım. Android belgeleri yedeklemenin uygulamayı durdurduğunu, ön plan uygulamalarının normalde hariç tutulduğunu söylüyor. Cihaz kaydı bu somut olayda harekete geçmemi sağladı. Android yedekleme belgeleri
Bazı hatalar bendeydi. Ses kurtarma, eski bağlam kapanmadan yenisini oluşturup zaten sorun yaşayan uygulamada kaynakları üst üste bindirebiliyordu. Artık kapatma zaman sınırıyla bekleniyor; kurtarma ve çalma işlemleri sırayla yürütülüyor. Daha yeni kullanıcı niyeti öncelikli: bekleyen onarım, kullanıcının durdurma kararını geri almamalı.
Bir düzeltme yeni hata getirdi. 150 ms’lik kontrol, ses bağlamı saatinin ilerlemesini ölçüp aktif olduğunu söyleyen takılmış bağlamları yakalıyordu. Ama JavaScript zamanlayıcısını bekliyordu. Arka planda bu bekleme, uygulama öne gelene kadar takılabiliyordu. Kontrol artık yalnızca ön planda çalışıyor. Kurtarma yollarını ekran kapalıyken de test etmek gerekiyor.
Bazı yararlı değişiklikler ürün kararlarıydı. Ölçümler reklam WebView süreciyle ilişkili yaklaşık 90 MB ek yerleşik bellek gösterdi. Önceki araştırmalar SDK ile ilişkili ciddi bellek hataları da bulmuştu. Önce maliyeti sınırladım, sonra reklamları ve SDK’yı tamamen kaldırdım. Gece boyu çalışan bir uygulamada güvenilirlik daha önemliydi.
Telemetri kişinin durmayı bekleyip beklemediğini söylemiyordu. İlgili bir kesintiden sonra Veil saatle birlikte “Bunu bekliyor muydun?” diye sorabilir. Sözcükler bilinçli: “Sen mi durdurdun?” partnerin durdurmasını ya da dokunmadan beklenen bir kesintiyi kapsamaz.
Beklenen duruş pil sorun giderimine yönlendirmez. Beklenmediyse uygulama kesintiyi kabul eder ve kanıtlara uygun yardım sunar. Yanıt teknik neden iddia etmeden deneyimi anlatır. Böylece her yeni Android kullanıcısını ürkütücü izinler ve pil ayarları arayışıyla karşılamam gerekmez.
Ayarlar iki taraf için de zor. Açabilir veya uygunsa muafiyet isteyebilirim ama kullanıcı karar verir. Android’in muafiyeti her üreticinin temizleme davranışını kontrol etmez. Sorundan sonra somut bir adım, ilk sesten önce yabancı ayarlarda dolaşmaktan daha yararlıdır. Android güç yönetimi kılavuzu
Güncellemeler özellikle can sıkıcı. Play’in uygulama başına otomatik güncelleme ayarını gösterebilirim ama Veil bunu yönetemez. Elle güncellemek ek iş; Google kritik güvenlik güncellemelerine istisna tanıyor. Gece güvenilirliğini iyileştiren güncelleme o geceyi kesebilir. Google Play güncelleme ayarları
Güncelleme sonrası otomatik geri yükleme henüz tamamlanmadı. Ses grafiği yanında zamanlayıcı durumu ve kullanıcı niyeti de doğru korunmalı. Bazı üretici örüntülerini kesin açıklamak için daha iyi yeniden üretmem gerekiyor. Uygulama hatadan kurtulmalı, bilinçli durdurmayla mücadele etmemeli.
En çok ilerleme düzenli analiz, uzun testler, hedefli düzeltmeler ve doğrudan geri bildirimin birleşiminden geldi. Her biri diğerinin kaçırdığını yakalıyor. Uygulamanın çaldığını söylemesinden çok kanıtı ilgilendiriyor beni. Yatarken başlatan kişi buna güvenebilmeli; bunu sağlamak beklediğimden çok daha fazla iş olsa da.
Telefonun için uygulanabilir adımlar mı arıyorsun? Tamamlayıcı kılavuzu oku: Android’de ses kesilmelerini düzeltme.