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 lokalizacji dokumentacji na tej stronie. Więcej informacji o przenoszeniu i przemianowach sekcji znajdziesz w artykule Aktualizacje witryny z sierpnia 2018 r.

Budowanie

Podstawowy obraz systemu (GSI)

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

Architektura

Warstwa abstrakcji sprzętowej (HAL)

Zgodność wsteczna w ramach frameworku HIDL

Weryfikacja zgodności wstecznej systemu HIDL to metoda weryfikacji zgodności wstecznej systemu.

Dynamicznie dostępne HAL-e

Dynamicznie dostępne interfejsy HAL umożliwiają dynamiczne wyłączanie podsystemów sprzętowych Androida, gdy nie są używane lub nie są potrzebne.

HIDL

Blok pamięci HIDL

HIDL MemoryBlock to abstrakcyjna warstwa oparta na interfejsach hidl_memory, HIDL @1.0::IAllocatorHIDL @1.0::IMapper. Jest on przeznaczony do usług HIDL, które mają wiele bloków pamięci współdzielących jeden stos pamięci.

Nakładki drzewa urządzeń

Nakładki skompresowane

Android 9 i nowsze wersje obsługują skompresowane nakładki w pliku DTBO (device tree blob overlay) przy użyciu wersji 1 nagłówka tabeli drzewa urządzenia.

Aktualizacje nakładek drzewa urządzeń

Android 9 i nowsze wymaga, aby bootloader przekazywał blob z jednolitym drzewem urządzenia do jądra przed modyfikacją właściwości zdefiniowanych w nakładkach drzewa urządzenia (DTO).

Wersje nagłówka obrazu DTBO

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

Weryfikacja DTBO

Android 9 i nowsze wymaga partycji DTBO. Aby dodać węzły lub wprowadzić zmiany w właściwościach w pliku DT SoC, bootloader musi dynamicznie nałożyć plik DT urządzenia na plik DT SoC. Więcej informacji znajdziesz w artykule Kompilowanie i weryfikowanie.

Zgodność z jądrem

Android 9 i nowsze wersje zawierają wymagania dotyczące jądra, jego interfejsów i użycia DTBO. Więcej informacji znajdziesz na tych stronach:

Dostawca NDK

Zmiany w projektie

Informacje o zmianach w projektowaniu VNDK w Androidzie 9 i nowszych znajdziesz na tych stronach:

Sprawdzanie interfejsu ABI

Na stronie Stabilność interfejsu ABI opisano sprawdzanie interfejsu binarnego aplikacji (ABI), które zapewnia, że zmiany wprowadzone do bibliotek VNDK zachowują zgodność z interfejsem ABI.

Zrzuty VNDK

Obraz systemu może używać migawek VNDK, aby udostępniać obrazom dostawcy prawidłowe biblioteki VNDK, nawet jeśli obrazy systemu i obrazu dostawcy są kompilowane z różnych wersji Androida.

Obiekt interfejsu dostawcy (VINTF)

Na stronach w sekcji Obiekt interfejsu dostawcy znajdziesz informacje o aktualizacjach w Androidzie 9 i nowszych:

Harmonogram wycofywania HIDL

Na tych stronach opisaliśmy, jak Android wycofuje i usuwa interfejsy HIDL HAL:

Program rozruchowy

Podziały produktów

Android 9 i nowsze wersje obsługują kompilowanie partycji /product za pomocą systemu kompilacji Androida. Wcześniej Android 8.x wymuszało oddzielenie komponentów związanych z systemem na chipie (SoC) z partycji /system do partycji /vendor bez zarezerwowania miejsca na komponenty związane z OEM-ami utworzone w systemie kompilacji Androida.

Zgodność z kanoniczną przyczyną rozruchu

Na stronie 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ą używać system-as-root, który łączy ramdisk.imgsystem.img (znanym też jako no-ramdisk), który z kolei jest montowany jako rootfs.

Wersje nagłówka obrazu rozruchowego

W Androidzie 9 i nowszych nagłówek obrazu rozruchu zawiera pole wskazujące wersję nagłówka. Bootloader musi sprawdzić to pole wersji i odpowiednio zanalizować nagłówek.

DTBO w procesie przywracania

Aby zapobiec niepowodzeniom OTA z powodu niezgodności obrazu odzyskiwania i partycji DTBO na urządzeniach innych niż A/B, obraz odzyskiwania musi zawierać informacje z obrazu DTBO.

Wyświetlacz

Wycięcia w ekranie

Wycięcia w ekranie umożliwiają deweloperom tworzenie płynnych, wciągających treści, zachowując jednocześnie miejsce na ważne czujniki na froncie urządzenia.

Sugestie dotyczące obracania

Aktualizacje zachowania obracania ekranu Android 9 i nowsze wersje obsługują kontrolę umożliwiającą użytkownikowi przypinanie obracania ekranu do orientacji poziomej lub pionowej nawet wtedy, gdy zmienia się pozycja urządzenia.

Synchronizowane przejścia między aplikacjami

Synchronizowane 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ę klasyfikatora tekstu, która jest zalecanym sposobem implementacji klasyfikacji tekstu, oraz domyślną implementację usługi.

Kolory o szerokim zakresie tonalnym

Android 9 i nowsze wersje obsługują kolory o szerokim zakresie, w tym:

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

Aby korzystać z kolorów o szerokiej gamie, cały pakiet wyświetlacza urządzenia (np. ekran, procesor graficzny sprzętowy, procesor graficzny) musi obsługiwać kolory o szerokiej gamie lub formaty bufora. Urządzenia nie muszą obsługiwać treści w szerokiej gamie kolorów, nawet jeśli sprzęt je obsługuje. Aby jednak w pełni wykorzystać możliwości sprzętu, należy włączyć kolory o szerszym zakresie. Aby uniknąć niespójności wizualnych, nie wyłączaj kolorów o szerokim zakresie podczas działania.

Zgodność

Dokument definicji zgodności z Androidem

Dokument definicji zgodności Androida 9 (CDD) opiera się na poprzednich wersjach, ale zawiera aktualizacje dotyczące nowych funkcji i zmiany wymagań dotyczących wcześniej opublikowanych funkcji.

Ustawienia

Lepsze widżety aplikacji

Platforma widgetów aplikacji na Androida zapewnia większą przejrzystość interakcji z użytkownikiem, zwłaszcza gdy usuwa on widgety lub dodaje je ręcznie. Ta funkcja jest domyślnie dostępna w Launcher3.

Producenci muszą zaktualizować aplikacje uruchamiające (dołączone do urządzeń), aby obsługiwały tę funkcję, jeśli nie są oparte na Launcherze 3. Producenci OEM muszą obsługiwać nowe pole widgetFeatures w domyślnym programie uruchamiania.

Pamiętaj, że ta funkcja działa kompleksowo tylko wtedy, gdy przeglądarki implementują ją zgodnie z oczekiwaniami. AOSP zawiera przykładową implementację. Przykładowy kod znajdziesz w pliku AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca.

Powiadomienia o zmianie stanu urządzenia dla instalujących pakiety

Zastrzeżony komunikat systemowy może być wysyłany do aplikacji, które mają uprawnienia INSTALL_PACKAGES, gdy nastąpi zmiana właściwości takich jak lokalizacja lub gęstość wyświetlania. Odbiorników można zarejestrować w pliku manifestu, a proces przebudzenia odbiera transmisję. Jest to przydatne dla instalatorów pakietów, którzy chcą zainstalować dodatkowe komponenty aplikacji po wprowadzeniu takich zmian. Jest to rzadkie, ponieważ zmiany konfiguracji kwalifikujące się do wywołania tej transmisji są rzadkie.

Kod źródłowy powiadomienia o zmianie stanu urządzenia znajduje się w tych lokalizacjach w 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 aplikacji Ustawienia zapewniają więcej funkcji i łatwiejszą implementację.

Testy

Atest

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

Compatibility Test Suite

Pobrania z CTS

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

Opcje CTS

W przypadku Androida 9 CTS w wersji 2 zyskuje następujące polecenie i argument:

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

Dodatkowo do tego samego dokumentu referencyjnego poleceń konsoli CTS v2 dodano polecenie --retry-type, które wcześniej nie było udokumentowane.

Usługa Bezpieczny element (SE)

Usługa Secure Element sprawdza, czy na globalnej platformie są obsługiwane elementy zabezpieczeń, sprawdzając, czy urządzenia mają implementację interfejsu SE HAL i jeśli tak, to ile. Jest on używany do testowania interfejsu API i podstawowej implementacji elementu zabezpieczeń.

Sensor Fusion Box

Pudełko do zliczania sensorów jest używane w ramach zestawu testów obrazu z kamery (Camera ITS) do testowania zliczania sensorów i testowania synchronizacji wielu kamer. Zapewnia spójne środowisko testowe do pomiaru dokładności sygnatury czasowej aparatu i innych czujników w przypadku telefonów z Androidem. Więcej informacji znajdziesz na tych stronach:

ITS-in-a-box o szerokim polu widzenia

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

Vendor Test Suite

Architektura kontrolera gospodarza

Architektura kontrolera hosta pakietu testów dostawcy (VTS) to architektura frameworku testowego VTS zintegrowana z usługą obsługującą testy w chmurze.

Testowanie HAL z uwzględnieniem nazwy usługi

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

Sprawdzanie możliwości testowania HAL

Sprawdzanie testowalności HAL VTS obejmuje metodę czasu wykonywania, która wykorzystuje konfigurację urządzenia do identyfikowania testów VTS, które należy pominąć na tym urządzeniu docelowym.

Automatyczna infrastruktura testów

Automatyczna infrastruktura testów to infrastruktura VTS do automatycznego testowania VTS, CTS lub innych testów na urządzeniach partnerów z systemem AOSP GSI.

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 pakiet telemetryczny był ograniczony i nie gromadził informacji potrzebnych do zidentyfikowania i rozwiązania problemów z wiarygodnością systemu oraz urządzeniami i aplikacjami. Utrudniało to, a czasem wręcz uniemożliwiało, zidentyfikowanie głównej przyczyny problemów.

Android 9 zawiera funkcję telemetryczną statsd, która rozwiązuje ten problem, umożliwiając szybsze zbieranie lepszych danych. statsd zbiera informacje o użytkowaniu aplikacji, statystykach baterii i procesów oraz awariach. Dane są analizowane i używane do ulepszania produktów, sprzętu i usług.

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

Funkcje zabezpieczeń

Podpisywanie aplikacji

Schemat podpisu pliku APK w wersji 3 obsługuje rotację kluczy plików APK.

Obsługa biometryczna

Android 9 zawiera publiczną klasę BiometricPrompt, której aplikacje mogą używać do integracji obsługi uwierzytelniania biometrycznego w sposób niezależny od urządzenia i modalności. Więcej informacji o integrowaniu zestawu narzędzi do obsługi danych biometrycznych, aby uwzględnić BiometricPrompt, znajdziesz w artykule Dane biometryczne.

Analiza dynamiczna

Android 9 obsługuje więcej narzędzi do analizowania i zmniejszania ryzyka związanego z lukami w zabezpieczeniach.

integralność kontroli przepływu (CFI),

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

Kernel CFI

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

Szyfrowanie

Szyfrowanie oparte na plikach

Szyfrowanie oparte na plikach (FBE) zostało zaktualizowane, aby działało z adoptowalnym miejscem na dane. Nowe urządzenia powinny używać szyfrowania opartego na plikach zamiast szyfrowania całego 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 jeden klucz obecny podczas uruchamiania używa szyfrowania opartego na plikach do szyfrowania wszystkich niezaszyfrowanych treści.

Magazyn kluczy

Android 9 lub nowszy zawiera Keymaster 4, który zawiera te funkcje.

StrongBox

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

  • Procesor dyskretny
  • Zintegrowane bezpieczne miejsce na dane
  • Wysokiej jakości generator prawdziwych liczb losowych
  • Opakowanie zabezpieczone przed nieuprawnieniami
  • Odporność na ataki typu side-channel

Bezpieczne importowanie klucza

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

Obsługa 3DES

Keymaster 4 zawiera szyfr 3DES, aby zapewnić zgodność ze starszymi systemami, które korzystają z szyfru 3DES.

Wiązanie z wersją

Aby obsługiwać modułową strukturę Treble i odłączyć system.img od boot.img, Keymaster 4 zmienił model wiązania wersji klucza, aby mieć oddzielne poziomy poprawek dla każdej partycji. Dzięki temu każda partycja może być aktualizowana niezależnie, a jednocześnie zapewniana jest ochrona przed przywracaniem.

Android Protected Confirmation API

Deweloperzy mogą korzystać z interfejsu API potwierdzenia chronionego na Androidzie na obsługiwanych urządzeniach z zainstalowanym Androidem 9. Dzięki temu interfejsowi API aplikacje mogą używać instancji interfejsu ConfirmationPrompt, aby wyświetlać użytkownikowi prośbę o zatwierdzenie krótkiego oświadczenia. To oświadczenie pozwala aplikacji potwierdzić, że użytkownik chce dokonać wrażliwej transakcji, np. dokonać płatności.

SELinux

Piaskownica SELinux dla poszczególnych aplikacji

Pustynna piaskownica aplikacji zawiera nowe zabezpieczenia i przypadki testowe, które zapewniają, że wszystkie aplikacje bez uprawnień przeznaczone na Androida 9 lub nowszego działają w osobnych piaskownicach SELinux.

Zmiany w SELinux w Treble

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

Inicjowanie dostawcy

Inicjacja dostawcy zamyka lukę w systemie Treble/podziale dostawców, ponieważ używa osobnej domeny SELinux do wykonywania poleceń /vendor z uprawnieniami określonymi przez dostawcę.

Właściwości systemowe

Android 9 ogranicza niepotrzebne udostępnianie właściwości systemowych między partycjami systemvendor oraz zapewnia metodę zapewniającą spójność udostępnianych właściwości systemowych.

Testy atrybutów SELinux

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

Audio

Efekty dźwiękowe w wysokiej rozdzielczości

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

Aparat

Zewnętrzne kamery USB

Android 9 i nowsze wersje obsługują kamery USB typu „podłącz i użyj” (czyli kamery internetowe) za pomocą standardowego interfejsu Camera2 API i interfejsu HIDL aparatu.

Ś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 przez urządzenia z wieloma kamerami za pomocą nowego logicznego urządzenia fotograficznego złożonego z co najmniej 2 fizycznych aparatów skierowanych w ten sam kierunek.

Parametry sesji

Wdrażanie parametrów sesji może zmniejszyć opóźnienia, umożliwiając klientom kamer aktywne konfigurowanie podzbioru kosztownych parametrów żądania w ramach fazy inicjowania sesji rejestrowania.

Pojedynczy producent, bufor dla wielu konsumentów

Transport bufora kamery z jednego źródła do wielu odbiorców to zestaw metod, które umożliwiają klientom kamery dynamiczne dodawanie i usuwanie powierzchni wyjściowych, gdy sesja przechwytywania jest aktywna, a przesyłanie kamery trwa.

Łączność

dzwonić i wysyłać wiadomości,

Wdrożenie planów danych

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

Aplikacje do połączeń innych firm

Android 9 i nowsze udostępnia interfejsy API, które umożliwiają aplikacjom do połączeń innych firm jednoczesne obsługowanie połączeń przychodzących od operatora i rejestrowanie połączeń w systemowym rejestrze połączeń.

Operator

Identyfikacja operatora

W Androidzie 9 AOSP dodaje bazę danych identyfikatorów operatora, aby ułatwić identyfikację operatora. Ta baza danych minimalizuje duplikowanie logiki i rozdrobnienie aplikacji, zapewniając 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 usługi operatora bez posiadania fizycznej karty SIM. W Androidzie 9 i nowszych framework Androida udostępnia standardowe interfejsy API do uzyskiwania dostępu do eSIM i zarządzania profilami subskrypcji w eSIM. Więcej informacji znajdziesz w tych artykułach:

Obsługa wielu kart SIM w ustawieniach IMS

Android 9 i nowsze wersje oferują ulepszenia ustawień użytkownika dotyczące subsystemu multimedialnego IP (IMS). Możesz skonfigurować połączenia głosowe LTE (VoLTE), połączenia wideo i połączenia Wi-Fi dla poszczególnych subskrypcji, zamiast udostępniać te ustawienia wszystkim subskrypcjom.

Transmisje stanu karty SIM

W Androidzie 9 i nowszych funkcja Intent.ACTION_SIM_STATE_CHANGED została wycofana, a dodano 2 oddzielne transmisje dotyczące 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ą wiedzieć tylko, czy karta jest obecna, nie muszą słuchać zmian stanu aplikacji, a odbiorcy, którzy muszą wiedzieć tylko, czy aplikacje kart są gotowe, nie muszą słuchać zmian stanu kart.

Te 2 nowe transmisje to @SystemApis i nie są trwałe. Tylko odbiorniki z uprawnieniami READ_PRIVILEGED_PHONE_STATE mogą odbierać transmisje.

Intencje nie są ponownie nadawane, gdy odblokujesz urządzenie. Odbiorniki, które zależą od transmisji wysłanych przed odblokowaniem, muszą używać directBootAware lub zapytać o stan po odblokowaniu przez użytkownika. Stany można wyszukiwać za pomocą odpowiednich interfejsów API w klasie TelephonyManager, getSimCardState()getSimApplicationState().

Wi-Fi

Wi-Fi operatora

Funkcja Wi-Fi operatora umożliwia urządzeniom automatyczne łączenie się z sieciami Wi-Fi obsługiwanymi przez operatora. W miejscach o wysokim natężeniu ruchu lub z minimalnym zasięgiem sieci komórkowej, takich jak stadiony czy stacje metra, sieć Wi-Fi operatora poprawia jakość połączeń i odciąża ruch.

losowego generowania adresu MAC.

Randomizacja adresów MAC umożliwia urządzeniom używanie losowych adresów MAC podczas wyszukiwania nowych sieci, gdy nie są obecnie powiązane z siecią. W Androidzie 9 i nowszych można włączyć opcję dla programistów, aby urządzenie używało losowego adresu MAC podczas łączenia z siecią Wi-Fi.

Włącz Wi-Fi automatycznie

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

Czas błądzenia w sieci Wi-Fi

Czas RTT (Round Trip Time) pozwala urządzeniom mierzyć odległość do innych urządzeń obsługujących, niezależnie od tego, czy są to punkty dostępu (AP) czy urządzenia Wi-Fi Aware (jeśli urządzenie obsługuje Wi-Fi Aware). Ta funkcja opiera się na protokole IEEE 802.11mc i umożliwia aplikacjom korzystanie z ulepszonej dokładności i świadomości lokalizacji.

Ulepszenia dotyczące punktacji Wi-Fi

Ulepszone modele punktacji Wi-Fi szybko i precyzyjnie określają, kiedy urządzenie powinno opuścić połączoną sieć Wi-Fi lub połączyć się z nową siecią Wi-Fi. Te modele zapewniają użytkownikom niezawodność i płynność działania, eliminując przerwy w połączeniu.

Sprawdź i dostosuj wartości RSSI w zasobach config.xml, ze szczególnym uwzględnieniem tych elementów:

  • 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

Wi-Fi STA/AP równoległość

Wi-Fi STA/AP równoległość to zdolność urządzeń do jednoczesnego działania w trybie stacji (STA) i punktu dostępu (AP). W przypadku urządzeń obsługujących dwuzakresowe Wi-Fi (DBS) umożliwia to korzystanie z funkcji takich jak nieprzerywanie działania Wi-Fi STA, gdy użytkownik chce włączyć hotspot (SoftAP).

Ulepszenia dotyczące WiFiStateMachine

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

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

Ogólnie rzecz biorąc,WifiStateMachine pozwala na skonfigurowanie Wi-Fi w jednym z tych 4 stanów:

  • Tryb klienta (możliwość łączenia się i skanowania)
  • Tryb tylko skanowania
  • Tryb SoftAP (hotspot Wi-Fi)
  • Wyłączone (Wi-Fi całkowicie wyłączone)

Każdy tryb Wi-Fi ma inne wymagania dotyczące uruchomionych usług i powinien być skonfigurowany w sposób spójny, 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 obsługi trybu w sposób jawny, zarządzanie wątkami jest obsługiwane w sposób spójny, a wykorzystanie kanałów asynchronicznych jako mechanizmu synchronizacji zostało wyeliminowane.

Aktualizacje uprawnień Wi-Fi

W Androidzie 9 i nowszych uprawnienia aplikacji CHANGE_WIFI_STATE są domyślnie włączone. Uprawnienia każdej aplikacji możesz wyłączyć na stronie ustawień w sekcji Ustawienia > Aplikacje i powiadomienia > Specjalny dostęp aplikacji > Sterowanie Wi-Fi.

Aplikacje muszą być w stanie obsłużyć przypadki, gdy uprawnienie CHANGE_WIFI_STATE nie zostało przyznane.

Aby sprawdzić to zachowanie, uruchom testy roboelectric i ręczne.

Testy ręczne:

  1. Kliknij Ustawienia > Aplikacje i powiadomienia > Specjalny dostęp do aplikacji > Sterowanie Wi-Fi.
  2. Wybierz uprawnienie aplikacji i wyłącz je.
  3. Sprawdź, czy Twoja aplikacja może obsłużyć scenariusz, w którym nie ma przyznanego uprawnienia CHANGE_WIFI_STATE.

Wycofanie WPS

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

Grafika

Implementacja

Vulkan 1.1 API

Android 9 i nowsze wersje obsługują implementację interfejsu API do grafiki Vulkan 1.1.

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

Android 9 i nowsze wersje zawierają narzędzie WinScope do śledzenia przełączania okien. WinScope zapewnia infrastrukturę i narzędzia do rejestrowania i analizowania stanu menedżera okien podczas i po przejściach. Umożliwia nagrywanie i przechodzenie przez przejścia między oknami, a także zapisywanie wszystkich odpowiednich stanów menedżera okien w pliku śledzenia. Możesz użyć tych danych, aby odtworzyć i przejrzeć przejście.

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

Interakcja

Dźwięk w samochodzie

Dokument Automotive Audio opisuje architekturę audio w przypadku implementacji Androida w samochodach.

HAL neuronowych sieci neuronowych definiuje abstrakcję różnych akceleratorów. Sterowniki tych akceleratorów muszą być zgodne z tym interfejsem HAL.

Interfejs HAL pojazdu

Właściwości pojazdu opisują zmiany w interfejsie HAL pojazdu.

Wybór satelity GNSS

Podczas pracy z interfejsami HAL nowego globalnego systemu nawigacji satelitarnej (GNSS) (w wersji 1.1 lub nowszej) framework Androida monitoruje ustawienia Androida. Partnerzy mogą zmieniać ustawienia usług Google Play lub inne aktualizacje systemu. Te ustawienia informują GNSS HAL, czy niektóre satelity GNSS nie powinny być używane. Może to być przydatne w przypadku ciągłych błędów satelity GNSS lub błędów konstelacji albo do szybszego reagowania na problemy z implementacją GNSS HAL, które mogą wystąpić podczas mieszania konstelacji z użyciem różnych systemów czasowych i zdarzeń zewnętrznych, takich jak przesunięcia sekundy przesilnej, dnia lub tygodnia.

Model sprzętu GNSS

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

Uprawnienia

Konfigurowanie aktualizacji kontroli dostępu dyskrecjonalnego

Konfigurowanie kontroli dostępu dyskretnego (DAC) zawiera aktualizacje mechanizmu identyfikatorów Androida (AID) umożliwiające rozszerzenie możliwości systemu plików.

Dodawanie uprawnień aplikacji z podwyższonymi uprawnieniami do białej listy

W Androidzie 9 i nowszych, jeśli są uprawnienia, które powinny zostać odrzucone, zmodyfikuj plik 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 strumieniowego przesyłania wideo, jeśli mają dostęp do dostępnej przepustowości danych.

Na urządzeniach z Androidem 6.0 lub nowszym dzwoniąca osoba, która chce uzyskać szacowany pasmoprzepust, może ConnectivityManager.requestBandwidthUpdate() uzyskać szacowany pasmoprzepust w dół łącza.

Na urządzeniach z Androidem 9 lub nowszym wywołanie funkcji onCapabilitiesChanged() jest wywoływane automatycznie, gdy nastąpi znaczna zmiana szacowanej przepustowości, a wywołanie funkcji requestBandwidthUpdate() nie będzie miało żadnego efektu. Powiązane z nim parametry getLinkDownstreamBandwidthKbps()getLinkUpstreamBandwidthKbps() będą wypełniane zaktualizowanymi informacjami dostarczanymi przez warstwę fizyczną.

Urządzenia mogą też sprawdzać przepustowość komórek LTE za pomocą ServiceState.getCellBandwidths(). Dzięki temu aplikacje mogą określić, jaka przepustowość (częstotliwość) jest dostępna w danej komórce. Informacje o szerokości pasma komórkowego są dostępne w ukrytym menu, aby testerzy polscy mogli sprawdzać najnowsze informacje.

Monitorowanie ruchu eBPF

Narzędzia do monitorowania ruchu sieciowego eBPF używają kombinacji implementacji przestrzeni jądra i użytkownika do monitorowania wykorzystania sieci na urządzeniu od ostatniego uruchomienia. To narzędzie zapewnia dodatkowe funkcje, takie jak oznaczanie gniazd, oddzielanie ruchu na pierwszym planie od ruchu w tle oraz zapora sieciowa na podstawie UID, która blokuje aplikacjom dostęp do sieci w zależności od stanu urządzenia.

Przywracanie do interfejsów API o niższym priorytecie

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

Jeśli producent OEM zmodyfikuje agentów kopii zapasowej w przypadku dowolnego pakietu systemowego (android, system, ustawienia), ci agenci powinni obsługiwać przywracanie zestawów kopii zapasowych utworzonych na nowszych wersjach platformy bez zawieszania się i przywracać co najmniej część danych.

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

Ta funkcja jest domyślnie włączona. Obsługę funkcji tworzenia kopii zapasowych w ustawieniach można wyłączyć w przyszłych wersjach za pomocą opcji Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION. Nie jest wymagane żadne dodatkowe wdrożenie, chyba że producent urządzenia rozszerzy jednego z agentów kopii zapasowej zawartych w ROM (lub doda agenta niestandardowego).

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

  • PackageManagerBackupAgent obsługuje przyszłe wersje danych kopii zapasowej za pomocą wersji formatu. Rozszerzenia muszą być zgodne z obecnym kodem przywracania lub muszą być zgodne z instrukcjami w klasie, które obejmują zmianę odpowiednich stałych.

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

  • SettingsBackupAgent określa restoreAnyVersion = true w Androidzie 9 i wyższych. Częściowa obsługa za pomocą walidatorów. Ustawienie można przywrócić z wyższej wersji interfejsu API, jeśli istnieje dla niego weryfikator w docelowym systemie operacyjnym. Dodawanie dowolnego ustawienia powinno być poprzedzone walidacją. Szczegóły znajdziesz w klasie.

  • Każdy niestandardowy agent kopii zapasowej zawarty w ROM powinien zwiększyć numer wersji kodu za każdym razem, gdy zostanie wprowadzona niezgodna zmiana w formacie danych kopii zapasowej, oraz zapewnić wartość restoreAnyVersion = false (wartość domyślna), jeśli agent nie jest przygotowany do obsługi danych kopii zapasowej z późniejszej wersji kodu.

Enterprise

Ulepszenia profilu zarządzanego

Zmiany w interfejsie dotyczące profili zarządzanych ułatwiają użytkownikom identyfikowanie, uzyskiwanie dostępu do profilu zarządzanego i zarządzanie nim.

Wstrzymywanie transmisji strumieniowych OTA

Nowa usługa @SystemApi umożliwia właścicielom urządzeń w nieograniczonym czasie wstrzymywać aktualizacje OTA, w tym aktualizacje zabezpieczeń.

Wydajność

Zdrowie 2.0

Android 9 i nowsze wersje zawierają android.hardware.healthHAL 2.0, czyli ważną aktualizację z Health@1.0 HAL. Więcej informacji znajdziesz na tych stronach:

Rozwiązanie dotyczące buforowania plików APK

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

Optymalizacja na podstawie profilu

Android 9 i nowsze wersje obsługują stosowanie optymalizacji kierowanej przez profil (PGO) w Clangu w natywności w modułach natywnych Androida, które mają reguły kompilacji w ramach projektu.

Zapisywanie z wyprzedzeniem

Specjalny tryb SQLiteDatabase o nazwie zgodność z rejestrowaniem z wyprzedzeniem (WAL) umożliwia bazie danych korzystanie z journal_mode=WAL przy zachowaniu maksymalnie 1 połączenia na bazę danych.

Czas uruchamiania

Android 9 zmienia optymalizację czasu uruchamiania w sposób opisany w artykule Optymalizacja czasu uruchamiania.

Moc

Ograniczenia dotyczące działania w tle

Android 9 i nowsze zawiera ograniczenia działania w tle, które umożliwiają użytkownikom ograniczanie aplikacji, które mogą zużywać zbyt dużo energii. System może też sugerować wyłączenie aplikacji, które negatywnie wpływają na stan urządzenia.

Urządzenia bez baterii

Android 9 obsługuje urządzenia bez baterii lepiej niż w poprzednich wersjach. Android 9 usuwa kod dotyczący urządzeń bez baterii, który domyślnie zakładał, że bateria jest obecna, w 100% naładowana i w dobrym stanie, a jej termistor ma normalną temperaturę.