Davranış değişiklikleri: Android 17 veya sonraki sürümleri hedefleyen uygulamalar

Önceki sürümlerde olduğu gibi Android 17 de uygulamanızı etkileyebilecek davranış değişiklikleri içerir. Aşağıdaki davranış değişiklikleri yalnızca Android 17 veya sonraki sürümleri hedefleyen uygulamalar için geçerlidir. Uygulamanız Android 17 veya sonraki sürümleri hedefliyorsa uygulamanızı, geçerli olduğu durumlarda bu davranışları destekleyecek şekilde değiştirmeniz gerekir.

Uygulamanızın targetSdkVersion değerinden bağımsız olarak Android 17'de çalışan tüm uygulamaları etkileyen davranış değişiklikleri listesini de inceleyin.

Temel işlevler

Android 17, Android sisteminin çeşitli temel özelliklerini değiştiren veya genişleten aşağıdaki değişiklikleri içerir.

MessageQueue'nun yeni kilit içermeyen uygulaması

Android 17'den itibaren, Android 17 veya sonraki sürümleri hedefleyen uygulamalar android.os.MessageQueue'nin yeni bir kilit içermeyen uygulamasını alır. Yeni uygulama performansı artırır ve kaçırılan kare sayısını azaltır ancak MessageQueue özel alanlarını ve yöntemlerini yansıtan istemcilerin işleyişini bozabilir.

Azaltma stratejileri de dahil olmak üzere daha fazla bilgi için MessageQueue davranış değişikliği rehberi başlıklı makaleyi inceleyin.

Erişilebilirlik

Android 17, erişilebilirliği iyileştirmek için aşağıdaki değişiklikleri yapar.

Karmaşık IME fiziksel klavye yazma erişilebilirlik desteği

Bu özellik, CJKV dil girişinde ekran okuyucunun sözlü geri bildirimini iyileştirmek için yeni AccessibilityEvent ve TextAttribute API'leri sunar. CJKV IME uygulamaları artık metin oluşturma sırasında metin dönüştürme adayı seçilip seçilmediğini belirtebilir. Düzenleme alanları olan uygulamalar, metin değişikliğiyle ilgili erişilebilirlik etkinlikleri gönderirken metin değişikliği türlerini belirtebilir. Örneğin, uygulamalar metin oluşturma sırasında bir metin değişikliği olduğunu veya metin değişikliğinin bir commit işleminden kaynaklandığını belirtebilir. Bu işlem, ekran okuyucular gibi erişilebilirlik hizmetlerinin metin değişikliğinin niteliğine göre daha hassas geri bildirimler vermesini sağlar.

Uygulama benimseme

  • IME Uygulamaları: IME'ler, düzenleme alanlarında metin oluştururken belirli bir dönüşüm adayının seçilip seçilmediğini belirtmek için TextAttribute.Builder.setTextSuggestionSelected() kullanabilir.

  • Alanları Düzenleme özelliğine sahip uygulamalar: Özel bir InputConnection tutan uygulamalar, TextAttribute.isTextSuggestionSelected() işlevini çağırarak aday seçimi verilerini alabilir. Bu uygulamalar, AccessibilityEvent.setTextChangeTypes() etkinliklerini gönderirken TYPE_VIEW_TEXT_CHANGED işlevini çağırmalıdır. Android 17'yi hedefleyen ve standart TextView kullanan uygulamalarda bu özellik varsayılan olarak etkinleştirilir. (Yani TextView, IME'den veri almayı ve erişilebilirlik hizmetlerine etkinlik gönderirken metin değişikliği türlerini ayarlamayı yönetir.)

  • Erişilebilirlik Hizmetleri: Etkinlikleri işleyen erişilebilirlik hizmetleri, değişikliğin niteliğini belirlemek ve geri bildirim stratejilerini buna göre ayarlamak için TYPE_VIEW_TEXT_CHANGED çağrısı yapabilir.AccessibilityEvent.getTextChangeTypes()

Güvenlik

Android 17, cihaz ve uygulama güvenliğiyle ilgili aşağıdaki iyileştirmeleri sunar.

Etkinlik Güvenliği

Android 17'de platform, "varsayılan olarak güvenli" bir mimariye geçişini sürdürüyor. Bu kapsamda, kimlik avı, etkileşim ele geçirme ve confused deputy saldırıları gibi yüksek düzeyde ciddi güvenlik açıklarını azaltmak için tasarlanmış bir dizi iyileştirme sunuluyor. Bu güncelleme, uygulama uyumluluğunu ve kullanıcı korumasını sürdürmek için geliştiricilerin yeni güvenlik standartlarını açıkça etkinleştirmesini gerektirir.

Geliştiriciler için önemli etkiler:

  • BAL'ı güçlendirme ve gelişmiş etkinleştirme: Korumaları IntentSender'a genişleterek Arka Plan Etkinliği Başlatma (BAL) kısıtlamalarını iyileştiriyoruz. Geliştiricilerin eski MODE_BACKGROUND_ACTIVITY_START_ALLOWED sabitinden geçiş yapması gerekir. Bunun yerine, MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE gibi ayrıntılı kontrolleri kullanmanız gerekir. Bu kontrol, etkinlik başlatma işlemlerini arayan uygulamanın görünür olduğu senaryolarla kısıtlayarak saldırı yüzeyini önemli ölçüde azaltır.
  • Adaptasyon araçları: Geliştiriciler, eski kalıpları belirlemek ve gelecekteki hedef SDK şartlarına hazırlıklı olmak için katı modu ve güncellenmiş lint kontrollerini kullanmalıdır.

Localhost korumaları

Android 17, platform güvenliğini ve kullanıcı gizliliğini iyileştirmek için USE_LOOPBACK_INTERFACE adlı yeni bir yükleme zamanı izni sunuyor. Bu değişiklik, daha önce INTERNET izniyle örtülü olarak izin verilen loopback arayüzü üzerinden uygulamalar ve profiller arası iletişimi (ör. 127.0.0.1 veya ::1) kısıtlar. Android 17 veya sonraki sürümleri hedefleyen uygulamalar için aşağıdaki kurallar geçerlidir:

  • Karşılıklı rıza gerekir: Uygulamalar ve profiller arası iletişim artık varsayılan olarak engellenir. Bağlantının başarılı olması için hem gönderen uygulamanın hem de alan uygulamanın manifestlerinde USE_LOOPBACK_INTERFACE iznini açıkça belirtmesi gerekir.
  • Uygulama içi trafik muafiyeti: Aynı uygulama içindeki geri döngü iletişimi (uygulama içi iletişim) etkilenmez ve bu yeni izni gerektirmez.
  • Hedef SDK davranışı:
    • Uygulama, Android 17 veya sonraki bir sürümü hedefliyorsa: İzin açıkça istenmelidir. Bu dosya eksikse soket işlemleri (ör. TCP bağlantısı veya UDP gönderme) başarısız olur ve genellikle EPERM (işleme izin verilmedi) hatası döndürülür.
    • Uygulama, API düzeyi 36 veya daha düşük bir düzeyi hedefliyor: İzin, INTERNET üzerinde bölünmüş izin olarak değerlendirilir. Daha düşük API düzeylerini hedefleyen uygulamalara, INTERNET izni varsa bu izin otomatik olarak verilir.
  • Uyumluluk uyarısı: Hedefini Android 17'ye güncelleyen ancak bu izni istemeyen bir alıcı uygulama varsa gönderen uygulama daha düşük bir API düzeyini hedeflese bile diğer uygulamalardan gelen bağlantılar reddedilir.

Varsayılan olarak CT'yi etkinleştirme

Android 17 veya sonraki sürümleri hedefleyen uygulamalarda sertifika şeffaflığı (CT) varsayılan olarak etkindir. (Android 16'da CT kullanılabilir ancak uygulamaların etkinleştirilmesi gerekir.)

Daha güvenli yerel DCL—C

Uygulamanız Android 17 veya sonraki sürümleri hedefliyorsa Android 14'te DEX ve JAR dosyaları için kullanıma sunulan daha güvenli dinamik kod yükleme (DCL) koruması artık yerel kitaplıkları da kapsıyor.

System.load() kullanılarak yüklenen tüm yerel dosyalar salt okunur olarak işaretlenmelidir. Aksi takdirde sistem UnsatisfiedLinkError değerini döndürür.

Uygulamaların mümkün olduğunca dinamik olarak kod yüklemesini önermemizin nedeni, bu durumun uygulamaların kod yerleştirme veya kod kurcalama yoluyla güvenliğinin ihlal edilme riskini büyük ölçüde artırmasıdır.

Cihaz form faktörleri

Android 17, çeşitli cihaz boyutları ve form faktörlerinde kullanıcı deneyimini iyileştirmek için aşağıdaki değişiklikleri içerir.

Büyük ekranlarda (sw>=600dp) yön, yeniden boyutlandırılabilirlik ve en-boy oranı kısıtlamalarını yoksaymak için platform API'sinde yapılan değişiklikler

Android 16'da, API düzeyi 36 veya daha yüksek sürümleri hedefleyen uygulamalar için büyük ekranlarda (sw >= 600 dp) yön, en-boy oranı ve yeniden boyutlandırma kısıtlamalarını yoksaymak amacıyla Platform API değişiklikleri yaptık. Geliştiriciler, SDK 36 ile bu değişiklikleri devre dışı bırakabilir. Ancak bu devre dışı bırakma seçeneği, Android 17 veya sonraki sürümleri hedefleyen uygulamalarda artık kullanılamayacaktır.

Daha fazla bilgi için Yön ve yeniden boyutlandırma kısıtlamaları yoksayılır başlıklı makaleyi inceleyin.