Zmiany ograniczeń interfejsu innego niż SDK w Androidzie 13

Android 13 zawiera zaktualizowane listy ograniczonych interfejsów innych niż SDK, które powstały na podstawie współpracy z programistami Androida i najnowszych testów wewnętrznych. W miarę możliwości przed ograniczeniem interfejsów innych niż SDK udostępniamy publiczne alternatywy.

Jeśli Twoja aplikacja nie jest kierowana na Androida 13, niektóre z tych zmian mogą nie mieć na Ciebie natychmiastowego wpływu. Obecnie możesz używać niektórych interfejsów spoza SDK (w zależności od docelowego poziomu interfejsu API aplikacji), ale korzystanie z dowolnej metody lub pola spoza SDK zawsze wiąże się z wysokim ryzykiem awarii aplikacji.

Jeśli nie masz pewności, czy Twoja aplikacja używa interfejsów innych niż SDK, możesz to sprawdzić, testując ją. Jeśli Twoja aplikacja korzysta z interfejsów spoza SDK, zacznij planować migrację na alternatywne rozwiązania SDK. Rozumiemy jednak, że w przypadku niektórych aplikacji używanie interfejsów innych niż SDK jest uzasadnione. Jeśli nie możesz znaleźć alternatywy dla używania interfejsu innego niż SDK w przypadku funkcji w aplikacji, poproś o nowy publiczny interfejs API.

Lista zmian w Androidzie 13

Zmiany na liście w Androidzie 13 należą do tej kategorii:

  • Interfejsy inne niż SDK, które nie były obsługiwane w Androidzie 12 (poziom API 31), a które są blokowane w Androidzie 13.

Pełną listę wszystkich interfejsów innych niż SDK w Androidzie 13 znajdziesz w tym pliku:

Plik: hiddenapi-flags.csv

Suma kontrolna SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

Interfejsy inne niż SDK, które są teraz blokowane w Androidzie 13

W poniższym polu kodu znajdziesz listę wszystkich interfejsów innych niż SDK, które były nieobsługiwane w Androidzie 12 (API na poziomie 31) i są blokowane w Androidzie 13 (API na poziomie 33). Oznacza to, że te interfejsy należą do listy max-target-s, więc aplikacja może ich używać tylko wtedy, gdy jest kierowana na Androida 12 (API na poziomie 31) lub starszego.

Chcemy mieć pewność, że zanim ograniczymy interfejsy inne niż SDK, będą dostępne publiczne alternatywy. Rozumiemy, że Twoja aplikacja może mieć uzasadniony powód, aby z nich korzystać. Jeśli interfejs, którego aplikacja używa w poprzedniej wersji, jest teraz blokowany w Androidzie 13, poproś o nowy publiczny interfejs API dla tego interfejsu.

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.