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::IAllocator
i HIDL @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:
- Stabilne wersje i aktualizacje jądra
- Wspólne jądra Androida
- Wymagania dotyczące modułowego jądra
- Wymagania dotyczące interfejsu
- Nakładki na drzewie urządzenia
Dostawca NDK
Zmiany w projektie
Informacje o zmianach w projektowaniu VNDK w Androidzie 9 i nowszych znajdziesz na tych stronach:
- Natywny pakiet do programowania dla sprzedawców (VNDK)
- Obsługa systemu kompilacji VNDK
- VNDK Definition Tool
- Katalogi, reguły i sepolicy
- Rozszerzenia VNDK
- Przestrzeń nazw łącznika
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.img
z system.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:
- Przewodnik po konfiguracji urządzenia Sensor Fusion Box zawiera instrukcje dotyczące konfigurowania testu i urządzenia Sensor Fusion Box po raz pierwszy.
- Sensor Fusion Box Assembly zawiera instrukcje montażu modułu Sensor Fusion.
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 system
i vendor
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_CHANGED
i TelephonyManager.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()
i 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:
- Kliknij Ustawienia > Aplikacje i powiadomienia > Specjalny dostęp do aplikacji > Sterowanie Wi-Fi.
- Wybierz uprawnienie aplikacji i wyłącz je.
- 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()
i 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ę.