Zmiany dotyczące platformy zgodności (Android 12)

Rysunek 1. Na ekranie Zmiany zgodności aplikacji w opcjach dla deweloperów znajdziesz listę zmian, które możesz włączyć lub wyłączyć.

Na tej stronie opisano każdą zmianę zachowania, która jest częścią ram kompatybilności w Androidzie 12 (poziom API 31). Korzystaj z tej listy w połączeniu z opcjami dla deweloperów i poleceniami ADB, aby testować i debugować aplikację podczas przygotowywania jej do obsługi i ustawienia na Androida 12.

Oto niektóre czynności, które można wykonać za pomocą narzędzi platformy zgodności:

  • Przetestuj kierowane zmiany bez zmiany targetSdkVersion. Za pomocą przełączników możesz wymusić włączenie określonych ukierunkowanych zmian działania, aby ocenić ich wpływ na istniejącą aplikację.
  • Skup się na testowaniu tylko konkretnych zmian. Zamiast wprowadzić zmiany we wszystkich wybranych zmianach jednocześnie, za pomocą przełączników z wyjątkiem tych, które chcesz przetestować.
  • Zarządzanie przełącznikami w narzędziu adb Za pomocą poleceń adb możesz: włączanie i wyłączanie możliwych do przełączenia zmian w teście automatycznym dla środowiska.
  • Szybsze debugowanie dzięki standardowym identyfikatorom zmian. Każda z możliwością przełączania zmian ma unikalny identyfikator i nazwa, które pozwalają szybko debugować główną przyczynę dane wyjściowe dziennika.

Szczegółowe informacje o używaniu narzędzi w przypadku każdego z tych zastosowań znajdziesz w artykule Narzędzia dotyczące ram kompatybilności.

Zmiany w działaniu uwzględnione w ramach zgodności

Lista w tej sekcji opisuje każdą zmianę zachowania uwzględnioną w platformy zgodności w Androidzie 12.

Listę zmian możesz filtrować według stanu Stan domyślny.

Zmiany zachowania dodane do systemu sprawdzania zgodności w Androidzie 12

ALWAYS_SANDBOX_DISPLAY_APIS

Identyfikator zmiany: 185004937
Stan domyślny: wyłączone we wszystkich aplikacjach.

Gdy ta opcja jest włączona, stosuje do pakietu piaskownicę interfejsu Display API bez względu na tryb okna. Interfejs API reklam displayowych zawsze zapewnia poza nią.

Więcej informacji o tej zmianie znajdziesz w sekcji dotyczącej Androida 12. zmiana zachowania strona o Wyświetl wycofane metody.

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

Identyfikator zmiany: 163400105
Stan domyślny: włączona w aplikacjach kierowanych na Androida 12 (poziom interfejsu API 32) lub nowszego.

Od Androida 12 platforma może wyświetlać sugestie inne niż tekstowe (np. obrazy) przy użyciu rozszerzonego autouzupełniania (zobacz usługi autouzupełniania). Aby aplikacja mogła obsługiwać te sugestie, musi zwykle implementować interfejs API OnReceiveContentListener.

Aby ułatwić stosowanie tego interfejsu API w przypadku aplikacji, które wcześniej implementowały interfejs InputConnection.commitContent(InputContentInfo, int, Bundle), ponownie używamy tego interfejsu jako rozwiązania zastępczego, jeśli aplikacja nie ma jeszcze zaimplementowanego interfejsu OnReceiveContentListener. To rozwiązanie zastępcze jest włączone tylko na Androidzie 12 (poziom API 31). Ten identyfikator zmiany wyłącza substytut, co oznacza, że aplikacje kierowane na Androida 12 (poziom API 32) i nowsze muszą zaimplementować interfejs API OnReceiveContentListener, aby akceptować sugestie inne niż tekstowe.

BLOCK_FLAG_SLIPPERY

Zmień identyfikator: 157929241
Stan domyślny: włączone w przypadku wszystkich aplikacji.

W przypadku aplikacji działających na Androidzie 12 (poziom interfejsu API 31) sprawdza, czy FLAG_SLIPPERY jest używane we wszystkich oknach w tej aplikacji. Spodziewamy się, że ta flaga będzie prawdopodobnie używana tylko przez komponenty systemu, ponieważ nieobsługiwane pole. W takiej sytuacji dostęp do tych treści będzie ograniczony.

BLOCK_GPS_STATUS_USAGE

Identyfikator zmiany: 144027538
Stan domyślny: włączony w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje: GpsStatus Użycie interfejsu API należy zastąpić interfejsami API GnssStatus.

BLOCK_IMMUTABLE_PENDING_INTENTS

Identyfikator zmiany: 171317480
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) i nowszych obiekty PendingIntent, które są przekazywane do interfejsów API lokalizacji, będą generować błąd IllegalArgumentException..

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

Identyfikator zmiany: 169887240
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) i nowsze wersje, interfejsów API systemu LocationRequest nie można używać z PendingIntent żądań lokalizacji.

BLOCK_UNTRUSTED_TOUCHES

Zmień identyfikator: 158002302
Stan domyślny: włączone w przypadku wszystkich aplikacji.

Aby zapewnić bezpieczeństwo systemu i wygodę użytkowników, Android 12 uniemożliwia aplikacjom korzystanie z zdarzeń dotykowych, gdy nakładka blokuje aplikację w niebezpieczny sposób.

Więcej informacji o tej zmianie znajdziesz w artykule Zablokowanie zdarzeń dotyku pochodzących z nieznanego źródła.

CALL_ACTIVITY_RESULT_BEFORE_RESUME

Zmień identyfikator: 78294732
Stan domyślny: włączona w aplikacjach kierowanych na Androida 12 (poziom interfejsu API 32) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 32) lub nowszego poprawia cykl życia wyniku aktywności, aby zagwarantować, że aktywność otrzyma wynik aktywności tuż przed wznowieniem.

CAMERA_MIC_INDICATORS_NOT_PRESENT

Identyfikator zmiany: 162547999
Stan domyślny: wyłączone we wszystkich aplikacjach.

Wskazuje, że urządzenie obsługuje wskaźniki aparatu i mikrofonu. Jeśli jest obecny, zwraca wartość false, ponieważ metoda CompatChanges#isChangeEnabled zwraca wartość true, jeśli identyfikator zmiany jest nieobecny.

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

Zmień identyfikator: 146211400
Stan domyślny: włączona w aplikacjach kierowanych na Androida 12 (poziom interfejsu API 32) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 32) i nowsze wersje menedżer pakietów nie zainstaluje pakietu z nieprawidłowymi grupami uprawnień. Grupy uprawnień powinny być współdzielone tylko przez aplikacje, które współdzielą certyfikat. Jeśli uprawnienie należy do grupy, musisz też zdefiniować tę grupę.

CHANGE_ID_AUTH_STATE_DENIED

Identyfikator zmiany: 181350407
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji klienckich kierowanych na Androida 12 (poziom API 31) lub nowszego, gdy są one w stanie odmowy autoryzacji i próbują wysłać wiadomość do nanoaplikacji, SecurityException zostanie wyrzucony.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

Identyfikator zmiany: 136069189
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego SecurityException jest zgłaszany, gdy nie mają one uprawnienia HIGH_SAMPLING_RATE_SENSORS, działają w trybie debugowania i wymagają częstotliwości próbkowania wyższej niż 200 Hz.

DELIVER_HISTORICAL_LOCATIONS

Identyfikator zmiany: 73144566
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje klienty lokalizacji mogą otrzymywać dane historyczne o lokalizacji (sprzed obecnie) w pewnych okolicznościach.

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

Identyfikator zmiany: 181658987
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Aplikacje kierowane na Androida 12 (poziom interfejsu API 31) i nowsze wersje zapewniają zgodność wsteczną w przypadku zmian w TelephonyDisplayInfo.

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

Identyfikator zmiany: 170503758
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego platforma może ograniczyć częstotliwość generowania klatek do dzielnika częstotliwości odświeżania, jeśli jest to bardziej pożądane (na przykład jeśli aplikacja wywołuje funkcję Surface.setFrameRate(float, int)). Aplikacje będą otrzymywać wywołania zwrotne Choreographer.postFrameCallback(Choreographer.FrameCallback)i będzie na nie wywierana presja przy ograniczonej częstotliwości generowania klatek. Aplikacje używają uprawnień Display.getRefreshRate() i Display.Mode.getRefreshRate(), aby poznać częstotliwość odświeżania. Aby zezwolić na wyświetlanie, Display.getRefreshRate() zawsze zwraca liczbę klatek aplikacji, a nie częstotliwość odświeżania fizycznego ekranu w aplikacjach do prawidłowego tempa klatek. Display.Mode.getRefreshRate() zwróci częstotliwość wyświetlania klatek aplikacji, jeśli została skompilowana w poprzedniej wersji, a od Androida 12 (poziom interfejsu API 31) zwróci częstotliwość odświeżania fizycznego ekranu.

DOWNSCALED

Zmień identyfikator: 168419799
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Ta zmiana to strażnik buforowania całego bufora według aplikacji zmian. Włączenie tej zmiany umożliwia zastosowanie tych czynników skalowania:

Gdy ta zmiana zostanie włączona w przypadku pakietu aplikacji, aplikacja zostanie zmuszona do zmiany rozmiaru do najwyższego, włączonego współczynnika skalowania. Na przykład 80% to używany, jeśli zarówno 80%, jak i 70% (DOWNSCALE_80 i DOWNSCALE_70) są .

DOWNSCALE_30

Identyfikator zmiany: 189970040
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 30% powierzchni w pionie i w poziomie. do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_35

Identyfikator zmiany: 189969749
Stan domyślny: wyłączone dla wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 35% powierzchni w pionie i poziomie. do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_40

Identyfikator zmiany: 189970038
Stan domyślny: wyłączone dla wszystkich aplikacji.

Jeśli włączysz też opcję DOWNSCALED, aplikacja będzie działać z założenia, że jest uruchomiona na wyświetlaczu o rozdzielczości w poziomie i w pionie równej 40% rzeczywistej rozdzielczości wyświetlacza.

DOWNSCALE_45

Zmień identyfikator: 189969782
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jeśli jest wyświetlana na ekranie, 45% obszaru obrazu w pionie i poziomie do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_50

Zmień identyfikator: 176926741
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 50% powierzchni w pionie i w poziomie. do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_55

Identyfikator zmiany: 189970036
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Jeśli włączona jest też opcja DOWNSCALED, w przypadku pakietu z tą zmianą aplikacja zakłada, że działa na wyświetlaczu o rozdzielczości w poziomie i w pionowej równej 55% rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_60

Identyfikator zmiany: 176926771
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 60% obszaru pionowego i poziomego do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_65

Identyfikator zmiany: 189969744
Stan domyślny: wyłączone we wszystkich aplikacjach.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 65% powierzchni w pionie i poziomie. do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_70

Zmień identyfikator: 176926829
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 70% obszaru pionowego i poziomego do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_75

Identyfikator zmiany: 189969779
Stan domyślny: wyłączone we wszystkich aplikacjach.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 75% powierzchni w pionie i poziomie. do rozdzielczości rzeczywistego wyświetlacza.

DOWNSCALE_80

Identyfikator zmiany: 176926753
Stan domyślny: wyłączone we wszystkich aplikacjach.

Jeśli włączona jest też opcja DOWNSCALED, włączenie tej zmiany w przypadku pakietu spowoduje, że aplikacja będzie zakładać, że działa na wyświetlaczu o 80% rozdzielczości pionowej i poziomej rzeczywistego wyświetlacza.

DOWNSCALE_85

Zmień identyfikator: 189969734
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Jeśli włączona jest też opcja DOWNSCALED, w przypadku pakietu ta zmiana spowoduje, że aplikacja będzie zakładać, że działa na wyświetlaczu o 85% rozdzielczości pionowej i poziomej rzeczywistego wyświetlacza.

DOWNSCALE_90

Zmień identyfikator: 182811243
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy DOWNSCALED też jest jest włączony, włączenie tej zmiany w pakiecie wymusza na aplikacji Jest on wyświetlany na wyświetlaczu i ma 90% powierzchni w pionie i poziomie. do rozdzielczości rzeczywistego wyświetlacza.

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

Identyfikator zmiany: 157629738
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Aplikacje na Androida TV kierowane na Androida 12 (poziom interfejsu API 31) lub nowszego powinny obsługiwać dowolny rozmiar okna, w tym większy niż 1080p. Aplikacje kierowane na starsze wersje Androida nie oczekują, że otrzymają okna większe niż 1080p, więc w razie potrzeby są one zmniejszane do 1080p.

DROP_CLOSE_SYSTEM_DIALOGS

Zmień identyfikator: 174664120
Stan domyślny: włączone w przypadku wszystkich aplikacji.

Aby zwiększyć kontrolę użytkownika podczas interakcji z aplikacjami i systemem, od Androida 12 działanie intencji ACTION_CLOSE_SYSTEM_DIALOGS jest wycofane.

Więcej informacji o tej zmianie znajdziesz w artykule Aplikacje nie mogą zamykać okien systemowych.

ENABLE_CHECKS_FOR_PRIVATE_FILES

Identyfikator zmiany: 172100307
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Aplikacje kierowane na Androida 12 (poziom interfejsu API 31) lub nowszego nie mogą wstawiać ani aktualizować plików prywatnych za pomocą dostawcy multimediów.

ENABLE_DEFERRED_SCAN

Identyfikator zmiany: 180326732
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

Włącz tę opcję, aby opóźnić skanowanie, które zostało uruchomione w ramach MediaProvider#update().

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

Identyfikator zmiany: 157233955
Stan domyślny: włączony w przypadku aplikacji kierowanych na Androida 12 (poziom 31 interfejsu API) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje włącza ochronę READ_PHONE_STATE w przypadku wysyłania zapytań do interfejsów API i powiadomień o stanie wywołania, takich jak TelecomManager#getCallState. TelephonyManager.getCallStateForSubscription() i TelephonyCallback.CallStateListener

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

Identyfikator zmiany: 183407956
Stan domyślny: włączony w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze ustawienie włącz READ_PHONE_NUMBERS lub READ_PRIVILEGED_PHONE_STATE w getPhoneAccount(PhoneAccountHandle).

ENABLE_INCLUDE_ALL_VOLUMES

Zmień identyfikator: 182734110
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Włącz tę opcję, aby uwzględnić wiersze bazy danych zawierające pliki z niedawno odinstalowanego woluminu w: MediaProvider#query.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

Identyfikator zmiany: 178209446
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Włącz tę opcję, aby umożliwić aplikacjom z uprawnieniem Manifest.permission.MANAGE_EXTERNAL_STORAGE żądanie dostępu do surowej pamięci zewnętrznej.

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

Identyfikator zmiany: 185199076
Stan domyślny: włączony w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego wszystkie nieprecyzyjne alarmy muszą mieć minimalny rozmiar okna, który powinien wynosić około kilku minut. Praktycznie wszystkie alarmy wymagające mniejsze okna są takie same jak alarmy precyzyjne i powinny używać odpowiednich dostarczonych interfejsów API, takich jak setExact(int, long, PendingIntent) Nieprecyzyjne alarmy z krótszymi oknami zostaną wydłużone przez system.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

Identyfikator zmiany: 142191088
Stan domyślny: Włączone w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

Aplikacje kierowane na Androida 12 (poziom interfejsu API 31) i nowsze wersje muszą zadeklarować zależności od publicznych natywnych bibliotek udostępnionych, które są definiowane przez producenta urządzenia za pomocą tagu uses-native-library w: AndroidManifest.xml. Jeśli nie uda się spełnić wymagań dotyczących zależności (np. jedna z zależności nie istnieje), menedżer pakietów nie zainstaluje aplikacji. Zależność można oznaczyć jako opcjonalną, używając atrybutu android:required w tagu. W takim przypadku niespełnienie wymagań dotyczących zależności nie spowoduje przerwania instalacji.

Po zainstalowaniu aplikacji udostępniane są tylko natywne biblioteki udostępnione określone w pliku manifestu aplikacji. Dzwonię do: dlopen wł. natywna biblioteka współdzielona, która nie występuje w manifeście aplikacji, przestanie działać, nawet jeśli faktycznie istnieje na urządzeniu.

ENFORCE_STRICT_QUERY_BUILDER

Identyfikator zmiany: 143231523
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Jeśli ta opcja jest włączona, SQLiteQueryBuilder sprawdza wszystkie CalendarProvider2 zapytania pod kątem złośliwych argumentów.

FGS_BG_START_RESTRICTION_CHANGE_ID

Identyfikator zmiany: 170668199
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze uprawnienia określa, kiedy aplikacje mogą uruchamiać usługi na pierwszym planie, gdy działają w tle.

FGS_START_EXCEPTION_CHANGE_ID

Zmień identyfikator: 174041399
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowszych system może wyrzucić błąd IllegalStateException, jeśli aplikacja próbuje uruchomić usługę na pierwszym planie, gdy działa w tle.

FINISH_INPUT_NO_FALLBACK_CONNECTION

Identyfikator zmiany: 156215187
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego wykonaj InputConnection, gdy urządzenie non-interactive

Jeśli włączy je bieżący kanał input method, obecne połączenie wejściowe będzie finished, gdy urządzenie przestanie być interaktywne.

Jeśli jej nie włączysz, obecne połączenie wejściowe zostanie dyskretnie dezaktywowane, gdy urządzenia przestaną być interaktywne, onFinishInput() i onStartInput() jest wysyłana, gdy urządzenie ponownie stanie się interaktywne.

FORCE_DISABLE_HEVC_SUPPORT

Zmień identyfikator: 174227820
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Wymusić wyłączenie obsługi formatu HEVC przez aplikację. Aplikacje powinny deklarować obsługiwane funkcje multimediów w pliku manifestu, ale ta flaga może być używana do wymuszania w aplikacji braku obsługi HEVC, co spowoduje wymuszenie transkodowania podczas uzyskiwania dostępu do multimediów zakodowanych w HEVC. Ustawienie tego parametru zastępuje wszelkie domyślne ustawienia na poziomie systemu operacyjnego dla aplikacji. Domyślnie jest ona wyłączona, co oznacza, że mają pierwszeństwo ustawienia domyślne systemu operacyjnego. Jeśli zarówno ta flaga, jak i Włączono FORCE_ENABLE_HEVC_SUPPORT, system operacyjny ignoruje obie flagi.

FORCE_ENABLE_HEVC_SUPPORT

Zmień identyfikator: 174228127
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Wymuś włączenie przez aplikację obsługi multimediów HEVC powinni zadeklarować w pliku manifestu obsługiwane możliwości w zakresie multimediów ale tej flagi można użyć do wymuszenia przez aplikację obsługi HEVC, dlatego oraz uniknąć transkodowania przy dostępie do multimediów zakodowanych w HEVC. Ustawienie tego parametru zastępuje wszelkie domyślne ustawienia na poziomie systemu operacyjnego dla aplikacji. Domyślnie jest ona wyłączona, co oznacza, że mają zastosowanie ustawienia domyślne systemu operacyjnego. Jeśli oba ta flaga i FORCE_DISABLE_HEVC_SUPPORT są włączone, system operacyjny ignoruje obie flagi.

FORCE_NON_RESIZE_APP

Zmień identyfikator: 181136395
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Wymusza na pakietach, do których jest stosowany, niemożność zmiany rozmiaru.

FORCE_RESIZE_APP

Identyfikator zmiany: 174042936
Stan domyślny: wyłączone we wszystkich aplikacjach.

Wymusza zmianę rozmiaru pakietów, do których jest stosowany. Zezwalam na zmianę rozmiaru tylko w trybie pełnoekranowym, a nie na wymuszenie trybu wielu okien z możliwością zmiany rozmiaru.

HIDE_PROP_ICUBINARY_DATA_PATH

Identyfikator zmiany: 171979766
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) i nowszych usuwamy dostęp do właściwości android.icu.impl.ICUBinary.dataPath.

IGNORE_ALLOW_BACKUP_IN_D2D

Identyfikator zmiany: 183147249
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowszych, w przypadku aplikacji podczas migracji między urządzeniami (D2D) parametr android:allowBackup jest ignorowany.

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

Identyfikator zmiany: 180523564
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje reguły uwzględniania i wykluczania określone za pomocą atrybutu android:fullBackupContent są ignorowane podczas przesyłania danych między urządzeniami.

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

Identyfikator zmiany: 169273070
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) i nowszych funkcja getSupportedLocales() zwraca pustą listę języków, gdy nie jest ustawiona, zamiast domyślnego języka systemu.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

Zmień identyfikator: 158482162
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom API 31) i nowszych uprawnienia BACKUP wymagane do isBackupServiceActive() są wymuszane po stronie usługi, a nie po stronie klienta w komponencie BackupManager.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

Identyfikator zmiany: 169897160
Stan domyślny: Wyłączone we wszystkich aplikacjach.

Gdy ta opcja jest włączona, tworzenie operacji magazynu kluczy może się nie udać zgodnie z nowej strategii przycinania. Magazyn kluczy działał zgodnie z założeniem że tworzenie operacji kryptograficznych zawsze się kończy. Jednak backend KeyMint ma tylko ograniczoną liczbę slotów operacji.

Aby zachować efekt „nieskończonego” przedziały operacyjne, demon magazynu kluczy wyeliminuje ostatnio używane operacje, jeśli nie było dostępnego przedziału czasu na operację. Dzięki temu dobrze proszę mogą zostać przedwcześnie zakończone. To otworzyło AndroidKeystore do ataki typu DoS (doS) i niezamierzona blokada na żywo. Na przykład, jeśli wybudzenie wielu aplikacji jednocześnie z powodu zarządzania energią i próbowali przeprowadzić operacje kryptograficzne, zakończyć nawzajem swoje działania bez postępów.

Aby wyjść z blokad na żywo i zniechęcić do ataków DoS, zmieniła strategię przycinania, aby preferować klientów przez krótki czas korzystania z niewielu przedziałów operacji. W rezultacie pojedyncze operacje, nie pozostawaj w stanie nieaktywności dłużej niż 5 sekund prawie zawsze bez ograniczeń dzięki strategii przycinania. Nadal istnieją operacje związane z szyfrowaniem systemu plików, które mogą przycinać nawet te operacje, ale takie przypadki są niezwykle rzadkie. W efekcie ubocznym tej nowej operacji związanej ze strategią przycinania tworzenie może się nie udać, jeśli klient ma mniejszą moc przycinania niż wszystkie dotychczasowe operacje.

Strategia przycinania: aby znaleźć odpowiednią kandydaturę, obliczamy malus dla wywołującego i każdej istniejącej operacji. malus to odwrotność siły przycinania rezystancji (istniejąca operacja). Aby wywołujący mógł przyciąć operację, musi znaleźć operację z malus wyższym niż jego własny. Więcej informacji o strategii przycinania znajdziesz w dokumentacji dotyczącej implementacji operation.rs. W Androidzie 11 (poziom interfejsu API 30) i starszym KeyStore2 będzie sprawdzać demona Keystore pod kątem wolnego slotu operacji. W przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub starszego nadal będzie wyglądać na to, że szyfrowanie i inicjalizacja obiektu podpisu zawsze się uda – jednak wykonanie operacji może zająć więcej czasu. Wszystkie wersje Androida korzystają z bardziej sprawiedliwego harmonogramu operacji i większych szans na pomyślne zakończenie operacji.

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

Identyfikator zmiany: 174664365
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje nie można wysłać elementu Intent.ACTION_CLOSE_SYSTEM_DIALOGS chyba że aplikacja ma też uprawnienie android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS. Pamiętaj, że jest to bardziej restrykcyjna wersja #DROP_CLOSE_SYSTEM_DIALOGS, która wymaga, aby aplikacja przestała wysyłać intencję Intent.ACTION_CLOSE_SYSTEM_DIALOGS, gdy rozpocznie działanie na Androidzie 12 (poziom API 31) lub nowszym.

LOCK_DOWN_COLLAPSE_STATUS_BAR

Identyfikator zmiany: 173031413
Stan domyślny: włączony w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje musisz mieć uprawnienie Manifest.permission.STATUS_BAR, aby zwinąć paskach stanu ze względów bezpieczeństwa. Złośliwe oprogramowanie wykorzystywało tę funkcję, aby uniemożliwić użytkownikowi dostęp do powiadomień o znaczeniu krytycznym.

LOW_POWER_EXCEPTIONS

Identyfikator zmiany: 168936375
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego wszystkie obiekty LocationRequest oznaczone jako low power throw wyrzucają wyjątki, jeśli wywołujący nie ma uprawnień LOCATION_HARDWARE, zamiast po cichu odrzucać część żądania dotyczącą niskiego zużycia energii.

MISSING_EXPORTED_FLAG

Identyfikator zmiany: 150232615
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje należy podać konkretną wartość dla parametru Atrybut android:exported, gdy jest zdefiniowany filtr intencji.

Więcej informacji o tej zmianie znajdziesz w artykule Bezpieczniejsze eksportowanie komponentów.

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

Identyfikator zmiany: 207557677
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (API na poziomie 32) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 32) i nowszych przydzielanie pamięci natywnych stosów w procesie AppZygote i jego potomkach używa tagu o wartości niezerowej w najstarszym bajcie.

Więcej informacji o tej zmianie znajdziesz w artykule Otagowane kursory.

NATIVE_HEAP_ZERO_INIT

Identyfikator zmiany: 178038272
Stan domyślny: wyłączone we wszystkich aplikacjach.

Włącz automatyczne inicjowanie bez inicjowania natywnych alokacji pamięci sterty.

NATIVE_MEMTAG_ASYNC

Identyfikator zmiany: 135772972
Stan domyślny: wyłączone we wszystkich aplikacjach.

Włącz w tym procesie asynchroniczne sprawdzanie tagów pamięci (ASYNC). Ta flaga ma wpływ tylko na sprzęt obsługujący ARM Memory Tagging Extension (MTE).

NATIVE_MEMTAG_SYNC

Zmień identyfikator: 177438394
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Umożliwia sprawdzanie tagów pamięci w ramach tego procesu w trybie synchronicznym (SYNC). Ten parametr dotyczy tylko sprzętu obsługującego rozszerzenie Memory Tagging Extension (MTE) na ARM. Jeśli włączona jest zarówno ta opcja NATIVE_MEMTAG_ASYNC, jak i ta opcja, ta opcja może pierwszeństwo, a MTE jest włączone w trybie SYNC.

NEVER_SANDBOX_DISPLAY_APIS

Identyfikator zmiany: 184838306
Stan domyślny: wyłączone dla wszystkich aplikacji.

Gdy ta opcja jest włączona, w interfejsie Display API nie można stosować piaskownicy do letterbox lub SCM. Interfejsy Display API nadal będą udostępniać granice DisplayArea.

Więcej informacji na temat tej zmiany znajdziesz w sekcji dotyczącej Androida Strona dotycząca 12 zmian w zachowaniu Wyświetl wycofane metody.

NOTIFICATION_CANCELLATION_REASONS

Identyfikator zmiany: 175319604
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Umożliwia słuchaczom powiadomień zrozumienie nowych, bardziej szczegółowych powodów anulowania.

NOTIFICATION_TRAMPOLINE_BLOCK

Identyfikator zmiany: 167676448
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Aby poprawić wydajność i wygodę aplikacji, aplikacje kierowane na Androida 12 nie mogą używać usług ani odbiorników jako trampki z powiadomieniami.

Więcej informacji o tej zmianie znajdziesz w artykule Nie można tworzyć trampolin powiadomień z usług lub odbiorników transmisji danych.

NULL_TELEPHONY_THROW_NO_CB

Identyfikator zmiany: 182185642
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Służy do sprawdzania, czy docelowy pakiet SDK dla bieżącego procesu to Android 12 (poziom interfejsu API 31) lub nowszy.

Dotyczy tych metod:

OVERRIDE_MIN_ASPECT_RATIO

Zmień identyfikator: 174042980
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Ta zmiana jest bramką dla wszystkich zmian, które wymuszają określony minimalny format obrazu. Włączenie tej zmiany umożliwia osiągnięcie minimalnego aspektu współczynniki do zastosowania:

Po włączeniu tej zmiany w pakiecie aplikacji minimalny współczynnik proporcji podany w pliku manifestu aplikacji zostanie zastąpiony największym włączonym format obrazu, chyba że wartość w pliku manifestu aplikacji jest wyższa.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Identyfikator zmiany: 180326787
Stan domyślny: wyłączone we wszystkich aplikacjach.

Jeśli włączona jest też opcja OVERRIDE_MIN_ASPECT_RATIO, ta zmiana w przypadku pakietu powoduje ustawienie minimalnego współczynnika proporcji aktywności na dużą wartość określoną przez opcję OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

Identyfikator zmiany: 180326845
Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Gdy włączona jest też opcja OVERRIDE_MIN_ASPECT_RATIO, włączenie tej zmiany w pakiecie powoduje ustawienie minimalnego współczynnika proporcji aktywności na średnią wartość określoną przez opcję OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

Identyfikator zmiany: 160794467
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje musisz określić zmienność każdego parametru PendingIntent obiektem generowanym przez aplikację. To dodatkowe wymaganie zwiększa bezpieczeństwo aplikacji.

Więcej informacji o tej zmianie znajdziesz w artykule Oczekujące intencje muszą deklarować zmienność.

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

Identyfikator zmiany: 165573442
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Aplikacje administratora kierowane na Androida 12 (poziom API 31) i nowsze wersje nie mogą używać DevicePolicyManager.setPasswordQuality(ComponentName, int) aby ustawić jakość hasła w instancji DevicePolicyManager uzyskanej przez wywołanie metody DevicePolicyManager.getParentProfileInstance(ComponentName). Zamiast tego powinni użyć parametru DevicePolicyManager.setRequiredPasswordComplexity(int), aby ustawić szczegółowych wymagań dotyczących haseł na całym urządzeniu.

RATE_LIMIT_TOASTS

Identyfikator zmiany: 174840628
Stan domyślny: tej zmiany nie można przełączyć. Jest on rejestrowany tylko przez system sprawdzania zgodności.

Włącza ograniczenie liczby żądań Toast.show() aby zapobiec nadmiernemu obciążeniu użytkownika zbyt dużą liczbą komunikatów wyświetlanych w reklamie ograniczone czasowo. Każda próba wyświetlenia większej liczby powiadomień niż dozwolona w w określonym przedziale czasu tost jest odrzucany.

REQUIRE_EXACT_ALARM_PERMISSION

Identyfikator zmiany: 171306433
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

Aplikacje kierowane na Androida 12 (poziom API 31) lub nowszego muszą mieć uprawnienia Manifest.permission.SCHEDULE_EXACT_ALARM, aby używać interfejsów API do ustawiania alarmów precyzyjnych, takich jak setExactAndAllowWhileIdle(int, long, PendingIntent)setAlarmClock(AlarmClockInfo, PendingIntent).

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

Identyfikator zmiany: 182478738
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje aplikacje muszą mieć uprawnienie Manifest.permission.READ_PHONE_STATE w Aby zadzwonić pod numer TelephonyCallback.ActiveDataSubscriptionIdListener.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

Identyfikator zmiany: 184323934
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje aplikacje muszą mieć uprawnienie Manifest.permission.READ_PHONE_STATE w Aby zadzwonić pod numer TelephonyCallback.CellInfoListener.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

Identyfikator zmiany: 183164979
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje aplikacje muszą mieć uprawnienie Manifest.permission.READ_PHONE_STATE w Aby zadzwonić pod numer TelephonyCallback.DisplayInfoListener.

RESTRICT_ADB_BACKUP

Identyfikator zmiany: 171032338
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje: zasada adb backup jest automatycznie włączona dla aplikacji działających jako możliwa do debugowania (wartość android:debuggable ma wartość true). niedostępne dla innych aplikacji.

RESTRICT_DOMAINS

Identyfikator zmiany: 175408749
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wersje wymagana jest zaktualizowana forma interfejsu API do weryfikacji linków aplikacji. Ten wymóg oznacza, że aplikacja musi zadeklarować domeny w filtrze intencji, który obejmuje wszystkie te elementy:

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • Tylko IntentFilter.SCHEME_HTTP i/lub IntentFilter.SCHEME_HTTPS, bez innych schematów

W poprzednich wersjach Androida schemat Intent.CATEGORY_BROWSABLE nie był wymagany, inne schematy były dozwolone, a ustawienie autoVerify na true w dowolnym filtrze intencji spowodowałoby domyślnie zakładać, że wszystkie filtry intencji są ustawione na autoVerify="true".

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

Zmień identyfikator: 151105954
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowsze wymusza to, aby wszystkie attributionTags wysłane do noteOp(String, int, String): noteProxyOp(String, String) i startOp(String, int, String) są zdefiniowane w pliku manifestu pakietu, który jest określony jako parametr metod.

Aby włączyć tę zmianę, zarówno pakiet wywołujący funkcję noteOp(String, int, String), jak i pakiet podany jako parametr metody muszą mieć włączoną tę zmianę.

SELINUX_LATEST_CHANGES

Identyfikator zmiany: 143539591
Stan domyślny: włączona w przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowszych włącza najnowsze zmiany w SELinux. Wyłączenie tej zmiany w kierowaniu na aplikacje Android 12 (poziom interfejsu API 31) lub nowszy nie jest obsługiwany. Nie działa w przypadku aplikacji, które używają wspólnego identyfikatora użytkownika.

SETTINGS_API_V2

Identyfikator zmiany: 178111421
Stan domyślny: włączone dla wszystkich aplikacji.

Nowy interfejs API preferencji użytkownika służący do weryfikacji domen oznaczonych jako autoVerify=true w filtrach intencji w pliku AndroidManifest.xml nie został jeszcze zaimplementowany w bieżącej wersji platformy w wersji wstępnej. Na razie możesz wyświetlić podgląd nowych zmian preferencji użytkownika, włączając ten identyfikator zmiany i korzystając z adb shell pm set-app-links-user-selection i podobne polecenia.

USE_SHORT_FGS_USAGE_INTERACTION_TIME

Identyfikator zmiany: 183972877
Stan domyślny: włączony w przypadku aplikacji kierowanych na Androida 12 (poziom API 31) lub nowszego.

W przypadku aplikacji kierowanych na Androida 12 (poziom interfejsu API 31) i nowszych określa, czy należy użyć krótszego limitu czasu przed podniesieniem puli w stanie gotowości do ACTIVE, gdy aplikacje uruchamiają usługę na pierwszym planie.