Informacje o wersji Androida 9

Na tej stronie znajdziesz podsumowanie najważniejszych funkcji w wersji Androida 9 oraz linki do dodatkowych informacji. Podsumowania funkcji są uporządkowane według miejsca, w którym znajdują się ich dokumenty w tej witrynie. Więcej informacji o przenoszeniu i zmianie nazwy sekcji znajdziesz w tym artykule.

Build

Podstawowy obraz systemu (GSI)

Podstawowy obraz systemu (GSI) to obraz systemu z dostosowanymi konfiguracjami dla urządzeń z Androidem. Podstawowy obraz systemu (GSI) zawiera szczegółowe informacje o różnicach między obrazami GSI dla urządzeń wprowadzanych na rynek z Androidem 9 a urządzeniami, które są aktualizowane do Androida 9.

Architektura

Warstwa abstrakcji sprzętowej (HAL)

Zgodność wsteczna frameworka HIDL

Weryfikacja zgodności wstecznej struktury HIDL to metoda sprawdzania zgodności wstecznej struktury.

Dynamicznie dostępne HAL-e

Dynamicznie dostępne HAL-e obsługują dynamiczne wyłączanie podsystemów sprzętowych Androida, gdy nie są używane lub nie są potrzebne.

HIDL

HIDL MemoryBlock

HIDL MemoryBlock to warstwa abstrakcji zbudowana na hidl_memory, HIDL @1.0::IAllocatorHIDL @1.0::IMapper. Jest ona przeznaczona dla usług HIDL, które mają wiele bloków pamięci współdzielących jeden stos pamięci.

Nakładki drzewa urządzeń

Skompresowane nakładki

Android 9 i nowszy obsługuje skompresowane nakładki w obrazie nakładki DTBO (Device Tree Blob Overlay) podczas korzystania z wersji 1 nagłówka tabeli drzewa urządzenia.

Aktualizacje nakładek drzewa urządzeń

Android 9 i nowsze wersje wymagają, aby program rozruchowy przekazywał do jądra ujednolicony plik binarny drzewa urządzenia przed zmodyfikowaniem właściwości zdefiniowanych w nakładkach drzewa urządzenia (DTO).

Wersjonowanie nagłówka obrazu DTBO

Android 9 i nowszy zawiera pole wersji w nagłówku obrazu DTBO.

Weryfikacja DTBO

Android 9 i nowszy wymaga partycji DTBO. Aby dodać węzły lub wprowadzić zmiany we właściwościach w DT SoC, program rozruchowy musi dynamicznie nakładać DT specyficzne dla urządzenia na DT SoC. Więcej informacji znajdziesz w artykule Kompilowanie i weryfikowanie.

Zgodność jądra

Android 9 i nowsze wersje zawierają wymagania, które mają wpływ na jądro, jego interfejsy i korzystanie z DTBO. Więcej informacji znajdziesz na tych stronach:

NDK dostawcy

Zmiany w projekcie

Informacje o zmianach w projekcie VNDK w Androidzie 9 i nowszym znajdziesz na tych stronach:

Sprawdzanie interfejsu ABI

Na stronie Stabilność interfejsu ABI opisano narzędzie do sprawdzania interfejsu binarnego aplikacji (ABI), które zapewnia, że zmiany wprowadzone w bibliotekach VNDK zachowują zgodność z interfejsem ABI.

Zrzuty VNDK

Obraz systemu może używać migawek VNDK, aby dostarczać prawidłowe biblioteki VNDK do obrazów dostawców, nawet jeśli obrazy systemu i dostawców są tworzone na podstawie różnych wersji Androida.

Obiekt interfejsu dostawcy (obiekt VINTF)

Na tych stronach w sekcji Obiekt interfejsu dostawcy opisujemy aktualizacje w Androidzie 9 i nowszych wersjach:

Harmonogram wycofywania HIDL

Na tych stronach znajdziesz informacje o tym, jak Android wycofuje i usuwa interfejsy HAL HIDL:

Program rozruchowy

Podziały produktów

Android 9 i nowsze wersje obsługują tworzenie /productpartycji za pomocą systemu kompilacji Androida. Wcześniej Android 8.x wymuszał oddzielenie komponentów specyficznych dla systemu na chipie (SoC) od partycji /system do partycji /vendor bez wydzielania miejsca na komponenty specyficzne dla producenta OEM, które zostały utworzone w systemie kompilacji Androida.

Zgodność z kanoniczną przyczyną uruchomienia

Na stronie Canonical Boot Reason (Kanoniczna przyczyna rozruchu) opisano zmiany w specyfikacji przyczyny rozruchu bootloadera w Androidzie 9 i nowszych.

System jako root

Wszystkie urządzenia z Androidem 9 lub nowszym muszą korzystać z systemu jako katalogu głównego, który łączy ramdisk.imgsystem.img (znanym też jako no-ramdisk), a ten z kolei jest montowany jako rootfs.

Wersjonowanie nagłówka obrazu rozruchowego

W Androidzie 9 i nowszych wersjach nagłówek obrazu rozruchowego zawiera pole wskazujące wersję nagłówka. Program rozruchowy musi sprawdzić to pole wersji i odpowiednio przeanalizować nagłówek.

DTBO w trybie odzyskiwania

Aby zapobiec niepowodzeniom aktualizacji OTA z powodu niezgodności między obrazem przywracania a partycją DTBO na urządzeniach innych niż A/B, obraz przywracania musi zawierać informacje z obrazu DTBO.

Wyświetlacz

Wycięcia w ekranie

Wycięcia na wyświetlaczu umożliwiają deweloperom tworzenie wciągających interfejsów od krawędzi do krawędzi, a jednocześnie pozostawiają miejsce na ważne czujniki z przodu urządzenia.

Przełączanie sugestii

Zmiany w działaniu obracania ekranu Android 9 i nowsze wersje obsługują sterowanie obracaniem ekranu, które umożliwia przypięcie ekranu do orientacji poziomej lub pionowej nawet wtedy, gdy pozycja urządzenia się zmieni.

Synchronizowane przejścia między aplikacjami

Zsynchronizowane przejścia między aplikacjami umożliwiają nowe animacje przejść między aplikacjami.

Klasyfikacja tekstu (dawniej TEXTCLASSIFIER)

Android 9 i nowsze wersje zawierają usługę klasyfikacji tekstu, która jest zalecanym sposobem implementacji klasyfikacji tekstu, oraz domyślną implementację usługi.

Szeroka gama kolorów

Android 9 i nowsze wersje obsługują szeroką gamę kolorów, w tym:

  • High Dynamic Range (HDR)
  • Przetwarzanie treści w przestrzeni kolorów BT2020, ale nie jako docelowej przestrzeni kolorów

Aby korzystać z szerokiej gamy kolorów, cały stos wyświetlania urządzenia (np. ekran, kompozytor sprzętowy, procesor graficzny) musi obsługiwać szeroką gamę kolorów lub formaty buforów. Urządzenia nie muszą deklarować obsługi treści o szerokiej gamie kolorów, nawet jeśli sprzęt ją obsługuje. Aby w pełni wykorzystać możliwości sprzętu, należy jednak włączyć szeroką gamę kolorów. Aby uniknąć niespójnych wrażeń wizualnych, nie należy wyłączać szerokiej gamy kolorów podczas działania aplikacji.

Zgodność

Dokument definicji zgodności z Androidem

Dokument definicji zgodności (CDD) dla Androida 9 jest rozwinięciem poprzednich wersji i zawiera aktualizacje dotyczące nowych funkcji oraz zmiany w wymaganiach dotyczących wcześniej udostępnionych funkcji.

Ustawienia

Lepsze widżety aplikacji

Platforma widżetów aplikacji na Androida zapewnia większą widoczność interakcji użytkowników, zwłaszcza gdy użytkownik usuwa lub ręcznie dodaje widżety. Ta funkcja jest domyślnie dostępna w Launcherze 3.

Producenci muszą zaktualizować aplikacje uruchamiające (dostarczane z urządzeniami), aby obsługiwały tę funkcję, jeśli nie są oparte na Launcher3. Producenci OEM muszą obsługiwać nowe pole widgetFeatures w domyślnym programie uruchamiającym.

Pamiętaj, że ta funkcja działa w pełni tylko wtedy, gdy programy uruchamiające zaimplementują ją zgodnie z oczekiwaniami. AOSP zawiera przykładową implementację. Przykładowy kod znajdziesz w AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca.

Powiadomienia o zmianie stanu urządzenia dla instalatorów pakietów

Chroniony komunikat systemowy może być wysyłany do aplikacji, które mają uprawnienie INSTALL_PACKAGES, gdy zmieniają się właściwości takie jak język lub gęstość wyświetlania. Odbiorniki można zarejestrować w pliku manifestu, a proces zostanie wybudzony, aby odebrać transmisję. Jest to przydatne w przypadku instalatorów pakietów, które chcą instalować dodatkowe komponenty aplikacji po takich zmianach. Jest to jednak rzadkie, ponieważ zmiany konfiguracji, które mogą wywołać tę transmisję, są rzadkie.

Kod źródłowy powiadomienia o zmianie stanu urządzenia znajduje się w tych lokalizacjach w folderze platform/frameworks/base:

  • api/system-current.txt
  • core/java/android/content/Intent.java
  • core/res/AndroidManifest.xml
  • services/core/java/com/android/server/am/ActivityManagerService.java

Architektura informacji

Zmiany w architekturze informacji w aplikacji Ustawienia zapewniają większą funkcjonalność i ułatwiają wdrażanie.

Testy

Atest

Narzędzie wiersza poleceń Atest umożliwia lokalne tworzenie, instalowanie i uruchamianie testów Androida, co znacznie przyspiesza ponowne uruchamianie testów bez konieczności znajomości opcji wiersza poleceń platformy testowej Trade Federation.

Compatibility Test Suite

Pobieranie pakietu CTS

Pakiety Compatibility Test Suite (CTS) obsługujące Androida 9 są dostępne na stronie CTS Downloads. Kod źródłowy testów zawartych w android-cts-9.0_r1 można zsynchronizować z tagiem w drzewie open source.

Opcje CTS

W przypadku Androida 9 CTS w wersji 2 zyskuje to polecenie i argument:

  • run retry ponawia wszystkie testy, które nie powiodły się lub nie zostały wykonane w poprzednich sesjach.
  • ‘--shard-count dzieli uruchomienie pakietu CTS na podaną liczbę niezależnych części, aby można było je uruchamiać równolegle na wielu urządzeniach.

Dodaliśmy też wcześniej nieudokumentowane polecenie --retry-type do tego samego dokumentu referencyjnego poleceń konsoli CTS w wersji 2.

Usługa Secure Element (SE)

Usługa Secure Element sprawdza, czy urządzenia mają bezpieczne elementy obsługiwane przez platformę globalną, identyfikując, czy urządzenia mają implementację SE HAL, a jeśli tak, to ile. Jest to podstawa do testowania interfejsu API i implementacji bazowego bezpiecznego elementu.

Urządzenie do fuzji danych z czujników

Urządzenie do fuzji czujników jest używane w teście fuzji czujników i teście synchronizacji wielu kamer w pakiecie testów obrazu z kamery (Camera ITS) i zapewnia spójne środowisko testowe do pomiaru dokładności sygnatury czasowej kamery i innych czujników w telefonach z Androidem. Więcej informacji znajdziesz na tych stronach:

Szerokie pole widzenia ITS-in-a-box

ITS-in-a-box o szerokim polu widzenia to zautomatyzowany system przeznaczony do testowania systemów kamer o szerokim polu widzenia (WFoV) i zwykłym polu widzenia (RFoV) w ramach Camera ITS.

Vendor Test Suite

Architektura kontrolera hosta

Architektura kontrolera hosta Vendor Test Suite (VTS) to architektura platformy testowej VTS zintegrowanej z usługą testową opartą na chmurze.

Testowanie HAL z uwzględnieniem nazwy usługi

Testowanie HAL z uwzględnieniem nazwy usługi VTS umożliwia uzyskanie nazwy usługi danej instancji HAL na podstawie urządzenia, na którym są uruchamiane testy VTS.

Sprawdzanie możliwości testowania HAL

Sprawdzanie możliwości testowania HAL VTS obejmuje metodę czasu działania, która wykorzystuje konfigurację urządzenia do określania, które testy VTS należy pominąć w przypadku danego urządzenia docelowego.

Infrastruktura testów zautomatyzowanych

Infrastruktura testów automatycznych to infrastruktura VTS do automatycznego testowania VTS, CTS i innych testów na urządzeniach partnerów z ogólnym obrazem systemu (GSI) AOSP.

Debugowanie

Zaawansowana telemetria

W Androidzie telemetria to proces automatycznego zbierania informacji o użytkowaniu i diagnostyce urządzenia, systemu Android i aplikacji. W poprzednich wersjach Androida stos telemetrii był ograniczony i nie rejestrował informacji potrzebnych do identyfikowania i rozwiązywania problemów z niezawodnością systemu oraz urządzeń lub aplikacji. Utrudniało to, a nawet uniemożliwiało, identyfikowanie głównych przyczyn problemów.

Android 9 zawiera statsdfunkcję telemetrii, która rozwiązuje ten problem, ponieważ szybciej zbiera lepsze dane. statsd zbiera dane o używaniu aplikacji, statystyki baterii i procesów oraz informacje o awariach. Dane są analizowane i wykorzystywane do ulepszania produktów, sprzętu i usług.

Więcej informacji znajdziesz w sekcji frameworks/base/cmds/statsd/.

Funkcje zabezpieczeń

Podpisywanie aplikacji

Schemat podpisu pliku APK w wersji 3 obsługuje zmianę klucza APK.

Obsługa biometrii

Android 9 zawiera klasę publiczną BiometricPrompt, której aplikacje mogą używać do integrowania obsługi uwierzytelniania biometrycznego w sposób niezależny od urządzenia i rodzaju uwierzytelniania. Więcej informacji o integracji stosu biometrycznego w celu uwzględnienia BiometricPrompt znajdziesz w sekcji Biometria.

Analiza dynamiczna

Android 9 obejmuje obsługę większej liczby narzędzi do ograniczania i analizowania luk w zabezpieczeniach.

Integralność przepływu sterowania (CFI)

Integralność przepływu sterowania (CFI) to mechanizm zabezpieczeń, który uniemożliwia wprowadzanie zmian w oryginalnym grafie przepływu sterowania skompilowanego pliku binarnego, co znacznie utrudnia przeprowadzanie takich ataków.

Kernel CFI

Oprócz systemowego CFI, który jest domyślnie włączony, Android 9 i nowsze wersje obsługują integralność przepływu sterowania jądra (CFI).

Szyfrowanie

Szyfrowanie oparte na plikach

Szyfrowanie oparte na plikach (FBE) zostało zaktualizowane, aby działać z pamięcią adaptacyjną. Nowe urządzenia powinny używać szyfrowania opartego na plikach zamiast pełnego szyfrowania dysku.

Szyfrowanie metadanych

Android 9 i nowsze wersje obsługują szyfrowanie metadanych, jeśli jest dostępna obsługa sprzętowa. W przypadku szyfrowania metadanych pojedynczy klucz obecny w momencie uruchomienia szyfruje wszystkie niezaszyfrowane treści za pomocą szyfrowania opartego na plikach.

Magazyn kluczy

Android 9 i nowszy zawiera Keymaster 4, który ma te funkcje:

StrongBox

Android 9 i nowsze wersje obsługują klucze Android Keystore, które są przechowywane i używane w fizycznie oddzielnym procesorze przeznaczonym do aplikacji o wysokim poziomie bezpieczeństwa, takich jak wbudowany bezpieczny element (SE). StrongBox Keymaster to implementacja Keymaster HAL w oddzielnym bezpiecznym sprzęcie. StrongBox ma:

  • Dyskretny procesor
  • Zintegrowane bezpieczne miejsce na dane
  • Wysokiej jakości generator prawdziwych liczb losowych
  • Opakowanie odporne na manipulacje
  • Odporność na ataki typu side-channel

Bezpieczny import klucza

Aby bezpiecznie zaimportować klucz do Keymastera 4, klucz utworzony poza urządzeniem jest szyfrowany zgodnie ze specyfikacją autoryzacji, która określa sposób użycia klucza.

Obsługa 3DES

Keymaster 4 zawiera 3DES, aby zapewnić zgodność ze starszymi systemami, które go używają.

Powiązanie wersji

Aby obsługiwać modułową strukturę Treble i zerwać powiązanie system.imgboot.img, w Keymasterze 4 zmieniono model powiązania wersji klucza, tak aby każda partycja miała osobne poziomy poprawek. Dzięki temu każda partycja może być aktualizowana niezależnie, a jednocześnie zapewnia ochronę przed przywracaniem.

Android Protected Confirmation API

Urządzenia obsługiwane, na których jest zainstalowany Android 9, umożliwiają deweloperom korzystanie z interfejsu Android Protected Confirmation API. Ten interfejs API umożliwia aplikacjom używanie instancji ConfirmationPrompt do wyświetlania użytkownikowi prośby o zatwierdzenie krótkiego oświadczenia. Ten komunikat pozwala aplikacji potwierdzić, że użytkownik chce dokonać transakcji wymagającej szczególnej ostrożności, np. płatności.

SELinux

Piaskownica SELinux dla poszczególnych aplikacji

Piaskownica aplikacji ma nowe zabezpieczenia i przypadki testowe, które zapewniają, że wszystkie aplikacje bez uprawnień kierowane na Androida 9 i nowsze działają w osobnych piaskownicach SELinux.

Zmiany w SELinux w ramach projektu Treble

Aktualizacje Treble SELinux w Androidzie 9 i nowszych wersjach są opisane na kilku stronach w sekcji SELinux.

Inicjowanie dostawcy

Vendor init zamyka lukę w podziale systemu/dostawcy Treble, używając osobnej domeny SELinux do uruchamiania poleceń /vendor z uprawnieniami dostawcy.

Właściwości systemowe

Android 9 ogranicza niepotrzebne udostępnianie właściwości systemu między partycjami systemvendor oraz zapewnia metodę zachowania spójności między udostępnianymi właściwościami systemu.

Testy atrybutów SELinux

Android 9 zawiera nowe testy czasu kompilacji, które zapewniają, że wszystkie pliki w określonych lokalizacjach mają odpowiednie atrybuty. Na przykład wszystkie pliki w sysfs mają wymagany atrybut sysfs_type.

Audio

Efekty dźwiękowe w wysokiej rozdzielczości

Aktualizacje efektów dźwiękowych w wysokiej rozdzielczości obejmują konwersję przetwarzania efektów z formatu int16 na format zmiennoprzecinkowy oraz zwiększenie liczby jednocześnie odtwarzanych ścieżek klienta, maksymalnej pamięci klienta/serwera i łącznej liczby zmiksowanych ścieżek.

Aparat

zewnętrzne kamery USB,

Android 9 i nowsze wersje obsługują kamery USB typu plug-and-play (czyli kamery internetowe) za pomocą standardowego interfejsu API Camera2 w Androidzie i interfejsu HIDL kamery.

Śledzenie ruchu

Urządzenia z kamerą mogą reklamować funkcję śledzenia ruchu.

Obsługa wielu kamer

Obsługa wielu aparatów obejmuje obsługę interfejsu API dla urządzeń z wieloma aparatami za pomocą nowego logicznego urządzenia z aparatem, które składa się z co najmniej 2 fizycznych urządzeń z aparatem skierowanych w tym samym kierunku.

Parametry sesji

Wdrożenie parametrów sesji może skrócić opóźnienia, ponieważ umożliwia klientom aparatu aktywne konfigurowanie podzbioru kosztownych parametrów żądania w ramach fazy inicjowania sesji przechwytywania.

Bufor z jednym producentem i wieloma konsumentami

Transport bufora kamery z jednym producentem i wieloma odbiorcami to zestaw metod, które umożliwiają klientom kamery dynamiczne dodawanie i usuwanie powierzchni wyjściowych podczas aktywnej sesji przechwytywania i trwającego przesyłania strumieniowego z kamery.

Łączność

Połączenia i wiadomości

Wdrażanie pakietów danych

Android 9 i nowsze wersje zapewniają lepszą obsługę operatorów wdrażających abonamenty za pomocą interfejsów SubscriptionPlan API.

Aplikacje do dzwonienia innych firm

Android 9 i nowsze wersje udostępniają interfejsy API, które umożliwiają aplikacjom do połączeń innych firm obsługę jednoczesnych połączeń przychodzących od operatora i zapisywanie połączeń w systemowym rejestrze połączeń.

Operator

Identyfikacja przewoźnika

W Androidzie 9 AOSP dodaje bazę danych identyfikatorów operatorów, aby ułatwić identyfikację operatorów. Baza danych minimalizuje powielanie logiki i fragmentację aplikacji, ponieważ zapewnia wspólny sposób identyfikowania operatorów.

eSIM

Wbudowana karta SIM (eSIM lub eUICC) to najnowsza technologia, która umożliwia użytkownikom urządzeń mobilnych pobieranie profilu operatora i aktywowanie jego usług bez fizycznej karty SIM. W Androidzie 9 i nowszych platforma Androida udostępnia standardowe interfejsy API do uzyskiwania dostępu do karty eSIM i zarządzania profilami subskrypcji na karcie eSIM. Więcej informacji znajdziesz w tych artykułach:

Obsługa wielu kart SIM w przypadku ustawień IMS

Android 9 i nowsze wersje zawierają ulepszenia ustawień użytkownika dotyczące podsystemu multimedialnego IP (IMS). Możesz skonfigurować połączenia głosowe w LTE (VoLTE), rozmowy wideo i połączenia przez Wi-Fi dla każdej subskrypcji z osobna, zamiast udostępniać te ustawienia we wszystkich subskrypcjach.

Transmisje stanu karty SIM

W Androidzie 9 i nowszym parametr Intent.ACTION_SIM_STATE_CHANGED jest wycofany, a dodano 2 osobne transmisje stanu karty i stanu aplikacji karty: TelephonyManager.ACTION_SIM_CARD_STATE_CHANGEDTelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED.

Dzięki tym zmianom odbiorcy, którzy muszą tylko wiedzieć, czy karta jest obecna, nie muszą nasłuchiwać zmian stanu aplikacji, a odbiorcy, którzy muszą tylko wiedzieć, czy aplikacje na kartę są gotowe, nie muszą nasłuchiwać zmian stanu karty.

Dwa nowe sygnały to @SystemApis i nie są one trwałe. Tylko odbiorcy z uprawnieniem READ_PRIVILEGED_PHONE_STATE mogą odbierać transmisje.

Po odblokowaniu urządzenia intencje nie są ponownie rozsyłane. Odbiorniki, które zależą od transmisji wysyłanych przed odblokowaniem, muszą używać directBootAware lub po odblokowaniu przez użytkownika muszą sprawdzać stan. Stany można sprawdzać za pomocą odpowiednich interfejsów API w klasie TelephonyManager, getSimCardState()igetSimApplicationState().

Wi-Fi

Wi-Fi operatora

Funkcja Wi-Fi operatora umożliwia urządzeniom automatyczne łączenie się z sieciami Wi-Fi wdrożonymi przez operatorów. Na obszarach o dużym natężeniu ruchu lub o minimalnym zasięgu sieci komórkowej, takich jak stadion czy stacja metra, Wi-Fi operatora pomaga poprawić łączność i odciążyć sieć.

Randomizacja adresu MAC

Randomizacja MAC umożliwia urządzeniom używanie losowych adresów MAC podczas wyszukiwania nowych sieci, gdy nie są one obecnie połączone z siecią. Na urządzeniach z Androidem 9 i nowszym można włączyć opcję programisty, która powoduje, że urządzenie używa losowego adresu MAC podczas łączenia się z siecią Wi-Fi.

Włącz Wi-Fi automatycznie

Gdy funkcja Włącz Wi-Fi automatycznie jest włączona, Wi-Fi jest automatycznie włączane ponownie, gdy urządzenie znajduje się w pobliżu zapisanej sieci Wi-Fi o wystarczająco wysokim względnym wskaźniku siły odbieranego sygnału (RSSI).

Czas błądzenia w sieci Wi-Fi

Czas podróży w obie strony (RTT) w Wi-Fi umożliwia urządzeniom pomiar odległości od innych urządzeń obsługujących tę funkcję, niezależnie od tego, czy są to punkty dostępu, czy urządzenia równorzędne Wi-Fi Aware (jeśli urządzenie obsługuje Wi-Fi Aware). Ta funkcja jest oparta na protokole IEEE 802.11mc i umożliwia aplikacjom korzystanie z większej dokładności lokalizacji i lepszego rozpoznawania otoczenia.

Ulepszenia dotyczące oceniania sieci Wi-Fi

Ulepszone modele oceny Wi-Fi szybko i dokładnie określają, kiedy urządzenie powinno opuścić połączoną sieć Wi-Fi lub wejść do nowej sieci Wi-Fi. Te modele zapewniają użytkownikom niezawodność i płynność działania, ponieważ unikają przerw w połączeniu.

Sprawdź i dostosuj wartości RSSI w config.xml zasobach, zwłaszcza w tych:

  • config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz

Jednoczesne działanie Wi-Fi STA/AP

Jednoczesne działanie w trybie STA/AP to możliwość jednoczesnego działania urządzeń w trybie stacji (STA) i punktu dostępu (AP). W przypadku urządzeń obsługujących dwuzakresowe Wi-Fi (DBS) otwiera to możliwości takie jak brak zakłóceń w działaniu Wi-Fi STA, gdy użytkownik chce włączyć hotspot (SoftAP).

Ulepszenia usługi WiFiStateMachine

WifiStateMachine to główna klasa używana do sterowania aktywnością Wi-Fi, koordynowania danych wejściowych użytkownika (tryby działania: hotspot, skanowanie, łączenie lub wyłączanie) oraz sterowania działaniami sieci Wi-Fi (takimi jak skanowanie lub łączenie).

W Androidzie 9 i nowszych wersjach kod struktury Wi-Fi i implementacja WifiStateMachine zostały przeprojektowane, co pozwoliło zmniejszyć rozmiar kodu, ułatwić śledzenie logiki sterowania Wi-Fi, zwiększyć szczegółowość sterowania oraz poprawić zasięg i jakość testów jednostkowych.

Na najwyższym poziomieWifiStateMachine umożliwia działanie Wi-Fi w jednym z 4 stanów:

  • Tryb klienta (można się połączyć i skanować)
  • Tryb tylko skanowanie
  • Tryb SoftAP (hotspot Wi-Fi)
  • Wyłączone (Wi-Fi całkowicie wyłączone)

Każdy tryb Wi-Fi ma inne wymagania dotyczące działania usług i powinien być skonfigurowany w spójny sposób, obsługując tylko zdarzenia istotne dla jego działania. Nowa implementacja ogranicza kod do zdarzeń związanych z tym trybem, co skraca czas debugowania i zmniejsza ryzyko wprowadzenia nowych błędów z powodu złożoności. Oprócz jawnego obsługiwania funkcji trybu zarządzanie wątkami jest obsługiwane w spójny sposób, a używanie kanałów asynchronicznych jako mechanizmu synchronizacji zostało wyeliminowane.

Aktualizacje uprawnień Wi-Fi

Na Androidzie 9 i nowszym uprawnienie aplikacji CHANGE_WIFI_STATE jest domyślnie włączone. Uprawnienia możesz wyłączyć w przypadku dowolnej aplikacji na stronie ustawień w sekcji Ustawienia > Aplikacje i powiadomienia > Specjalny dostęp do aplikacji > Sterowanie Wi-Fi.

Aplikacje muszą obsługiwać przypadki, w których uprawnienie CHANGE_WIFI_STATE nie jest przyznane.

Aby sprawdzić to działanie, uruchom testy roboelectric i testy ręczne.

W przypadku testów ręcznych:

  1. Kliknij Ustawienia > Aplikacje i powiadomienia > Specjalny dostęp do aplikacji > Kontrola Wi-Fi.
  2. Wybierz i wyłącz uprawnienia aplikacji.
  3. Sprawdź, czy aplikacja obsługuje sytuację, w której CHANGE_WIFI_STATE uprawnienie nie zostało przyznane.

Wycofanie WPS

Ze względu na problemy z bezpieczeństwem bezpieczna konfiguracja Wi-Fi (WPS) w WiFiManager została wycofana i jest wyłączona na Androidzie 9 i nowszych. WiFiDirect nadal używa WPS w programie WPA Supplicant.

Grafika

Implementacja

Vulkan 1.1 API

Android 9 i nowsze wersje obsługują implementację interfejsu graficznego Vulkan 1.1.

Narzędzie WinScope do śledzenia przejść między oknami

Android 9 i nowsze wersje zawierają narzędzie WinScope do śledzenia przejść między oknami. WinScope udostępnia infrastrukturę i narzędzia do rejestrowania i analizowania stanu menedżera okien w trakcie i po przejściach. Umożliwia nagrywanie i przechodzenie przez przejścia między oknami, a także rejestrowanie w pliku śledzenia wszystkich istotnych stanów menedżera okien. Możesz użyć tych danych, aby odtworzyć i przejść krok po kroku proces przejścia.

Kod źródłowy narzędzia WinScope znajduje się w lokalizacji platform/development/tools/winscope.

Interakcja

Samochodowy sprzęt audio

Audio w systemie Automotive to architektura audio w implementacjach Androida związanych z motoryzacją.

Warstwa HAL sieci neuronowych (NN) definiuje abstrakcję różnych akceleratorów. Sterowniki tych akceleratorów muszą być zgodne z tym HAL-em.

Interfejs HAL pojazdu

Vehicle Properties opisuje zmiany w interfejsie HAL pojazdu.

Wybór satelitów GNSS

W przypadku nowych warstw HAL globalnego systemu nawigacji satelitarnej (GNSS) (wersja 1.1 lub nowsza) platforma Androida monitoruje ustawienia Androida. Partnerzy mogą zmieniać ustawienia w ramach usług Google Play lub innych aktualizacji systemu. Te ustawienia informują GNSS HAL, czy niektórych satelitów GNSS nie należy używać. Może to być przydatne w przypadku trwałych błędów satelitów lub konstelacji GNSS albo w celu szybszego reagowania na problemy z implementacją GNSS HAL, które mogą wystąpić podczas mieszania konstelacji korzystających z różnych systemów czasowych i zdarzeń zewnętrznych, takich jak przestawienie sekundowe, zmiana dnia lub tygodnia.

Model sprzętu GNSS

W Androidzie 9 interfejs HAL GNSS w wersji 1.1 lub nowszej może przekazywać informacje o interfejsie API sprzętu na platformę. Platforma musi zaimplementować interfejs IGnssCallback i przekazać uchwyt do HAL. GNSS HAL przekazuje informacje o modelu sprzętu za pomocą metody LocationManager#getGnssHardwareModelName(). Producenci urządzeń powinni współpracować z dostawcami GNSS HAL, aby w miarę możliwości udostępniać te informacje.

Uprawnienia

Aktualizacje konfigurowania uznaniowej kontroli dostępu

Konfigurowanie uznaniowej kontroli dostępu (DAC) zawiera aktualizacje mechanizmu identyfikatorów Androida (AID) w celu rozszerzenia możliwości systemu plików.

Umieszczanie uprawnień aplikacji z podwyższonymi uprawnieniami na białej liście

W Androidzie 9 i nowszych wersjach, jeśli są uprawnienia, które powinny zostać odrzucone, zmień kod XML, aby używać tagu deny-permission zamiast tagu permission używanego w poprzednich wersjach.

Dane

Ulepszenia szacowania przepustowości

Android 9 zapewnia lepszą obsługę szacowania przepustowości. Aplikacje na Androida mogą stosować bardziej odpowiednie ustawienia rozdzielczości w przypadku połączeń wideo i transmisji strumieniowych wideo, jeśli mają dostęp do dostępnej przepustowości danych.

Na urządzeniach z Androidem 6.0 lub nowszym dzwoniący, który chce uzyskać szacunkową przepustowość sieci komórkowej, dzwoni pod numer ConnectivityManager.requestBandwidthUpdate(), a platforma może podać szacunkową przepustowość pobierania.

Na urządzeniach z Androidem 9 lub nowszym wywołanie zwrotne onCapabilitiesChanged() jest automatycznie uruchamiane, gdy nastąpi znacząca zmiana szacowanej przepustowości, a wywołanie requestBandwidthUpdate() nie powoduje żadnych działań. Powiązane wywołania zwrotne getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() są wypełniane zaktualizowanymi informacjami dostarczanymi przez warstwę fizyczną.

Urządzenia mogą też sprawdzać pasma komórek LTE za pomocą funkcji ServiceState.getCellBandwidths(). Dzięki temu aplikacje mogą określać, ile przepustowości (częstotliwości) jest dostępnych w danej komórce. Informacje o przepustowości sieci komórkowej są dostępne w ukrytym menu, dzięki czemu testerzy terenowi mogą sprawdzać najnowsze dane.

Monitorowanie ruchu za pomocą eBPF

Narzędzie do analizy ruchu sieciowego eBPF wykorzystuje implementację w przestrzeni jądra i użytkownika do monitorowania wykorzystania sieci na urządzeniu od ostatniego uruchomienia. To narzędzie zapewnia dodatkowe funkcje, takie jak tagowanie gniazd, rozdzielanie ruchu na pierwszym planie i w tle oraz zapora sieciowa dla każdego identyfikatora UID, która blokuje aplikacjom dostęp do sieci w zależności od stanu urządzenia.

Przywracanie do starszych wersji interfejsów API

Urządzenia mogą teraz przywracać system operacyjny z przyszłych wersji. Jest to szczególnie przydatne, gdy użytkownicy uaktualnią telefony, a potem je zgubią lub uszkodzą.

Jeśli producent OEM zmodyfikuje agentów kopii zapasowych dla dowolnego z pakietów systemowych (android, system, settings), powinni oni obsługiwać przywracanie zestawów kopii zapasowych utworzonych w nowszych wersjach platformy bez awarii i z przywracaniem co najmniej części danych.

Rozważ użycie walidatora, aby sprawdzić, czy w danych kopii zapasowej nie ma nieprawidłowych wartości, i przywróć tylko prawidłowe dane, jak w przykładzie core/java/android/provider/SettingsValidators.java.

Ta funkcja jest domyślnie włączona. Obsługę przywracania z przyszłych wersji w przypadku SettingsBackupAgent można wyłączyć za pomocą Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION. Nie jest wymagana żadna dodatkowa implementacja, chyba że producent urządzenia rozszerzy jednego z agentów kopii zapasowej dołączonych do pamięci ROM (lub doda niestandardowego agenta).

Ta funkcja umożliwia przywracanie systemu z przyszłych wersji platformy, jednak można się spodziewać, że przywrócone dane nie będą kompletne. Poniższe instrukcje dotyczą tych agentów kopii zapasowych:

  • PackageManagerBackupAgent obsługuje przyszłe wersje danych kopii zapasowej dzięki wersjonowaniu formatu. Rozszerzenia muszą być zgodne z bieżącym kodem przywracania lub postępować zgodnie z instrukcjami w klasie, które obejmują zwiększanie odpowiednich stałych.

  • SystemBackupAgent określa restoreAnyVersion = false w Androidzie 9 i nowszych wersjach. Nie obsługuje przywracania z nowszych wersji interfejsu API.

  • SettingsBackupAgent określa restoreAnyVersion = true w Androidzie 9 i nowszych wersjach. Częściowa obsługa jest dostępna za pomocą walidatorów. Ustawienie można przywrócić z wyższej wersji interfejsu API, jeśli w docelowym systemie operacyjnym istnieje jego walidator. Dodanie dowolnego ustawienia powinno być poprzedzone jego walidatorem. Szczegóły znajdziesz w klasie.

  • Każdy niestandardowy agent kopii zapasowej dołączony do pamięci ROM powinien zwiększać kod wersji za każdym razem, gdy w formacie danych kopii zapasowej zostanie wprowadzona niezgodna zmiana, i zapewniać wartość restoreAnyVersion = false (domyślną), jeśli agent nie jest przygotowany do obsługi danych kopii zapasowej z przyszłej wersji kodu.

Enterprise

Ulepszenia profilu zarządzanego

Zmiany w interfejsie profili zarządzanych ułatwiają użytkownikom identyfikowanie, uzyskiwanie dostępu do profili zarządzanych i kontrolowanie ich.

Wstrzymywanie OTAs

Nowy interfejs @SystemApi umożliwia właścicielom urządzeń bezterminowe wstrzymywanie aktualizacji OTA, w tym aktualizacji zabezpieczeń.

Wydajność

Zdrowie 2.0

Android 9 i nowszy zawiera android.hardware.health HAL 2.0, czyli główną wersję HAL 1.0. Więcej informacji znajdziesz na tych stronach:

Rozwiązanie do buforowania plików APK

Android 9 i nowsze wersje zawierają rozwiązanie buforowania plików APK, które umożliwia szybkie instalowanie wstępnie załadowanych aplikacji na urządzeniach obsługujących partycje A/B. Producenci OEM mogą umieszczać wstępnie załadowane i popularne aplikacje w pamięci podręcznej APK przechowywanej głównie w pustej partycji B na nowych urządzeniach z partycjami A/B bez wpływu na przestrzeń danych użytkownika.

Optymalizacja na podstawie profilu

Android 9 i nowsze wersje obsługują optymalizację z użyciem profilu (PGO) Clang w przypadku natywnych modułów Androida, które mają reguły kompilacji blueprint.

Zapisywanie logów z wyprzedzeniem

Specjalny tryb SQLiteDatabase o nazwie zgodne logowanie wyprzedzające (WAL) umożliwia bazie danych korzystanie z journal_mode=WAL przy zachowaniu maksymalnie jednego połączenia na bazę danych.

Czas uruchamiania

W Androidzie 9 optymalizacja czasu uruchamiania została zmieniona w sposób opisany w artykule Optymalizacja czasu uruchamiania.

Moc

Ograniczenia dotyczące działania w tle

Android 9 i nowsze wersje zawierają ograniczenia dotyczące działania w tle, które pozwalają użytkownikom ograniczać działanie aplikacji, które mogą wyczerpywać baterię. System może też sugerować wyłączenie aplikacji, które negatywnie wpływają na stan urządzenia.

Urządzenia bez baterii

Android 9 lepiej radzi sobie z urządzeniami bez baterii niż poprzednie wersje. Android 9 usuwa kod dla urządzeń bez baterii, który domyślnie zakładał, że bateria jest obecna, naładowana w 100% i w dobrym stanie, a termistor odczytuje normalną temperaturę.