Android 13 zawiera zaktualizowane listy ograniczonych interfejsów innych niż SDK, które zostały opracowane we współpracy z deweloperami Androida i na podstawie najnowszych testów wewnętrznych. Zawsze, gdy to możliwe, sprawdzamy, czy dostępne są publiczne alternatywy, zanim zaczniemy ograniczać interfejsy inne niż SDK.
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 pakietu SDK (w zależności od docelowego poziomu interfejsu API aplikacji), ale korzystanie z metod lub pól spoza pakietu 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 przetestować ją, aby się tego dowiedzieć. Jeśli Twoja aplikacja korzysta z interfejsów spoza pakietu SDK, zaplanuj migrację do alternatywnych pakietów SDK. Zdajemy sobie jednak sprawę, że w niektórych przypadkach interfejsy inne niż SDK mogą być przydatne. Jeśli nie możesz znaleźć alternatywy dla interfejsu spoza pakietu SDK, który jest używany w funkcji Twojej aplikacji, poproś o nowy publiczny interfejs API.
Lista zmian w Androidzie 13
Zmiany listy w Androidzie 13 mieszczą się w tych kategoriach:
- Interfejsy inne niż SDK, które nie były obsługiwane w Androidzie 12 (poziom API 31), a są zablokowane w Androidzie 13.
Aby uzyskać pełną listę wszystkich interfejsów innych niż SDK na Androida 13, pobierz ten plik:
Plik: hiddenapi-flags.csv
Suma kontrolna SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3
Interfejsy inne niż SDK, które są teraz blokowane w Androidzie 13
W tym polu kodu znajduje się lista wszystkich interfejsów innych niż interfejsy pakietu SDK, które nie były obsługiwane w Androidzie 12 (poziom API 31), a które są blokowane w Androidzie 13 (poziom API 33). Oznacza to, że te interfejsy należą do listy max-target-s
, więc Twoja aplikacja może używać tych interfejsów tylko wtedy, gdy jest kierowana na Androida 12 (poziom API 31) lub starszego.
Naszym celem jest zapewnienie dostępności publicznych alternatyw przed ograniczeniem interfejsów innych niż SDK. Zdajemy sobie sprawę, że Twoja aplikacja może mieć uzasadnione powody do korzystania z tych interfejsów. Jeśli interfejs, którego Twoja aplikacja używa w poprzedniej wersji, jest teraz zablokowany w Androidzie 13, poproś o nowy publiczny interfejs API.
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.