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 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 bibliotekach hidl_memory, HIDL @1.0::IAllocatorHIDL @1.0::IMapper. Jest on przeznaczony do usług HIDL, które mają wiele bloków pamięci używających wspólnego stosu 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 zmodyfikowaniem 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 specyficzny dla 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żywania 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 w bibliotekach 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 tych 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 na partycję /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 w systemie 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 scala 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 trybie odzyskiwania

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ą tworzenie nowych animacji 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 szerszym 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 zestaw wyświetlacza urządzenia (np. ekran, procesor graficzny i GPU) 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 należy wyłączać 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

ulepszone 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

Chronione transmisje systemowe mogą być wysyłane do aplikacji, które mają uprawnienia INSTALL_PACKAGES, gdy nastąpi zmiana właściwości takich jak lokalizacja czy 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ększą funkcjonalność 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 te polecenie i argument:

  • run retry ponownie wykonuje wszystkie testy, które nie powiodły się lub nie zostały wykonane podczas poprzednich sesji.
  • ‘--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 fuzji danych z czujników jest używane w ramach zestawu testów obrazu z kamery (Camera ITS) do testowania fuzji danych z czujników i testowania synchronizacji wielu kamer. Zapewnia spójne środowisko testowe do pomiaru dokładności sygnatury czasowej aparatu i innych czujników na telefonach 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 automatyczny 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-a 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 HALa VTS obejmuje metodę czasu wykonywania, która wykorzystuje konfigurację urządzenia do identyfikowania testów VTS, które należy pominąć na danym 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 lub 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, zbierając lepsze dane w szybszym tempie. 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 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 podatności.

integralność kontroli przepływu (CFI),

Całkowita integralność przepływu sterowania (CFI) to mechanizm zabezpieczeń, który uniemożliwia wprowadzanie zmian w pierwotnym grafie przepływu sterowania 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 pojedynczy klucz obecny w momencie 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 ma:

  • 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ą używać 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

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 indywidualnych piaskownicach SELinux.

Zmiany w SELinux w Treble

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

Inicjacja 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 systemu między partycjami systemvendor oraz zapewnia metodę zapewniającą spójność udostępnianych właściwości systemu.

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żywaj” (czyli kamery internetowe) za pomocą standardowego interfejsu API Camera2 w Androidzie 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 reprezentującego aparat, które składa się z co najmniej 2 fizycznych aparatów skierowanych w ten sam kierunek.

Parametry sesji

Wdrażanie parametrów sesji może skrócić czas oczekiwania, ponieważ umożliwia 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ść

Połączenia i 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ługiwanie przychodzących połączeń 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 chcą wiedzieć tylko, czy karta jest obecna, nie muszą słuchać zmian stanu aplikacji, a odbiorcy, którzy chcą 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 obszarach o wysokiej gęstości zaludnienia 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.

losowe generowanie adresów 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 dołączyć do nowej sieci Wi-Fi. Te modele zapewniają użytkownikom niezawodną i płynną obsługę, eliminując przerwy w połączeniu.

Sprawdź i dostosuj wartości RSSI w zasobach config.xml, szczególnie:

  • 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 kontrolowania aktywności Wi-Fi, koordynowania danych wejściowych użytkownika (tryby działania: hotspot, skanowanie, łączenie lub wyłączenie) oraz kontrolowania działań sieci Wi-Fi (takich jak skanowanie czy łączenie).

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 kontroli 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 przełączania okien

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ę na stronie platform/development/tools/winscope.

Interakcja

Dźwięk w samochodzie

Automotive Audio opisuje architekturę audio dla implementacji Androida związanych z motoryzacją.

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 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ęcie sekundy skokowej, 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. GNSS HAL 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 uprzywilejowanych 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 filmów, 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 wymienili telefony, a potem je zgubili lub uszkodzili.

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 przypadku 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ą podniesienie odpowiednich stałych wartości.

  • 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 jest dostępna 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 formatu danych kopii zapasowej, oraz zapewnić restoreAnyVersion = false (wartość domyślna), 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 dotyczące profili zarządzanych ułatwiają użytkownikom identyfikowanie, uzyskiwanie dostępu do profilu zarządzanego i zarządzanie nim.

Wstrzymywanie 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.health HAL 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 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 dla urządzeń bez baterii, które domyślnie zakładały, że bateria jest obecna, naładowana w 100% i w dobrym stanie, a jej termistor ma normalną temperaturę.