Cambios en el comportamiento: apps orientadas a Android 17 o versiones posteriores

Al igual que las versiones anteriores, Android 17 incluye cambios de comportamiento que podrían afectar tu app. Los siguientes cambios se aplican exclusivamente a las apps orientadas a Android 17 o versiones posteriores. Si tu app está orientada a Android 17 o versiones posteriores, debes modificarla para que admita estos comportamientos, cuando corresponda.

Asegúrate de revisar también la lista de cambios en el comportamiento que afectan a todas las apps que se ejecutan en Android 17, independientemente de la targetSdkVersion de tu app.

Funcionalidad principal

Android 17 incluye los siguientes cambios que modifican o expanden varias capacidades principales del sistema Android.

Nueva implementación sin bloqueo de MessageQueue

A partir de Android 17, las apps que se segmentan para Android 17 o versiones posteriores reciben una nueva implementación sin bloqueo de android.os.MessageQueue. La nueva implementación mejora el rendimiento y reduce los fotogramas perdidos, pero puede dañar los clientes que reflejan los campos y métodos privados de MessageQueue.

Para obtener más información, incluidas las estrategias de mitigación, consulta la guía sobre el cambio de comportamiento de MessageQueue.

Accesibilidad

Android 17 incluye los siguientes cambios para mejorar la accesibilidad.

Compatibilidad con la accesibilidad de la escritura compleja con IME en el teclado físico

Esta función presenta nuevas APIs de AccessibilityEvent y TextAttribute para mejorar los comentarios por voz del lector de pantalla para la entrada de idiomas CJKV. Las apps de IME de CJKV ahora pueden indicar si se seleccionó un candidato de conversión de texto durante la composición de texto. Las apps con campos de edición pueden especificar tipos de cambios de texto cuando envían eventos de accesibilidad de texto cambiado. Por ejemplo, las apps pueden especificar que se produjo un cambio de texto durante la composición de texto o que un cambio de texto se produjo a partir de una confirmación. Esto permite que los servicios de accesibilidad, como los lectores de pantalla, proporcionen comentarios más precisos según la naturaleza de la modificación del texto.

Adopción de apps

  • Apps de IME: Cuando se configura la composición de texto en campos de edición, los IME pueden usar TextAttribute.Builder.setTextSuggestionSelected() para indicar si se seleccionó un candidato de conversión específico.

  • Apps con campos de edición: Las apps que mantienen un InputConnection personalizado pueden recuperar datos de selección de candidatos llamando a TextAttribute.isTextSuggestionSelected(). Luego, estas apps deben llamar a AccessibilityEvent.setTextChangeTypes() cuando envíen eventos TYPE_VIEW_TEXT_CHANGED. Las apps segmentadas para Android 17 que usan el TextView estándar tendrán esta función habilitada de forma predeterminada. (Es decir, TextView controlará la recuperación de datos del IME y la configuración de los tipos de cambio de texto cuando se envíen eventos a los servicios de accesibilidad).

  • Servicios de accesibilidad: Los servicios de accesibilidad que procesan eventos de TYPE_VIEW_TEXT_CHANGED pueden llamar a AccessibilityEvent.getTextChangeTypes() para identificar la naturaleza de la modificación y ajustar sus estrategias de comentarios en consecuencia.

Seguridad

Android 17 incluye las siguientes mejoras en la seguridad de los dispositivos y las apps.

Seguridad de la actividad

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

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

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

Protecciones de localhost

为了提高平台安全性和用户隐私保护水平,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 级别为目标平台也是如此。

Habilita la CT de forma predeterminada

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

DCL nativa más segura: C

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

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

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

Factores de forma del dispositivo

Android 17 incluye los siguientes cambios para mejorar la experiencia del usuario en una variedad de tamaños y factores de forma de dispositivos.

Cambios en la API de la plataforma para ignorar las restricciones de orientación, cambio de tamaño y relación de aspecto en pantallas grandes (sw>=600 dp)

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

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