Actualizaciones de las restricciones de interfaces que no pertenecen al SDK en Android 13

Android 13 incluye listas actualizadas de este tipo de interfaces que están basadas en la colaboración con desarrolladores de Android y las pruebas internas más recientes. Siempre que sea posible, nos aseguramos de que las alternativas públicas estén disponibles antes de restringir las interfaces que no pertenecen al SDK.

Si tu app no está orientada a Android 13, es posible que algunos de estos cambios no te afecten de inmediato. Sin embargo, aunque actualmente puedes usar algunas interfaces que no pertenecen al SDK (según el nivel de API objetivo al que esté orientada la app), utilizar cualquier método o campo que no pertenezca al SDK siempre implica un gran riesgo de error para la app.

En caso de no saber con certeza si tu app usa este tipo de interfaces, puedes probarla para verificarlo. Si tu app depende de interfaces que no pertenezcan al SDK, deberías planificar una migración hacia otras alternativas que sí lo hagan. Sin embargo, sabemos que algunas apps tienen casos prácticos válidos para usarlas. Si no encuentras una alternativa al uso de una interfaz que no pertenece al SDK para una función de tu app, deberías solicitar una nueva API pública.

Cambios de lista para Android 13

Los cambios de lista en Android 13 pertenecen a la siguiente categoría:

  • Interfaces que no pertenecen al SDK y no se admitían en Android 12 (nivel de API 31) y están bloqueadas en Android 13

Para obtener una lista completa de todas las interfaces que no pertenecen al SDK de Android 13, descarga el siguiente archivo:

Archivo: hiddenapi-flags.csv

Suma de comprobación SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

Interfaces que no pertenecen al SDK y que ahora están bloqueadas en Android 13

En el siguiente cuadro de código, se enumeran todas las interfaces que no pertenecen al SDK y no se admitían en Android 12 (nivel de API 31) y están bloqueadas en Android 13 (nivel de API 33). Es decir, estas interfaces pertenecen a la lista max-target-s, por lo que tu app solo puede usarlas si se orienta a Android 12 (nivel de API 31) o versiones anteriores.

Nuestro objetivo es asegurarnos de que las alternativas públicas estén disponibles antes de restringir las interfaces que no pertenecen al SDK. Sabemos que tu app podría tener un caso de uso válido para usar estas interfaces. Si una interfaz que usa tu app en una versión anterior ahora se bloquea en Android 13, debes solicitar una nueva API pública para esa interfaz.

Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V # Use setRecentsScreenshotEnabled() instead.
Landroid/os/PowerManager;->isLightDeviceIdleMode()Z # Use isDeviceLightIdleMode() instead.
Landroid/os/Process;->setArgV0(Ljava/lang/String;)V # In general, do not try to change the process name. If you must change the process name (for instance, for debugging), you can use pthread_setname_np() instead, though be aware that doing this might confuse the system.
Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache(I)V # Use android.accessibilityservice.AccessibilityService#clearCache() instead.