Geliştirici için bilinmesi gerekenler: Kısa cevap

Kerem Aydın·6 Temmuz 2026·⏱3 dk

Android 8, arka plan servisleri ve bildirim kanalları için sıkı kurallar getirdi; Android 9 ise enerji tasarrufu ve gizliliği güçlendirdi (App Standby Buckets, arka planda kamera/mikrofon erişimini engelleme), ayrıca gizli API çağrılarını kısıtladı ve BiometricPrompt ile ekran çentiği desteğini ekledi. Uygulamalar için bu şu anlama geliyor: Arka plan görevlerini, bildirimleri, gizli API çağrılarını ve sensör kullanımını yeniden gözden geçirin — ve Android 9 yüklü gerçek cihazlarda test edin.

Temel değişiklikler ve hemen yapılması gerekenler

  • Arka plan servisleri: startService yerine startForegroundService kullanın; ertelenmiş/periyodik işler için JobScheduler/WorkManager'a geçin; uzun süreli görünür işler için foreground service + bildirim.
  • Bildirim kanalları: targetSdk ≥ 26 olduğunda zorunludur — anlamlı kanallar oluşturun ve önem düzeylerini ayarlayın.
  • App Standby Buckets: Sistem, arka plan işlerinin önceliklerini değiştirir (active → rare). Senkronizasyonu planlayın ve acil durumlar için FCM kullanın.
  • Sensör gizliliği: Android 9'da arka plan/idle süreçlerden kamera/mikrofon/bazı sensörlere erişim yasaktır — bu işlemleri UI/foreground akışına taşıyın ve durum kontrolleri ekleyin.
  • Non‑SDK API: Gizli yöntemlere yönelik yansıma (reflection) artık çoğu zaman engellenir veya günlüğe kaydedilir — bu alanları bulun ve genel API'ler veya Jetpack ile değiştirin.
  • Biyometri ve UI: BiometricPrompt'a (veya androidx.biometric'e) geçiş yapın; doğru UI için display cutout ve WindowInsets'i dikkate alın.

Faydalı: WorkManager kullanın — Android sürümleri arasındaki davranışı soyutlar ve arka plan mantığının geçişini kolaylaştırır.

Temel alt sistemlere etkisi ve pratik ipuçları

  1. Arka plan yürütme
  • Polling işlemlerini WorkManager/JobScheduler'a taşıyın; bir olay alındığında anında çalışma gerekiyorsa FCM yüksek öncelik kullanın.
  • Testler: Battery Saver AÇIK, düşük kullanım simülasyonu, adb üzerinden Standby bucket değiştirme.
  1. Bildirimler
  • Uygulama başlangıcında kanallar oluşturun, kullanıcıya önem düzeyi ayarlama seçeneği sunun; kanal devre dışı bırakıldığında oluşan durumları yönetin.
  1. Kamera/mikrofon/sensörler
  • Bunları arka plan BroadcastReceiver/Service içinden açmaya çalışmayın. Arka planda kayıt gerekiyorsa — görünür bir bildirim ve açık kullanıcı onayı ile foreground service başlatın.
  1. Gizli API'ler
  • Test derlemesinde statik analiz ve StrictMode çalıştırın; yansımayı genel karşılıklarıyla değiştirin veya bağımlılığı belgeleyip resmi bug tracker'ı arayın.
  1. Ağ ve güvenlik
  • Network Security Config'i, cleartext devre dışı bırakmayı ve sunucu TLS ayarlarını kontrol edin; daha sonraki sürümlerde varsayılan olarak TLS 1.3 olsa da Android 8/9 için TLS 1.2 doğruluğunu sağlayın.

Geçiş planı ve kontrol listesi (hızlı eylem)

  • SDK Platform 28 ve derleme araçlarını güncelleyin.
  • Non‑SDK çağrılarını bulun ve kaldırın (statik analiz, logcat).
  • Arka plan görevlerini WorkManager/JobScheduler'a taşıyın.
  • Bildirim kanallarını uygulayın ve UX'i test edin.
  • Arka plan senaryolarında kamera/mikrofon erişimini kontrol edin; gerekirse foreground service kullanın.
  • Biyometriyi BiometricPrompt / androidx.biometric'e taşıyın.
  • Android 8 ve 9 yüklü gerçek cihazlarda test edin: arka plan, bildirimler, ekran çentikleri, ağ kısıtlamaları.
  • Genişletilmiş günlük kaydı (Crashlytics) ve sürüm sonrası izlemeyi etkinleştirin.

Bazı Android 9 kısıtlamaları, targetSdk 28'in altında olsa bile geçerlidir (örneğin enerji tasarrufu). Sadece emülatörde değil, Pie yüklü cihazlarda test edin.

Sık yapılan hatalar

  • Arka plandan startService() kullanımı → IllegalStateException; startForegroundService() + 5 saniye içinde foreground başlatma gerekir.
  • Arka planda kamera/mikrofon açma → SecurityException/hatalar; foreground akışına taşıyın.
  • Gizli API'lere yansıma → Android 9'da uyarılar veya çökmeler.

SSS

  • Hemen targetSdk'yi 28'e yükseltmek gerekiyor mu?

    • Önerilir, ancak bunu kod uyumlu hale geldiğinde yapın: bildirim kanalları, arka plan servislerinin yönetimi ve gizli API'lerin değiştirilmesi.
  • WorkManager her durumda yardımcı olur mu?

    • Çoğu ertelenmiş/periyodik görev için evet; uzun süreli görünür işlemler için foreground service gerekir.
  • Uygulamanın Standby bucket'ını nasıl kontrol edebilirim?

    • adb komutlarını ve manuel kullanım senaryolarını kullanarak rare/frequent davranışı simüle edin.

İsterseniz, kod tabanınız için ayrıntılı bir kontrol listesi hazırlayabilirim veya APK/Gradle dosyalarınızı non‑SDK çağrıları ve geçiş sorunları açısından hızlıca kontrol edebilirim — yapıtları gönderin.