Zmiany w działaniu: aplikacje kierowane na Androida 17 lub nowszego

Podobnie jak w przypadku poprzednich wersji Androida, w Androidzie 17 wprowadziliśmy zmiany w działaniu, które mogą mieć wpływ na Twoją aplikację. Poniższe zmiany w działaniu dotyczą wyłącznie aplikacji kierowanych na Androida 17 lub nowszego. Jeśli Twoja aplikacja jest kierowana na Androida 17 lub nowszego, zmodyfikuj ją, aby w odpowiednich przypadkach obsługiwała te działania.

Zapoznaj się też z listą zmian w działaniu, które wpływają na wszystkie aplikacje działające na Androidzie 17 niezależnie od targetSdkVersion aplikacji.

Główna funkcja

Android 17 zawiera te zmiany, które modyfikują lub rozszerzają różne podstawowe funkcje systemu Android.

Nowa implementacja MessageQueue bez blokad

从 Android 17 开始,以 Android 17 或更高版本为目标平台的应用会收到 android.os.MessageQueue 的新无锁实现。新实现可提升性能并减少丢帧,但可能会破坏依赖于 MessageQueue 私有字段和方法的客户端。

如需了解详情(包括缓解策略),请参阅 MessageQueue 行为变更指南

Statyczne pola końcowe są teraz niemodyfikowalne

在 Android 17 或更高版本上运行且以 Android 17 或更高版本为目标平台的应用无法更改 static final 字段。如果应用尝试使用反射来更改 static final 字段,则会导致 IllegalAccessException。尝试通过 JNI API(例如 SetStaticLongField())修改这些字段中的任何一个都会导致应用崩溃。

Ułatwienia dostępu

W Androidzie 17 wprowadziliśmy te zmiany, aby poprawić dostępność.

Ułatwienia dostępu do złożonego pisania na klawiaturze fizycznej za pomocą edytora IME

此功能引入了新的 AccessibilityEventTextAttribute API,以增强屏幕阅读器针对 CJKV 语言输入的语音反馈。CJKV IME 应用现在可以指示在文本撰写期间是否已选择文本转换候选对象。具有编辑字段的应用可以在发送文本更改无障碍事件时指定文本更改类型。例如,应用可以指定在文本撰写期间发生了文本更改,或者文本更改是由提交导致的。这样做可让屏幕阅读器等无障碍服务根据文本修改的性质提供更精确的反馈。

应用采用量

  • IME 应用:在编辑字段中设置正在撰写的文本时,IME 可以使用 TextAttribute.Builder.setTextSuggestionSelected() 来指明是否选择了特定的转换候选字词。

  • 具有“编辑字段”权限的应用:维护自定义 InputConnection 的应用可以通过调用 TextAttribute.isTextSuggestionSelected() 来检索候选选择数据。然后,这些应用在调度 TYPE_VIEW_TEXT_CHANGED 事件时应调用 AccessibilityEvent.setTextChangeTypes()。以 Android 17 为目标平台且使用标准 TextView 的应用默认会启用此功能。(也就是说,TextView 将负责从 IME 检索数据,并在向无障碍服务发送事件时设置文本更改类型)。

  • 无障碍服务:处理 TYPE_VIEW_TEXT_CHANGED 事件的无障碍服务可以调用 AccessibilityEvent.getTextChangeTypes() 来识别修改的性质,并相应地调整其反馈策略。

Bezpieczeństwo

Android 17 wprowadza te ulepszenia zabezpieczeń urządzeń i aplikacji:

Bezpieczeństwo aktywności

在 Android 17 中,平台继续向“默认安全”架构转变,引入了一系列旨在缓解严重程度较高的漏洞利用(例如网络钓鱼、交互劫持和混淆代理攻击)的增强功能。此更新要求开发者明确选择启用新的安全标准,以保持应用兼容性和用户保护。

对开发者的主要影响包括:

  • BAL 强化和改进的选择启用机制:我们正在通过将保护范围扩展到 IntentSender 来完善后台 activity 启动 (BAL) 限制。 开发者必须弃用旧版 MODE_BACKGROUND_ACTIVITY_START_ALLOWED 常量。相反,您应采用精细的控制措施,例如 MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE,该措施会将 activity 启动限制在调用应用可见的场景中,从而显著减小攻击面。
  • 采用工具:开发者应利用严格模式和更新后的 lint 检查来识别旧版模式,并确保做好准备,以满足未来的目标 SDK 要求。

Ochrona localhosta

为了提高平台安全性和用户隐私保护水平,Android 17 引入了新的安装时权限 USE_LOOPBACK_INTERFACE。此变更限制了通过环回接口(例如 127.0.0.1::1)进行的跨应用和跨资料通信,之前使用 INTERNET 权限时,这种通信是隐式允许的。对于以 Android 17 或更高版本为目标平台的应用,以下规则适用:

  • 需要双方同意:默认情况下,系统现在会阻止跨应用和跨资料通信。为了成功建立连接,发送方应用和接收方应用都必须在其清单中明确声明 USE_LOOPBACK_INTERFACE 权限。
  • 应用内流量不受影响:同一应用内的环回通信(应用内通信)不受影响,无需此新权限。
  • 目标 SDK 行为
    • 应用以 Android 17 或更高版本为目标平台:必须明确请求该权限。如果缺少此权限,套接字操作(例如 TCP 连接或 UDP 发送)会失败,通常会返回 EPERM(不允许的操作)错误。
    • 应用以 API 级别 36 或更低级别为目标平台:该权限在 INTERNET 上被视为拆分权限。如果应用持有 INTERNET,则以较低 API 级别为目标平台的应用会自动获得此权限。
  • 兼容性警告:如果接收应用将其目标更新为 Android 17,但未能请求此权限,则来自其他应用的传入连接将被拒绝,即使发送应用以较低的 API 级别为目标平台也是如此。

Domyślne włączanie CT

如果应用以 Android 17 或更高版本为目标平台,则默认启用证书透明度 (CT)。(在 Android 16 上,CT 可用,但应用必须选择启用。)

Bezpieczniejsza natywna DCL-C

如果您的应用以 Android 17 或更高版本为目标平台,则 Android 14 中针对 DEX 和 JAR 文件引入的更安全的动态代码加载 (DCL) 保护功能现在也适用于原生库。

使用 System.load() 加载的所有原生文件都必须标记为只读。 否则,系统会抛出 UnsatisfiedLinkError

我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。

Formaty urządzeń

Android 17 wprowadza te zmiany, aby poprawić komfort użytkowania na urządzeniach o różnych rozmiarach i formach.

Zmiany w interfejsie Platform API, które powodują ignorowanie ograniczeń dotyczących orientacji, możliwości zmiany rozmiaru i formatu obrazu na dużych ekranach (sw>=600dp)

我们在 Android 16 中引入了平台 API 变更,以忽略以 API 级别 36 或更高级别为目标的应用在大屏 (sw >= 600dp) 设备上的屏幕方向、宽高比和尺寸调整能力限制。开发者可以选择使用 SDK 36 停用这些变更,但对于以 Android 17 或更高版本为目标平台的应用,此停用选项将不再可用。

如需了解详情,请参阅忽略了有关屏幕方向和可调整大小性的限制