Android 17, geliştiriciler için harika yeni özellikler ve API'ler sunuyor. Aşağıdaki bölümlerde, ilgili API'leri kullanmaya başlamanıza yardımcı olmak için bu özellikler özetlenmiştir.
Yeni, değiştirilen ve kaldırılan API'lerin ayrıntılı listesi için API farklılıkları raporunu inceleyin. Yeni API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Yeni API'ler, görünürlük için vurgulanmıştır.
Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanları da incelemeniz gerekir. Daha fazla bilgi için aşağıdaki sayfalara bakın:
- Android 17'yi hedefleyen uygulamaları etkileyen davranış değişiklikleri
targetSdkVersiondeğerinden bağımsız olarak tüm uygulamaları etkileyen davranış değişiklikleri.
Temel işlevler
Android 17, temel Android işlevleriyle ilgili aşağıdaki yeni özellikleri ekler.
Yeni ProfilingManager tetikleyicileri
Android 17 向 ProfilingManager 添加了多个新的系统触发器,可帮助您收集深入的数据来调试性能问题。
新触发条件包括:
TRIGGER_TYPE_COLD_START:在应用冷启动期间发生触发。它在响应中同时提供调用堆栈示例和系统跟踪。TRIGGER_TYPE_OOM:当应用抛出OutOfMemoryError时触发,并提供 Java 堆转储作为响应。TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE:当应用因 CPU 使用率异常和过高而被终止时,会发生触发,并提供正在运行的后台系统跟踪的快照作为响应。TRIGGER_TYPE_ANOMALY:检测系统性能异常,例如 binder 调用过多和内存用量过多。
如需了解如何设置系统触发器,请参阅有关基于触发器的性能分析以及如何检索和上传配置文件和分析性能分析数据的文档。
应用异常性能分析触发器
Android 17 引入了设备端异常值检测服务,用于监控资源密集型行为和潜在的兼容性回归。此服务与 ProfilingManager 集成,可让您的应用接收由系统检测到的特定事件触发的性能分析工件。
使用 TRIGGER_TYPE_ANOMALY 触发器检测系统性能问题,例如 Binder 调用过多和内存用量过多。当应用超出操作系统定义的内存限制时,异常触发器可让开发者接收应用专属堆转储,以帮助识别和修复内存问题。此外,对于过多的 binder 垃圾内容,异常触发器会提供 binder 事务的堆栈采样分析。
此 API 回调会在系统强制执行任何操作之前发生。例如,它可以帮助开发者在应用因超出内存限制而被系统终止之前收集调试数据。
fun registerAnomalyTrigger(context: Context) {
val profilingManager =
context.getSystemService(ProfilingManager::class.java) ?: return
val triggers = listOf(
ProfilingTrigger.Builder(ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build()
)
val callbackExecutor: Executor = Executors.newSingleThreadExecutor()
val resultCallback = Consumer<ProfilingResult> { profilingResult ->
if (profilingResult.errorCode == ProfilingResult.ERROR_NONE) {
// Upload profile result to server for further analysis
profilingResult.resultFilePath?.let { setupProfileUploadWorker(it) }
}
}
profilingManager.registerForAllProfilingResults(
callbackExecutor,
resultCallback
)
profilingManager.addProfilingTriggers(triggers)
}
JobDebugInfo API'leri
Android 17 引入了新的 JobDebugInfo API,可帮助开发者调试其 JobScheduler 作业,例如作业未运行的原因、作业运行了多长时间以及其他聚合信息。
扩展后的 JobDebugInfo API 的第一个方法是 getPendingJobReasonStats(),它会返回一个映射,其中包含作业处于待执行状态的原因及其各自的累计待处理时长。此方法结合了 getPendingJobReasonsHistory() 和 getPendingJobReasons() 方法,可让您深入了解预定作业未按预期运行的原因,但通过在单个方法中提供时长和作业原因,简化了信息检索。
例如,对于指定的 jobId,该方法可能会返回 PENDING_JOB_REASON_CONSTRAINT_CHARGING 和 60000 毫秒的时长,表示由于充电限制未得到满足,作业处于待处理状态的时长为 60000 毫秒。
Boştayken izin verilen alarmlar için dinleyici desteğiyle uyanık kalma kilitlerini azaltma
Android 17 引入了 AlarmManager.setExactAndAllowWhileIdle 的新变体,该变体接受 OnAlarmListener 而不是 PendingIntent。这种基于回调的新机制非常适合目前依赖持续唤醒锁来执行周期性任务的应用,例如维护套接字连接的即时通讯应用。
Gizlilik
Android 17, kullanıcı gizliliğini iyileştirmek için aşağıdaki yeni özellikleri içerir.
Encrypted Client Hello (ECH) platform desteği
Android 17, ağ iletişimlerinde önemli bir gizlilik iyileştirmesi olan Encrypted Client Hello (ECH) için platform desteği sunuyor. ECH, ilk TLS el sıkışması sırasında Sunucu Adı Göstergesi'ni (SNI) şifreleyen bir TLS 1.3 uzantısıdır. Bu şifreleme, bir uygulamanın bağlandığı alanın ağ aracıları tarafından tanımlanmasını zorlaştırarak kullanıcı gizliliğinin korunmasına yardımcı olur.
Platform artık ağ kitaplıklarının ECH'yi uygulaması için gerekli API'leri içeriyor. Buna, ECH yapılandırmaları içeren HTTPS DNS kayıtlarını sorgulamak için DnsResolver'daki yeni özellikler ve bir alana bağlanırken bu yapılandırmaları ileterek ECH'yi etkinleştirmek için Conscrypt'in SSLEngines ve SSLSockets'indeki yeni yöntemler dahildir. Geliştiriciler, ECH tercihlerini (ör. fırsatçı bir şekilde etkinleştirme veya kullanımını zorunlu kılma) yeni <domainEncryption> öğesi aracılığıyla yapılandırabilir. Bu öğe, Ağ Güvenliği Yapılandırma dosyası içinde yer alır ve global olarak veya alan bazında geçerlidir.
HttpEngine, WebView ve OkHttp gibi popüler ağ kitaplıklarının gelecekteki güncellemelerde bu platform API'lerini entegre etmesi bekleniyor. Bu sayede uygulamaların ECH'yi benimsemesi ve kullanıcı gizliliğini artırması kolaylaşacak.
Daha fazla bilgi için Şifrelenmiş İstemci Merhaba belgesine bakın.
Android kişi seçici
Android 联系人选择工具是一个标准化的可浏览界面,可供用户与您的应用分享联系人。该选择工具适用于搭载 Android 17(API 级别 37)或更高版本的设备,可替代广泛的 READ_CONTACTS 权限,从而保护隐私。您的应用无需请求访问用户的整个通讯簿,而是指定所需的数据字段(例如电话号码或邮箱),然后由用户选择要分享的特定联系人。这会向您的应用授予对所选数据的读取权限,从而确保精细控制,同时通过内置搜索、个人资料切换和多选功能提供一致的用户体验,而无需构建或维护界面。
如需了解详情,请参阅联系人选择工具文档。
Güvenlik
Android 17, cihaz ve uygulama güvenliğini artırmak için aşağıdaki yeni özellikleri ekler.
Android Gelişmiş Koruma Modu (AAPM)
Android Gelişmiş Koruma Modu, Android kullanıcılarına güçlü bir yeni güvenlik özellikleri paketi sunarak kullanıcıları, özellikle de daha yüksek risk altındaki kullanıcıları gelişmiş saldırılardan koruma konusunda önemli bir adım atıyor. İsteğe bağlı bir özellik olarak tasarlanan AAPM, kullanıcıların istediği zaman etkinleştirerek güvenlik korumaları uygulayabileceği tek bir yapılandırma ayarıyla etkinleştirilir.
Bu temel yapılandırmalar arasında bilinmeyen kaynaklardan uygulama yüklenmesini engelleme (yan yükleme), USB veri sinyalini kısıtlama ve Google Play Protect taramasını zorunlu kılma yer alır. Bu yapılandırmalar, cihazın saldırı yüzey alanını önemli ölçüde azaltır.
Geliştiriciler, modun durumunu algılamak için AdvancedProtectionManager API'sini kullanarak bu özellikle entegrasyon yapabilir. Böylece, kullanıcı modu etkinleştirdiğinde uygulamalar otomatik olarak daha sıkı bir güvenlik duruşu benimseyebilir veya yüksek riskli işlevleri kısıtlayabilir.
PQC APK İmzalama
Android now supports a hybrid APK signature scheme to future-proof your app's signing identity against the potential threat of attacks that make use of quantum computing. This feature introduces a new APK Signature Scheme, which lets you pair a classical signing key (such as RSA or EC) with a new post-quantum cryptography (PQC) algorithm (ML-DSA).
This hybrid approach ensures your app remains secure against future quantum attacks while maintaining full backward compatibility with older Android versions and devices that rely on classical signature verification.
Impact on developers
- Apps using Play App Signing: If you use Play App Signing, you can wait for Google Play to give you the option to upgrade a hybrid signature using a PQC key generated by Google Play, ensuring your app is protected without requiring manual key management.
- Apps using self-managed keys: Developers who manage their own signing keys can utilize updated Android build tools (like apksigner) to rotate to a hybrid identity, combining a PQC key with a new classical key. (You must create a new classical key, you cannot reuse the older one.)
Bağlantı
Android 17, cihaz ve uygulama bağlantısını iyileştirmek için aşağıdaki özellikleri ekler.
Kısıtlı uydu ağları
实现优化,使应用能够在低带宽卫星网络上有效运行。
Kullanıcı deneyimi ve sistem arayüzü
Android 17, kullanıcı deneyimini iyileştirmek için aşağıdaki değişiklikleri içerir.
Özel Asistan ses akışı
Android 17, USAGE_ASSISTANT ile oynatmak üzere Asistan uygulamaları için özel bir Asistan ses akışı sunar. Bu değişiklik, Asistan sesini standart medya akışından ayırarak kullanıcıların her iki ses seviyesini de ayrı ayrı kontrol etmesine olanak tanır. Bu sayede, Asistan yanıtlarının sesini açık tutarken medya oynatmayı sessize alma gibi senaryolar mümkün olur.
Yeni MODE_ASSISTANT_CONVERSATION ses moduna erişimi olan asistan uygulamaları, ses seviyesi kontrolünün tutarlılığını daha da artırabilir. Asistan uygulamaları, etkin bir Asistan oturumu hakkında sisteme ipucu vermek için bu modu kullanabilir. Böylece, Asistan akışının etkin USAGE_ASSISTANT oynatma dışında veya bağlı Bluetooth çevre birimleriyle kontrol edilebilmesi sağlanır.
Handoff
Handoff 是 Android 17 中即将推出的一项新功能和 API,应用开发者可以集成该功能,为用户提供跨设备连续性。它允许用户在一台 Android 设备上启动应用 activity,并将其转移到另一台 Android 设备。Handoff 在用户设备的后台运行,并通过接收设备上的各种入口点(例如启动器和任务栏)显示用户附近其他设备上的可用活动。
如果接收设备上已安装并可使用相同的原生 Android 应用,应用可以指定 Handoff 启动该应用。在此应用到应用流程中,用户会通过深层链接进入指定 activity。或者,应用到网页 Handoff 可作为后备选项提供,也可直接通过网址 Handoff 实现。
接力支持是按 activity 实现的。如需启用 Handoff,请为 activity 调用 setHandoffEnabled() 方法。可能需要随切换一起传递其他数据,以便接收设备上重新创建的 activity 可以恢复适当的状态。实现 onHandoffActivityDataRequested() 回调,以返回一个 HandoffActivityData 对象,其中包含指定 Handoff 应如何在接收设备上处理和重新创建 activity 的详细信息。
Canlı güncelleme - Anlamsal renk API'si
在 Android 17 中,实时动态推出了语义着色 API,以支持具有通用含义的颜色。
以下类支持语义着色:
NotificationNotification.MetricNotification.ProgressStyle.PointNotification.ProgressStyle.Segment
填色游戏
- 绿色:与安全相关。 此颜色应在让用户知道您处于安全情况时使用。
- 橙色:用于表示警告和标记物理危险。当用户需要注意设置更好的保护设置时,应使用此颜色。
- 红色:通常表示危险、停止。它应该在需要人们紧急关注的情况下显示。
- 蓝色:中性色,用于提供信息且应从其他内容中脱颖而出的内容。
以下示例展示了如何将语义样式应用于通知中的文本:
val ssb = SpannableStringBuilder()
.append("Colors: ")
.append("NONE", Notification.createSemanticStyleAnnotation(SEMANTIC_STYLE_UNSPECIFIED), 0)
.append(", ")
.append("INFO", Notification.createSemanticStyleAnnotation(SEMANTIC_STYLE_INFO), 0)
.append(", ")
.append("SAFE", Notification.createSemanticStyleAnnotation(SEMANTIC_STYLE_SAFE), 0)
.append(", ")
.append("CAUTION", Notification.createSemanticStyleAnnotation(SEMANTIC_STYLE_CAUTION), 0)
.append(", ")
.append("DANGER", Notification.createSemanticStyleAnnotation(SEMANTIC_STYLE_DANGER), 0)
Notification.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_icon)
.setContentTitle("Hello World!")
.setContentText(ssb)
.setOngoing(true)
.setRequestPromotedOngoing(true)
Android 17 için UWB Downlink-TDoA API
Downlink Time Difference of Arrival (DL-TDoA) ranging lets a device determine its position relative to multiple UWB anchors by measuring the relative arrival times of signals.
For more information and code samples, see UWB Downlink-TDoA API.