Zmiany ograniczeń interfejsu innego niż SDK w Androidzie 13

Android 13 zawiera zaktualizowane listy ograniczonych interfejsów spoza pakietu SDK, które powstały we współpracy z programistami aplikacji na Androida i na podstawie najnowszych testów wewnętrznych. Zanim ograniczymy dostęp do interfejsów innych niż SDK, staramy się zapewnić publiczne alternatywy.

Jeśli Twoja aplikacja nie jest kierowana na Androida 13, niektóre z tych zmian mogą nie mieć na nią 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 używanie jakiejkolwiek metody lub pola spoza pakietu SDK zawsze wiąże się z dużym ryzykiem awarii aplikacji.

Jeśli nie masz pewności, czy Twoja aplikacja używa interfejsów innych niż SDK, możesz ją przetestować, aby to sprawdzić. Jeśli Twoja aplikacja korzysta z interfejsów innych niż SDK, zacznij planować migrację do alternatywnych rozwiązań SDK. Rozumiemy jednak, że niektóre aplikacje mają uzasadnione przypadki użycia interfejsów spoza pakietu SDK. Jeśli nie możesz znaleźć alternatywy dla interfejsu spoza pakietu SDK w przypadku funkcji w aplikacji, poproś o nowy publiczny interfejs API.

Lista zmian w Androidzie 13

Zmiany na liście w Androidzie 13 dotyczą tych kategorii:

Aby zobaczyć pełną listę wszystkich interfejsów innych niż SDK na Androidzie 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 poniższym polu kodu znajdziesz listę wszystkich interfejsów spoza pakietu SDK, które nie były obsł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.

Naszym celem jest zapewnienie dostępności publicznych alternatyw, zanim ograniczymy interfejsy inne niż SDK. Rozumiemy, że Twoja aplikacja może mieć uzasadniony przypadek użycia tych interfejsów. Jeśli interfejs, którego Twoja aplikacja używa we wcześniejszej wersji, jest teraz blokowany w Androidzie 13, musisz poprosić 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.