Na tej stronie znajdziesz podsumowanie najważniejszych funkcji w wersji Androida 10 oraz linki do dodatkowych informacji. Podsumowania funkcji są uporządkowane według lokalizacji dokumentacji na tej stronie.
Budowanie
java_sdk_library
Android 10 wprowadza nową regułę kompilacji java_sdk_library
, która rozwiązuje problemy ze zgodnością w przypadku udostępnianych bibliotek Javy. Producenci urządzeń mogą używać tego mechanizmu w przypadku własnych udostępnianych bibliotek Java, aby zachować zgodność wsteczną interfejsów API.
Architektura
Moduły systemu
Android 10 przekształca niektóre komponenty systemu Android w moduły i umożliwia ich aktualizowanie poza normalnym cyklem aktualizacji Androida. Przykładowe moduły:
- Środowisko wykonawcze Androida
- Conscrypt
- Resolver DNS
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Dane strefy czasowej
Warstwa abstrakcji sprzętowej (HAL)
Android 10 dodaje obsługę HAL, aby wyłączać je automatycznie, gdy nie mają klientów.
Bąbelki
Interfejs ABI
Android 10 obsługuje nowe narzędzia do monitorowania ABI, które ułatwiają porównywanie, śledzenie i łagodzenie zmian ABI jądra, które wpływają na zgodność z modułami jądra.
Android 10 wprowadza też sprawdzanie użycia ABI na podstawie symboli. Sprawdzacz może wykrywać nieaktualne gotowe binarne pliki wykonywalne w momencie kompilacji, aby deweloperzy bibliotek wspólnych wiedzieli, które gotowe binarne pliki wykonywalne mogą zostać uszkodzone przez wprowadzone zmiany i które z nich muszą zostać ponownie skompilowane.
Demon Android Live-Lock
Android 10 zawiera demona Android Live-Lock (llkd), który ma za zadanie wykrywać i łagodzić blokady jądra.
vDSO32 na ARM64
Android 10 obsługuje vDSO32 na 64-bitowych jądrach, co zapewnia wzrost czasu pracy na baterii o 0,4% i inne ulepszenia wydajności.
wpisy fstab dla wczesnych partycji zamontowanych.
Android 10 wymaga, aby na urządzeniach określano wpisy fstab
dla wcześniej zamontowanych partycji za pomocą pliku fstab
w ramce pierwszego etapu ramdiska.
HIDL
Offload BroadcastQueue
Android 10 zawiera nową funkcję przenoszenia BroadcastQueue
do istniejących kolejek w tle i na pierwszym planie. Kolejka przenoszenia ma takie same priorytety i zachowanie limitu czasu jak kolejka w tle. Aby nie blokować kolejki w tle, w której mogą występować bardziej interesujące lub widoczne dla użytkownika transmisje, kolejka przenoszenia obsługuje transmisję BOOT_COMPLETED
, którą wiele aplikacji może odtwarzać, a która może trwać długo.
Kolejka przenoszenia danych obsługuje obecnie tylko transmisję BOOT_COMPLETED
, ale może obsługiwać też inne długie transmisje.
Usługa SystemSuspend
Android 10 zastępuje wątek w libsuspend
odpowiedzialny za inicjowanie zawieszania systemu usługą SystemSuspend HIDL. Ta implementacja oferuje te same funkcje co poprzednie wersje, jednocześnie korzystając z zalet infrastruktury Androida HIDL.
safe_union w HIDL
Android 10 wprowadza w HIDL typ union z jasno oznaczonym tagiem safe_union
.
Konfiguracja
ConfigStore HAL
W Androidzie 10 wycofujemy interfejs ConfigStore HAL ze względu na duże zużycie pamięci i trudność obsługi. Zastępujemy go właściwościami systemowymi.
Interfejs API Schematu pliku konfiguracji
Platforma Android zawiera dużą liczbę plików XML do przechowywania danych konfiguracyjnych. Wiele plików XML znajduje się na partycji vendor
, ale są one odczytywane na partycji system
. W tym przypadku schemat pliku XML służy jako interfejs między tymi dwoma partycjami, dlatego musi być wyraźnie określony i musi ewoluować w sposób zapewniający zgodność wsteczną. Przed Androidem 10 platforma nie udostępniała mechanizmów, które wymagałyby określania i używania schematu XML lub zapobiegały niekompatybilnym zmianom w tym schemacie. Android 10 udostępnia ten mechanizm, zwany interfejsem API schematu pliku konfiguracji.
Właściwości systemowe jako interfejsy API
Właściwości systemu dostępne w różnych partycjach są schematyzowane w plikach opisów sysprop
, a interfejsy API do uzyskiwania dostępu do właściwości są generowane jako konkretne funkcje w C++ i klasy w Javie.
Obiekt interfejsu dostawcy (VINTF)
VINTF
Zmiany w VINTF w Androidzie 10:
- wycofanie tagów wersji AVB.
- Dodawanie informacji o rdzeniu w pakietach OTA
- Kompilowanie oficjalnych plików manifestu ODM
- Dodawanie tabeli zgodności produktów
- Powiązanie elementu pliku manifestu z modułem HAL w systemie kompilacji
Program rozruchowy
Ramdisk
W Androidzie 10 system plików głównych nie jest już uwzględniany w katalogu ramdisk.img
, ale zamiast tego jest scalany z katalogiem system.img
.
Tworzenie partycji ODM
Android 10 obsługuje tworzenie partycji odm
za pomocą systemu kompilacji Androida. Do personalizacji możesz użyć osobnej partycji /odm
, co pozwoli Ci używać jednego obrazu dostawcy dla wielu kodów SKU sprzętu. Umożliwia to producentom oryginalnego projektu (ODM) dostosowanie pakietów dostawców płyt głównych (BSP) dla układów system-on-chip (SoC) do konkretnych urządzeń (ich płyt głównych). Mogą one wdrażać moduły jądra dla komponentów specyficznych dla danej płyty, demonów specyficznych dla danej płyty lub własnych funkcji na warstwach abstrakcji sprzętowej (HAL). Mogą też zastępować komponenty SoC lub dostosowywać je.
Wersje nagłówka obrazu rozruchowego
Android 10 aktualizuje nagłówek obrazu rozruchu do wersji 2, która zawiera sekcję do przechowywania obrazu blobu drzewa urządzenia (DTB). Testy VTS Androida 10 sprawdzają, czy wszystkie urządzenia uruchamiane z Androidem 10 używają nagłówka obrazu rozruchowego w wersji 2 i czy zawierają prawidłowy obraz DTB w ramach obrazów rozruchowych/odzyskiwania.
Obrazy do przywracania na urządzenia inne niż A/B
W Androidzie 9 lub nowszym obraz odzyskiwania musi zawierać informacje z obrazu nakładki. Producenci urządzeń mogą używać DeviceTree lub interfejsu ACPI (Advanced Configuration and Power Interface) do opisywania wszystkich urządzeń, których nie można wykryć. Android 10 i nowsze wersje obsługują architektury, które używają ACPI zamiast bloba DeviceTree do nakładania (DTBO).
Stabilna wersja AIDL
Android 10 obsługuje stabilną wersję języka definiowania interfejsu Androida (AIDL), który umożliwia śledzenie interfejsu programowania aplikacji (API) lub interfejsu binarnego aplikacji (ABI) udostępnianego przez interfejsy AIDL.
Przenoszenie fastboot do przestrzeni użytkownika
Android 10 obsługuje partycje o zmiennym rozmiarze dzięki przenoszeniu implementacji fastboot z bootloadera do przestrzeni użytkownika.
Wyświetlacz
Odtwarzanie filmów HDR
Android 10 obsługuje odtwarzanie w formatach HDR10, VP9 i HDR10+.
Klasyfikacja tekstu
Klasyfikacja tekstu wykorzystuje techniki systemów uczących się, aby ułatwić deweloperom klasyfikowanie tekstu. Android 10 wprowadza 2 metody interfejsu TextClassifier API: suggestConversationActions
i detectLanguage
.
Metoda suggestConversationActions
generuje sugerowane odpowiedzi i działania na podstawie danej rozmowy, a metoda detectLanguage
wykrywa język tekstu.
Obsługa renderowania czcionki Zawgyi
Zawgyi to najpopularniejsza czcionka w Mjanmie. Android 9 i starsze nie obsługiwały wyświetlania czcionki Zawgyi, ponieważ nie jest ona zgodna z Unicode. Android 10 rozwiązuje ten problem, udostępniając czcionkę Unicode, która umożliwia wyświetlanie zarówno birmańskiego Unicode, jak i Zawgyi. Aby obsługiwać renderowanie czcionek Zawgyi na urządzeniach z Androidem 10, nie musisz nic robić. Jeśli Twoje urządzenia mają niestandardową implementację obsługującą Zawgyi, możesz:
- Cofnij te zmiany i użyj metody obsługiwanej przez platformę.
- Zachowaj czcionkę Zawgyi w systemie i użyj kodu lokalizacji
my-qaag
w plikachfonts.xml
. Więcej informacji znajdziesz w informacjach o wersji CLDR Unicode dotyczących Zawgyi (Qaag).
Ograniczenia ukrywania ikon aplikacji
Android 10 ogranicza możliwość ukrywania przez aplikacje ikon na ekranie głównym. Jeśli aplikacja nie ma włączonej aktywności w wyskakującym okienku, system wyświetla w nim zsyntetyzowaną aktywność, która reprezentuje stronę szczegółów aplikacji w ustawieniach systemu.
Więcej informacji o logice używanej do wyświetlania ikon aplikacji, w tym o typach aplikacji, których ikony nie są wyświetlane, znajdziesz w dokumentacji dotyczącej interfejsu getActivityList()
w dokumentacji interfejsu API.
Ustawienia
Aby ułatwić dostęp, Android 10 zawiera ustawienia limitu czasu, które można dostosowywać. Zmiany w interfejsie API i ustawieniach są dostępne w Androidzie 10. Jeśli dostosowujesz ustawienia, upewnij się, że ta funkcja jest obsługiwana. Jeśli masz elementy interfejsu, które na urządzeniu wygasają, użyj interfejsu timeouts API. Więcej informacji znajdziesz w wytycznych dotyczących ułatwień dostępu dla programistów Androida.
Zgodność
Dokument definicji zgodności z Androidem (CDD)
Dokument definicji zgodności z Androidem 10 opiera się na poprzednich wersjach i zawiera aktualizacje dotyczące nowych funkcji oraz zmiany wymagań dotyczących wcześniej opublikowanych funkcji.
Testy
Compatibility Test Suite (CTS)
Android CTS ma osobną stronę z informacjami o wersji, na której znajdziesz wiele ważnych zmian w Androidzie 10.
Pobrania z CTS
Pakiety CTS obsługujące Androida 10 są dostępne na stronie Pobieranie pakietów CTS. Kod źródłowy dołączonych testów można zsynchronizować z tagiem android-cts-10_r1
w drzewie open source.
CTS shim APEX
Android 10 wprowadza pakiet o nazwie CtsShimApex
, który musi być wstępnie zainstalowany na urządzeniu, aby można było pisać testy CTS do zarządzania APEX.
Tryb jarzma testowego
Tryb testów CTS pomaga deweloperom zautomatyzować testowanie urządzenia lub floty urządzeń.
Tryb aplikacji błyskawicznych
Od Androida 10 CTS działa w trybie aplikacji błyskawicznych, co oznacza, że plik APK testu jest instalowany jako aplikacja błyskawiczna i uruchamia testy.
Oprócz trybu CTS dla aplikacji błyskawicznych Android 10 zawiera weryfikator CTS dla aplikacji błyskawicznych.
Test dźwięku w CTS Verifier Pro
Android 10 dodaje test CTS Verifier dotyczący zgodnosci z wymaganiami Pro Audio.
Testy MIDI w weryfikatorze CTS
W Androidzie 10 test weryfikujący MIDI w CTS sprawdza funkcjonalność MIDI z interfejsami MIDI USB, interfejsami MIDI Bluetooth i wirtualnym ścieżką urządzenia MIDI.
Interpretacja testu CTS
Android 10 aktualizuje mechanizm interpretowania wyników CTS.
Vendor Test Suite (VTS)
Testowanie VTS za pomocą debugowanego dysku RAM
W Androidzie 10 obraz systemu ogólnego (GSI) używany do przeprowadzania testów zgodności CTS-on-GSI/VTS zmienił się z userdebug na userbuild, ponieważ GSI jest podpisany. Jednak polecenie adb root
, które przyznaje hostowi uprawnienia roota na urządzeniu z Androidem, które jest testowane, nie jest dostępne w kompilacji użytkownika. To problem, ponieważ VTS wymaga uruchomienia adb root
.
Wprowadziliśmy debug ramdisk, aby umożliwić adb root
, jeśli urządzenie jest odblokowane. Upraszcza to proces testowania, ponieważ można ponownie użyć tej samej kompilacji dla użytkownika system.img
(GSI lub OEM system.img
).
Weryfikacja usługi Composer
Android 10 dodaje nową klasę testu VTS dla weryfikacji kompozytora sprzętowego za pomocą interfejsu readback
w IComposerClient.hal
.
Jeśli dostawcy nie wdrożą readback
, testy przejdą automatycznie.
Debugowanie
wczytywanie bibliotek udostępnionych za pomocą różnych ładowarek klas;
W Androidzie 9 i starszych aplikacje wczytywały połączone biblioteki udostępnione Java w ładowarce klas aplikacji. W Androidzie 10 framework używa innego niż w aplikacji ładowarki klas do wczytywania bibliotek współdzielonych Java połączonych za pomocą uses-library
lub uses-static-library
.
Aplikacje nie powinny polegać na używaniu określonego ładowarki klas, więc ta zmiana nie powinna zakłócać ich działania. Jeśli jednak aplikacja korzysta z pojedynczego ładowarki klas, to działanie jest nieprawidłowe. Dodatkowo nadal obsługiwana jest widoczność klas w ramach pakietu prywatnego, ale nie jest ona obsługiwana w bibliotekach współdzielonych.
Producenci urządzeń mogą napotkać problemy ze zgodnością aplikacji podczas testowania urządzeń z Androidem 10.
Funkcje zabezpieczeń
Pełną listę ulepszeń dotyczących tylko zabezpieczeń i prywatności znajdziesz na stronie Ulepszenia dotyczące zabezpieczeń i prywatności w Androidzie 10.
Uwierzytelnianie twarzą
Uwierzytelnianie twarzą umożliwia użytkownikom odblokowywanie urządzenia przez spojrzenie na jego przód. Android 10 obsługuje nowy moduł uwierzytelniania twarzy, który może bezpiecznie przetwarzać klatki z kamery, zapewniając bezpieczeństwo i prywatność podczas uwierzytelniania twarzy na obsługiwanym sprzęcie. Android 10 ułatwia też implementacje zgodne z wymaganiami bezpieczeństwa, aby umożliwić integrację aplikacji z transakcjami takimi jak bankowość internetowa czy inne usługi.
Rozszerzony dostęp
Agenty zaufania, czyli mechanizmy używane przez mechanizmy uwierzytelniania na poziomie trzecim, takie jak Smart Lock, mogą przedłużać blokadę tylko w Androidzie 10. Agenty zaufania nie mogą już odblokowywać zablokowanych urządzeń i mogą utrzymywać je w stanie odblokowanym przez maksymalnie 4 godziny.
Szyfrowanie
OEMCrypto
Android 10 używa interfejsu OEMCrypto API w wersji 15.
Testowanie
BoundsSanitizer
Android 10 wdraża BoundsSanitizer (BoundSan) w Bluetooth i kodeki. BoundSan korzysta z oczyszczacza granic UBSan. To ograniczenie jest włączone na poziomie modułu. Pomaga ona chronić najważniejsze komponenty Androida i nie powinna być wyłączona. Obsługa BoundSan jest włączona w tych kodekach:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
Sanityzacja w przypadku przepełnienia liczb całkowitych
Android 10 włącza oczyszczanie wartości całkowitych (IntSan) w kodeki oprogramowania. Upewnij się, że wydajność odtwarzania jest akceptowalna w przypadku kodeków, które nie są obsługiwane przez sprzęt urządzenia. Ochrona przed atakami wewnętrznymi jest włączona w tych kodekach:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Pamięć tylko do wykonywania
Domyślnie sekcje kodu wykonywalnego w binarnych plikach systemowych AArch64 są oznaczone jako tylko do wykonania (nieczytelne) w celu wzmocnienia zabezpieczeń przed atakami polegającymi na ponownym wykorzystaniu kodu. Kod, który łączy dane i kod oraz celowo sprawdza te sekcje (bez wcześniejszego ponownego mapowania segmentów pamięci jako możliwych do odczytu), nie działa już prawidłowo. Aplikacje z docelowym pakietem SDK Androida 10 (poziom interfejsu API 29 lub wyższy) są dotknięte, jeśli próbują odczytać sekcje kodu bibliotek systemowych z włączoną pamięci tylko do odczytu (XOM) w pamięci, nie oznaczając ich najpierw jako odczytywalnych.
Scudo
Scudo to dynamiczny mechanizm alokacji pamięci w trybie użytkownika, który ma być bardziej odporny na luki związane z kupą. Zawiera ona standardowe prymity przydziału i zwolnienia pamięci w języku C, a także prymity C++.
ShadowCallStack
ShadowCallStack
(SCS) to tryb uwzględniający LLVM, który chroni przed nadpisaniem adresu zwracanego (np. przez przepełnienie bufora stosu) przez zapisanie adresu zwracanego funkcji do osobnego przydziału ShadowCallStack
w prologu funkcji niebędącej funkcją liścia i wczytanie adresu zwracanego z instancji ShadowCallStack
w epilogu funkcji.
Audio
Interfejs HAL dźwięku
Android 10 zawiera te nowe funkcje HAL audio:
AudioSource
AudioFormat
AudioChannelMask
Dodano dodatkowe wymagania dotyczące implementacji HAL dźwięku i podsystemu.
Efekty przetwarzania wstępnego
Android zapewnia efekty wstępnego przetwarzania, takie jak akustyczne usuwanie echa, automatyczna kontrola wzmocnienia i eliminowanie szumu.
Android 10 zawiera nowe wymagania dotyczące rejestrowania za pomocą VOICE_COMMUNICATION
.
Menedżer zasad dotyczących dźwięku
Android 10 zawiera znaczącą refaktoryzację menedżera zasad dotyczących dźwięku, aby zapewnić większą elastyczność w obsługiwaniu złożonych przypadków użycia w samochodach.
Dźwięk w wysokiej rozdzielczości
Android 10 zawiera te udoskonalenia dotyczące dźwięku w wysokiej rozdzielczości:
- Obsługa okna
- Obsługa częstotliwości 192 kHz
- Pomoc w 8 kanałach
- Uwzględnianie informacji o czasie
Równoczesne przechwytywanie
Android 10 poprawia wrażenia użytkowników korzystających z jednoczesnego nagrywania, które wymaga jednoczesnego nagrywania więcej niż 1 aktywnego dźwięku.
AudioPlaybackCapture
Android 10 zawiera nowy interfejs API o nazwie AudioPlaybackCapture
, który umożliwia aplikacjom kopiowanie dźwięku odtwarzanego przez inne aplikacje. Ta funkcja jest podobna do przechwytywania ekranu, ale dotyczy dźwięku.
Głównym zastosowaniem jest umożliwienie aplikacjom strumieniowego przesyłania dźwięku odtwarzanego przez gry.
Interfejs API do przechwytywania nie wpływa na opóźnienie aplikacji, z której dźwięk jest przechwytywany.
MIDI
Android 10 ułatwia przenoszenie profesjonalnych aplikacji audio korzystających z MIDI na platformę Android za pomocą interfejsu AMidi
NDK API.
Aparat
Podsumowanie zmian w interfejsie API aparatu, interfejsie HAL aparatu i module aparatu wprowadzonych w Androidzie 10 znajdziesz w artykule Aktualizacje aparatu w Androidzie 10.
Ulepszenia dotyczące prywatności w ramach frameworku aparatu
Android 10 wprowadza ulepszenia dotyczące prywatności w ramach aparatu. Aby uniknąć ujawniania potencjalnie poufnych statycznych informacji z aparatu w CameraCharacteristics
bez zgody użytkownika, aplikacje muszą uzyskać uprawnienie do pobierania statycznych metadanych z tagiem dotyczącym prywatności za pomocą metody getCameraCharacteristics
.CAMERA
Aby uzyskać listę kluczy właściwości aparatu, które wymagają uprawnienia CAMERA
, wywołaj metodę getKeysNeedingPermission
.
Zapytanie dotyczące zmiany konfiguracji sesji
Android 10 dodaje funkcję zapytania o konfigurację sesji, która umożliwia zwiększenie wydajności dzięki większej kontroli nad logiką konfiguracji wewnętrznych parametrów sesji.
Interfejsy API do zarządzania buforem w aparacie HAL3
Android 10 wprowadza opcjonalne interfejsy API do zarządzania buforem w kamerze HAL3, które umożliwiają implementację logiki zarządzania buforem w celu uzyskania różnych kompromisów między pamięcią a opóźnieniem rejestrowania w przypadku implementacji kamery HAL.
Dynamiczny przełącznik aparatu w przystawce do aparatu (HAL)
Android 10 wprowadza dynamiczny tag metadanych ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
, który wskazuje aktywny podrzędny aparat fizyczny urządzenia z logiczną kamerą. Więcej informacji znajdziesz w artykule Więcej informacji o obsłudze wielu kamer.
Obsługa ukrywania fizycznych kamer
W Androidzie 10 komponent HAL aparatu może zmniejszyć liczbę fizycznych kamer, które aplikacja może otworzyć bezpośrednio. Więcej informacji znajdziesz w artykule Obsługa wielu kamer.
Interfejs Camera2 VNDK API
W Androidzie 10 moduły dostawcy mogą uzyskiwać dostęp do urządzeń aparatu i nimi sterować za pomocą dwóch nowych standardowych interfejsów HIDL: android.frameworks.cameraservice.service@2.0
i android.frameworks.cameraservice.device@2.0
. Aby ułatwić korzystanie z interfejsów HIDL, w Androidzie 10 udostępniono też bibliotekę libcamera2_vendor
, dostępną dla dostawców. Ta biblioteka jest podobna do biblioteki Camera NDK, ale z kilkoma drobnymi modyfikacjami.
Konfiguracje strumienia
Android 10 zawiera funkcje, które umożliwiają dostawcom kamer wyświetlanie zalecanych strumieni kamer klientom kamer i obsługę interfejsu API do zapytania o kombinacje strumieni.
Wymagania dotyczące łączenia transmisji z kamery
Urządzenia z Androidem 10 nie muszą już obsługiwać kombinacji strumieni z fizycznymi podkamerami. Jednak urządzenia z Androidem 10 z wersją interfejsu HAL aparatu 3.5 muszą obsługiwać isStreamCombinationSupported()
, aby aplikacje mogły sprawdzić, czy obsługiwana jest kombinacja strumieni zawierająca strumienie fizyczne.
Więcej informacji znajdziesz w artykule Więcej informacji o obsłudze wielu kamer.
zdjęcia HEIF
Android 10 zapewnia natywną obsługę aparatu w przypadku obrazów w formacie HEIF (High Efficiency Image File Format), które zapewniają lepszą jakość obrazu i mniejsze rozmiary niż obrazy JPEG. Aby obsługiwać obrazy HEIF, urządzenia muszą mieć koder HEIC lub HEVC.
aparaty monochromatyczne,
Android 10 zapewnia dodatkową obsługę formatu Y8, statycznych metadanych matrycy filtra kolorów monochromatycznych i podczerwieni (NIR) oraz funkcji DngCreator
w przypadku aparatów monochromatycznych.
Łączność
Połączenia i wiadomości
Numery alarmowe i połączenia alarmowe
Android 10 zapewnia lepszą obsługę połączeń alarmowych. W sytuacji awaryjnej urządzenia z obsługą IRadio HAL w wersji 1.4 mogą nawiązywać połączenia alarmowe, korzystając z numerów alarmowych pobranych ze źródła, takiego jak karta SIM, sygnał sieci lub baza danych Androida. Numery mogą być grupowane według kategorii służb ratunkowych, takich jak policja, straż pożarna czy pogotowie ratunkowe.
Interfejsy API połączeń grupowych
Interfejsy API połączeń grupowych są rozszerzeniem interfejsów eMBMS dodanych w Androidzie 9. Nowe interfejsy API definiują standard, który umożliwia aplikacjom dołączanie do połączeń grupowych z transmisją komórkową i rozgłaszanie ich za pomocą pakietów oprogramowania pośredniczącego eMBMS. Aby rozmowy grupowe działały prawidłowo, wymagane jest wsparcie dostawcy chipsetu, dostawcy oprogramowania pośredniczącego i operatora komórkowego. Dokumentacja dla deweloperów znajduje się na stronie developer.google.com.
Funkcje karty SIM zdalnej
Android 10 wprowadza możliwości zdalnego korzystania z karty SIM, które umożliwiają aplikacjom do obsługi wiadomości na urządzeniu hosta z Androidem wysyłanie SMS-ów przez telefony przy użyciu mechanizmów takich jak Bluetooth. Więcej informacji znajdziesz w dokumentacji metody getSubscriptionType
i konstantej SUBSCRIPTION_TYPE_REMOTE_SIM
.
Wiele kart eSIM
W Androidzie 10 klasa EuiccManager
obsługuje urządzenia z wieloma kartami SIM (eSIM) lub kartami eUICC.
Aktualizacje eSIM
W przypadku urządzeń z Androidem 10, które obsługują eSIM, musisz zdefiniować tablicę identyfikatorów gniazda eUICC, których nie można usunąć. Urządzenia muszą też obsługiwać IRadio HAL w wersji 1.4 i IRadioConfig HAL w wersji 1.2. Więcej informacji znajdziesz w artykule Wdrażanie eSIM i Wymagania dotyczące HAL.
5G niesamodzielny (NSA)
Android 10 obsługuje 5G niesamodzielny (NSA). 5G NSA to rozwiązanie do sieci 5G, w których przypadku sieć jest obsługiwana przez istniejącą infrastrukturę 4G. W Androidzie 10 na pasku stanu może wyświetlać się ikona 5G, gdy urządzenie połączy się z siecią 5G.
Propozycja dotycząca konta telefonu
Android 10 wprowadza usługę sugestii kont telefonów, która umożliwia wyświetlanie użytkownikom sugestii kont telefonów podczas nawiązywania połączeń.
Operator
Migracja ustawień sieci komórkowej
W Androidzie 10 zmieniono architekturę kodu interfejsu użytkownika ustawień sieci komórkowej i przeniesiono go ze stosu telefonii na poziom ustawień. Aby obsługiwać przeniesiony kod, zmień te wartości konfiguracji ustawień sieci komórkowej z zasobów Androida na zasoby CarrierConfig
:
config_world_mode
->
CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL
config_support_tdscdma
->
CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL
config_support_tdscdma_roaming_on_networks
->
CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY
config_enabled_lte
->
CarrierConfigManager#KEY_LTE_ENABLED_BOOL
Identyfikatory urządzeń
Trwałe identyfikatory urządzenia (IMEI/MEID, IMSI i numer seryjny kompilacji) są chronione przez uprawnienia uprzywilejowane, a dostęp do nich mają też aplikacje właściciela urządzenia i profilu. Numer IMSI i numer seryjny karty SIM są dostarczane przez operatora, dlatego dostęp do tych identyfikatorów jest przyznawany pakietom z uprawnieniami operatora.
Wi-Fi
Wybór sieci
System Android nieustannie ocenia jakość połączonej sieci i jakość dostępnych sieci. Android 10 zawiera zaktualizowane algorytmy i procedury wybierania sieci Wi-Fi i przełączania się między nimi.
Skanowanie w ramach odciążania wybranej sieci Wi-Fi
Android 10 wprowadza opcjonalną metodę interfejsu API o nazwie setDeviceMobilityState()
w WifiManager
, która zwiększa odstęp między skanowaniem preferowanego przesyłania danych przez sieć (PNO), gdy urządzenie jest nieruchome, aby zmniejszyć zużycie energii.
Wi-Fi operatora
W Androidzie 10 urządzenia z funkcją Wi-Fi operatora automatycznie łączą się z skonfigurowanymi sieciami Wi-Fi operatora (sieciami z certyfikatami kluczy publicznych).
Wi-Fi Easy Connect
W Androidzie 10 urządzenia mogą korzystać z funkcji Wi-Fi Easy Connect, która do obsługi i konfigurowania urządzeń Wi-Fi używa protokołu Provisioning Device Protocol (DPP) opracowanego przez Wi-Fi Alliance (WFA).
Tryb niskiego opóźnienia w sieci Wi-Fi
Android 10 wprowadza tryb Wi-Fi o niskim opóźnieniu, który konfiguruje układ Wi-Fi w celu zmniejszenia opóźnienia.
Zaktualizowano serwer DHCP
W ramach tworzenia usługi „IP Server” usuwamy usługę dnsmasq
. Android 10 zastępuje funkcjonalność serwera DHCPv4 osobnym komponentem, który jest głównie napisany w języku Java, aby lepiej integrować się z poziomem kontroli interfejsu Java. Zwiększa to bezpieczeństwo i możliwość aktualizowania serwera DHCP. Więcej informacji znajdziesz w sekcji packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java
.
Aby wdrożyć tę zmianę, nie musisz nic robić: wszystkie urządzenia, które są wydawane lub aktualizowane do Androida 10, używają domyślnie DhcpServer
.
Jeśli masz niestandardowe ustawienia serwera DHCP, możesz przywrócić zachowanie Androida 9, ustawiając ustawienie globalne tether_enable_legacy_dhcp_server=1
.
Nowa funkcja DhcpServer
jest zawarta w module komponentów sieciowych, więc wszelkie dostosowywanie funkcji serwera DHCP powinno być przesyłane w górę.
WPA3 i Enhanced Open w sieci Wi-Fi
Android 10 obsługuje standardy zabezpieczeń Wi-Fi Protected Access 3 (WPA3) i Wi-Fi Enhanced Open, aby zapewnić lepszą ochronę prywatności i odporność na znane ataki.
Wi-Fi Direct
Wi-Fi Direct, znany też jako Wi-Fi P2P, umożliwia urządzeniom obsługującym tę technologię wykrywanie się nawzajem i łączenie się bezpośrednio za pomocą protokołu Wi-Fi Direct bez dostępu do internetu lub sieci komórkowej.
Ulepszenia dotyczące randomizacji adresów MAC
Od Androida 10 randomizacja adresu MAC jest domyślnie włączona w przypadku trybu klienta, SoftAp i Wi-Fi Direct. Urządzenia muszą udostępniać opcję włączania i wyłączania losowania adresów MAC dla każdego SSID w interfejsie użytkownika.
Passpoint R2
Android 10 wprowadza obsługę funkcji Passpoint R2. Passpoint R2 wdraża rejestrację online (OSU), czyli standardową metodę tworzenia nowych profili Passpoint. Android 10 obsługuje konfigurowanie profili EAP-TTLS za pomocą SOAP-XML.
NFC
Zabezpiecz komunikację NFC
Bezpieczne NFC umożliwia włączanie emulacji karty NFC poza hostem tylko wtedy, gdy ekran urządzenia jest odblokowany. Dzięki tej funkcji użytkownicy mogą włączyć bezpieczną technologię NFC, aby zwiększyć bezpieczeństwo.
Wycofanie obsługi Android Beam
W Androidzie 10 funkcja Android Beam nie jest już wymagana, a następujące interfejsy i metody zostały wycofane:
Interfejsy:
NfcAdapter.CreateBeamUrisCallback
NfcAdapter.CreateNdefMessageCallback
NfcAdapter.OnNdefPushCompleteCallback
Metody:
createBeamUris
invokeBeam
isNdefPushEnabled
setBeamPushUris
setBeamPushUrisCallback
setNdefPushMessage
setNdefPushMessageCallback
setOnNdefPushCompleteCallback
createNdefMessageCallback
onNdefPushCompleteCallback
Aby korzystać z Android Beam, użyj stałej funkcji android.sofware.nfc.beam
.
Grafika
ASurfaceControl
Android 10 wprowadza ASurfaceControl
, nowy sposób akceptowania buforów przez SurfaceFlinger
.
Implementacja grafiki
Warstwy OpenGL ES
Android 10 wprowadza system warstw dla GLES.
EGL 1.5
Android 10 implementuje interfejs EGL 1.5. Informacje o nowych funkcjach w EGL 1.5 znajdziesz w specyfikacji EGL 1.5 opublikowanej przez Khronos.
Vulkan
Android 10 obsługuje grafikę Vulkan 1.1.
Platforma obsługuje też VK_KHR_swapchain
w wersji 70, dzięki czemu aplikacja Vulkan może utworzyć VkImage
obsługiwany przez pamięć swapchain.
Częstotliwość odświeżania
Android 10 obsługuje częstotliwość odświeżania. Ta funkcja jest domyślnie wyłączona.
Interakcja
Automotive
Dźwięk w samochodzie
W Androidzie 10 kontekst HAL dźwięku jest mapowany na AudioAttributes.usage
w celu identyfikowania dźwięków. Android obsługuje 1 instancjęAUDIO_DEVICE_OUT_BUS
na kontekst. IAudioControl
Interfejs HAL udostępnia rozszerzenia interfejsu Audio HAL dla poszczególnych pojazdów.
Nawigacja przy użyciu gestów
Android 10 wprowadza opcję nawigacji w systemie wyłącznie za pomocą gestów. Informacje o sposobie przygotowywania aplikacji do korzystania z tej funkcji znajdziesz na stronie Nawigacja za pomocą gestów na stronie dla deweloperów aplikacji na Androida.
sieci neuronowe,
Android 10 wprowadza aktualizacje interfejsu API sieci neuronowych i interfejsu HAL sieci neuronowych. Podsumowanie zmian znajdziesz w artykule Sieci neuronowe.
Nowa i zaktualizowana dokumentacja sieci neuronowych na Androida 10:
- Omówienie
- AHardwareBuffer
- Burzliwe wykonywanie zadań i szybkie kolejki wiadomości
- Buforowanie kompilacji
- Wykrywanie i przypisywanie urządzeń
- Rozszerzenia dostawcy
Czujniki
interfejs HAL czujników 2.0,
Interfejs HAL dla czujników 2.0 umożliwia korzystanie z szybkich kolejek wiadomości (FMQ) do wysyłania zdarzeń czujników z interfejsu HAL do interfejsu Android Sensors Framework.
Wyłącz czujniki
Android 10 zawiera ustawienie dla deweloperów, które umożliwia wyłączenie wszystkich czujników na urządzeniu. Ta funkcja pomaga deweloperom testować działanie aplikacji w sytuacjach, gdy czujniki są niedostępne, a także daje użytkownikom możliwość sterowania czujnikami na urządzeniu.
Jeśli Twoje urządzenia korzystają z domyślnej implementacji SensorService
,
CameraService
i AudioPolicyService
, nie musisz wprowadzać żadnych dodatkowych zmian w projekcie referencyjnym. Jeśli masz inne czujniki, więcej informacji o obsługiwaniu tej funkcji znajdziesz w sekcji Personalizacja.
Multimedia
Komponenty multimedialne, które można aktualizować
Android 10 udostępnia komponenty multimedialne, które można aktualizować. Umożliwiają one aktualizowanie modułowych komponentów systemowych związanych z multimediami za pomocą infrastruktury Sklepu Google Play lub mechanizmu OTA udostępnianego przez partnera.
DRM multimediów
Android 10 zwiększa użyteczność i łatwość obsługi interfejsów API MediaDrm
Java i NDK.
Dekodowanie
Android 10 obsługuje dekodowanie AV1 SW.
Uprawnienia
Android 10 udostępnia dodatkowe ustawienia uprawnień na potrzeby przejrzystości i prywatności użytkowników.
Dane o dostawcy kontaktów i powiązaniach
Od Androida 10 dane związane z powiązaniem kontaktów, zarządzane przez usługę dostawcy kontaktów, są dostępne w inny sposób niż w Androidzie 9 i starszych. Te zmiany dotyczące dostępu do danych zwiększają prywatność użytkowników na wszystkich urządzeniach z Androidem 10, które korzystają z usługi dostawcy kontaktów. Baza danych, na której się opierają, nie zawiera już danych o powiązaniach kontaktów. Dlatego aplikacje nie mogą zapisywać danych w tym folderze ani z niego korzystać.
Zmiany w Androidzie 10 będą miały duży wpływ na interfejsy API. Jeśli Twoje aplikacje korzystają z wycofanych funkcji wymienionych w sekcji Informacje o dostawcy kontaktów i powiązaniach, możesz je zaktualizować, aby uwzględnić zmiany. Jeśli używasz też odgałęzi usługi Kontakty, musisz ją zaktualizować.
Trójstanowe uprawnienia do lokalizacji
Trzystanowe uprawnienia dostępu do lokalizacji w Androidzie 10 dają użytkownikom większą kontrolę nad tym, jak aplikacje uzyskują dostęp do lokalizacji urządzenia.
Przypomnienie o dostępie do lokalizacji w tle
Android 10 zawiera przypomnienie o dostępie do lokalizacji w tle, które zwiększa przejrzystość dotyczącą tego, jak duży dostęp do lokalizacji urządzenia mają aplikacje, oraz pomaga użytkownikom zachować kontrolę nad tym dostępem.
Ograniczanie lokalizacji domyślnych
Gdy aplikacja poprosi o lokalizację urządzenia, może poczekać na odpowiedź na żądanie lub użyć odbiorników aktywnej lokalizacji, aby uzyskać okazjonalną aktualizację lokalizacji. Począwszy od Androida 10, aby uzyskać aktualizacje lokalizacji w ramach możliwości, deweloperzy muszą określić, że potrzebują pasywnych aktualizacji lokalizacji z klasy FusedLocationProviderClient
.
uruchamianie aplikacji działających w tle;
W Androidzie 10 aplikacje bez uprawnień bez widocznego okna nie mogą automatycznie uruchamiać się na pierwszym planie. Ta zmiana ogranicza wyskakujące okienka reklamowe i przejmowanie reklam przez złośliwe programy. Nie musisz nic robić, aby włączyć tę funkcję.
Piaskownica aplikacji
W Androidzie 10 aplikacje mają ograniczony widok surowego systemu plików bez bezpośredniego dostępu do ścieżek takich jak /sdcard/DCIM
. Aplikacje zachowują jednak pełny dostęp do ścieżek związanych z ich pakietem, zwracanych przez dowolne odpowiednie metody, takie jak Context.getExternalFilesDir()
.
Aplikacje nadal mają pełny dostęp do ścieżek związanych z ich pakietami.
Aby zapewnić odpowiednią szczegółowość udostępniania danych, skorzystaj z wytycznych dotyczących piaskownicy aplikacji dotyczących udostępniania plików.
Ograniczanie dostępu aplikacji do schowka
W Androidzie 10 dostęp do schowka został zmieniony, aby nie można było wyświetlać zawartości schowka przez wywołanie funkcji ClipboardManager.getPrimaryClip
lub dodanie onPrimaryClipChangedListener
odbioru powiadomień o zmianach w schowku. Zwiększa to prywatność użytkowników i uniemożliwia aplikacjom złośliwym modyfikowanie schowka.
W Androidzie 10 dostęp do odczytu jest dozwolony tylko bieżącej aplikacji z aktywnym polem wprowadzania lub bieżącej klawiatury. Wywołanie listenera ClipboardManager.onPrimaryClipChanged()
jest teraz wywoływane tylko w przypadku aplikacji, które spełniają te ograniczenia.
ClipboardManager.getPrimaryClip
i ClipboardManager.getPrimaryClipDescription
zwraca null
, jeśli aplikacja wysyłająca żądanie nie jest domyślną metodą wprowadzania (IME) lub nie ma fokusa na wprowadzanie.
Uprawnienia w czasie działania obejmują rozpoznawanie aktywności
Użytkownicy widzą teraz okno dialogowe rozpoznawania aktywności, gdy aplikacja uzyskuje dostęp do lokalizacji urządzenia w tle. W Androidzie 10 uprawnienia z twardymi ograniczeniami muszą być prawidłowo dodane do białej listy.
Uprawnienia MANAGE_DEVICE_ADMINS
W Androidzie 10 uprawnienia MANAGE_DEVICE_ADMINS
zmieniono z wyłącznie podpisu lub podpisu z uprzywilejowaniami na wyłącznie podpis. Oznacza to, że tylko aplikacje podpisane przez platformę mogą ustawiać inne aplikacje jako administratorów urządzenia.
Ulepszenia interfejsu Sharing API
Android 10 udostępnia kilka nowych funkcji interfejsu Android Platform API związanych z udostępnianiem. Jeśli w ramach swojej implementacji zmodyfikowałeś kod arkusza Udostępnianie, upewnij się, że implementacja obsługuje te nowe funkcje. Jeśli nie zmodyfikowałeś kodu arkusza udostępniania w swojej implementacji, nie musisz nic robić, aby obsługiwać te nowe funkcje.
Środowisko uruchomieniowe Androida (ART)
Konfiguracja podpisana
Funkcja podpisany plik konfiguracji umożliwia umieszczanie w plikach APK konfiguracji ograniczeń interfejsu niebędącego pakietem SDK. Umożliwia to usunięcie z czarnej listy określonych interfejsów spoza pakietu SDK, aby AndroidX mógł z nich bezpiecznie korzystać. Dzięki tej zmianie AndroidX może dodawać obsługę nowych funkcji w starszych wersjach Androida.
Wydajność
Warstwa abstrakcji Cgroup
Android 10 zawiera warstwę abstrakcji cgroup oraz profile zadań, które deweloperzy mogą wykorzystać do opisania zestawu ograniczeń do zastosowania w wątku lub procesie.
Low Memory Killer Daemon (lmkd)
Android 10 obsługuje nowy lmkd
tryb, który wykorzystuje monitory informacji o zatrzymaniu kernela (PSI) do wykrywania nacisku pamięci.
Moc
Zarządzanie zasilaniem platformy
W Androidzie 10 tryb Doze można włączyć na urządzeniach zawsze włączonych i na urządzeniach zasilanych z baterii.
Rutynowe oszczędzanie baterii
W Androidzie 10 dostępna jest nowa opcja harmonogramu oszczędzania baterii o nazwie na podstawie rutyny. Rutyna oszczędzania baterii pozwala aplikacji wybranej przez producenta sprzętu na wysyłanie sygnałów do systemu w celu inteligentniejszego planowania oszczędzania baterii. Ta opcja wymaga skonfigurowania i nie jest wymagana.
Interfejs HAL – statystyki zasilania
W Androidzie 10 interfejs IPowerStats.hal
zastępuje interfejsy API do zbierania statystyk zużycia energii w interfejsie IPower.hal
.
Interfejs HAL Power nadal obsługuje te interfejsy API, ale w przyszłości zostaną one przeniesione wyłącznie do interfejsu HAL Power Stats.
Interfejs HAL statystyk zasilania zawiera nowe interfejsy API, które umożliwiają zbieranie danych z pomiarów zużycia energii na urządzeniu (na obsługiwanych urządzeniach). Zaktualizowano też istniejące interfejsy API do zbierania statystyk dotyczących zasilania, aby zwiększyć ich elastyczność. Interfejsy API dotyczące mocy pozostają w Power HAL i nie ulegają zmianie.
Zapobieganie przegrzewaniu się
System termiczny w Androidzie 10 abstrakcyjnie opisuje interfejsy urządzenia dla czujnika temperatury w ramach podsystemu termicznego, w tym procesora, układu GPU, baterii, skóry i urządzenia chłodzącego. Framework wprowadza interfejs sondowania, który umożliwia zapytanie o stan termiczny w celu zainicjowania ograniczenia, oraz interfejs wywołania zwrotnego, który umożliwia wysłanie wiadomości do użytkownika po przekroczeniu progu.
Android 10 udostępnia nowe typy danych za pomocą interfejsu IThermalService
za pomocą 3 nowych metod:
getCurrentThermalStatus()
zwraca bieżący stan termiczny urządzenia jako liczbę całkowitą, chyba że urządzenie jest ograniczane.addThermalStatusListener()
dodaje słuchacza.removeThermalStatusListener()
usuwa wcześniej dodanego słuchacza.
Aplikacje dodają i usuwają słuchaczy oraz uzyskują dostęp do stanu temperatury w klasie PowerManager
. Dostęp do informacji o powiązanych zdarzeniach przyczynowych ma tylko zaufana usługa systemowa, taka jak interfejs API Androida lub interfejs API producenta urządzenia. Producenci urządzeń lub systemów SoC muszą wdrożyć thermal HAL 2.0
, aby umożliwić pełną funkcjonalność nowego interfejsu termicznego.
Przykład implementacji środków ograniczających ryzyko związane z temperaturą znajdziesz w dokumentacji implementacji referencyjnej.
Aktualizacje
Format pliku APEX
Android Pony EXpress (APEX) to nowy format kontenera używany w procesie instalacji modułowych komponentów systemu.
Dynamiczne partycje
Partycje dynamiczne wprowadzają do Androida system partycjonowania przestrzeni użytkownika, który umożliwia tworzenie, zmianę rozmiaru i usuwanie partycji podczas aktualizacji OTA. Producenci urządzeń nie muszą się martwić o poszczególne rozmiary partycji, takie jak system
, vendor
i product
. Zamiast tego przydziela się jedną dużą partycję super
, a w jej obrębie można dynamicznie zmieniać rozmiar podpartycji.
Dynamiczne aktualizacje systemu
Dynamiczne aktualizacje systemu (DSU) umożliwiają utworzenie obrazu systemu Androida, który użytkownicy mogą pobrać z internetu i wypróbować bez ryzyka uszkodzenia bieżącego obrazu systemu.
Tworzenie i przywracanie kopii zapasowej dla wielu użytkowników
Android 10 obsługuje funkcję tworzenia kopii zapasowej i przywracania dla wszystkich użytkowników na urządzeniu. Wcześniej tworzenie i przywracanie kopii zapasowej było dostępne tylko dla użytkownika systemu. Utworzenie kopii zapasowej i przywrócenie danych przez niesystemowych użytkowników jest domyślnie wyłączone, ponieważ obejmuje tylko częściowe ustawienia, tapety i komponenty systemu.
Overlayfs
Użytkownicy pracujący z wersjami userdebug
lub eng
oczekują, że będą mogli efektywnie ponownie zamontować partycję systemową jako partycję do odczytu i zapisu, a następnie dodawać lub modyfikować dowolną liczbę plików bez ponownego flashowania obrazu systemu. Możesz użyć Overlayfs
, który automatycznie konfiguruje pamięć podręczną dla zapisywalnego systemu plików jako górnego punktu odniesienia i montuje ją nad niższą. Te działania są wykonywane w ramach żądań adb disable-verity
i adb remount
. Więcej informacji znajdziesz w pliku README Overlayfs w AOSP.
Obsługa biblioteki współużytkowanej w trybie odzyskiwania
W Androidzie 10 biblioteki współdzielone są dostępne na partycji odzyskiwania, co eliminuje konieczność stałego uruchamiania wszystkich plików wykonywalnych w tym trybie. Zasoby wspólne znajdują się w katalogu /system/lib
(lub /system/lib64
w przypadku urządzeń 64-bitowych) na partycji.
Aby dodać nową wspólną bibliotekę do partycji odzyskiwania, dodaj recovery_available: true
lub recovery: true
do Android.bp
wspólnej biblioteki. Pierwsza instaluje bibliotekę na partycji systemowej i partycji odzyskiwania, a druga tylko na partycji odzyskiwania.
Obsługa bibliotek współdzielonych nie może być tworzona za pomocą systemu kompilacji opartego na Make w Androidzie.
Aby przekonwertować istniejący plik wykonywalny w trybie odzyskiwania na plik dynamiczny, usuń LOCAL_FORCE_STATIC_EXECUTABLE := true
w pliku Android.mk
lub static_executable: true
(w pliku Android.bp
).
Punkt kontrolny danych użytkownika (UDC)
Android 10 wprowadza funkcję punktu kontrolnego danych użytkownika, która umożliwia Androidowi przywrócenie poprzedniego stanu, gdy aktualizacja bezprzewodowa Androida nie powiedzie się.