Ö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
InputConnectiontutan uygulamalar,TextAttribute.isTextSuggestionSelected()işlevini çağırarak aday seçimi verilerini alabilir. Bu uygulamalar,AccessibilityEvent.setTextChangeTypes()etkinliklerini gönderirkenTYPE_VIEW_TEXT_CHANGEDişlevini çağırmalıdır. Android 17'yi hedefleyen ve standartTextViewkullanan uygulamalarda bu özellik varsayılan olarak etkinleştirilir. (YaniTextView, 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 中,平台继续向“默认安全”架构转变,引入了一系列旨在缓解严重程度较高的漏洞利用(例如网络钓鱼、交互劫持和混淆代理攻击)的增强功能。此更新要求开发者明确选择启用新的安全标准,以保持应用兼容性和用户保护。
对开发者的主要影响包括:
- BAL 强化和改进的选择启用机制:我们正在通过将保护范围扩展到
IntentSender来完善后台 activity 启动 (BAL) 限制。 开发者必须弃用旧版MODE_BACKGROUND_ACTIVITY_START_ALLOWED常量。相反,您应采用精细的控制措施,例如MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE,该措施会将 activity 启动限制在调用应用可见的场景中,从而显著减小攻击面。 - 采用工具:开发者应利用严格模式和更新后的 lint 检查来识别旧版模式,并确保做好准备,以满足未来的目标 SDK 要求。
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_INTERFACEiznini 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,INTERNETizni varsa bu izin otomatik olarak verilir.
- 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
- 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 或更高版本为目标平台,则默认启用证书透明度 (CT)。(在 Android 16 上,CT 可用,但应用必须选择启用。)
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.