Informacje o wersji Androida 10

Na tej stronie znajdziesz podsumowanie najważniejszych funkcji w wersji Androida 10 oraz linki do dodatkowych informacji. Podsumowania funkcji są uporządkowane według miejsca, w którym znajdują się ich dokumenty w tej witrynie.

Kompilacja

java_sdk_library

Android 10 wprowadza java_sdk_library, nową regułę kompilacji, która rozwiązuje problemy ze zgodnością w przypadku udostępnionych bibliotek Java. Producenci urządzeń mogą używać tego mechanizmu w przypadku własnych udostępnionych bibliotek Java, aby zachować zgodność wsteczną swoich interfejsów API.

Architektura

Komponenty systemu modułowego

Android 10 modularyzuje niektóre komponenty systemu Android i umożliwia ich aktualizowanie poza normalnym cyklem wydań Androida. Oto niektóre z modułów:

Warstwa abstrakcji sprzętowej (HAL)

Android 10 dodaje obsługę HAL-i, które automatycznie się wyłączają, gdy nie mają klientów.

Bąbelki

Interfejs ABI

Android 10 obsługuje nowe narzędzia do monitorowania interfejsu ABI, które pomagają porównywać, śledzić i ograniczać zmiany w interfejsie ABI jądra wpływające na zgodność z modułami jądra.

Android 10 wprowadza też oparty na symbolach sprawdzanie użycia interfejsu ABI. Sprawdzanie może wykrywać nieaktualne wstępnie skompilowane pliki binarne w czasie kompilacji, dzięki czemu deweloperzy bibliotek współdzielonych mogą wiedzieć, które wstępnie skompilowane pliki binarne mogą zostać uszkodzone przez ich zmiany i które z nich należy ponownie skompilować.

Demon Live-Lock na Androidzie

Android 10 zawiera demona blokady na żywo Androida (llkd), który ma wykrywać i ograniczać zakleszczenia jądra.

vDSO32 na ARM64

Android 10 obsługuje korzystanie z vDSO32 na 64-bitowych jądrach, co zapewnia o 0,4% dłuższy czas pracy na baterii i inne ulepszenia wydajności.

Wpisy fstab dla partycji montowanych na wczesnym etapie

Android 10 wymaga, aby urządzenia określały wpisy fstab dla wcześnie zamontowanych partycji za pomocą pliku fstab w pierwszym etapie dysku RAM.

HIDL

Offload BroadcastQueue

Android 10 zawiera nową kolejkę offload BroadcastQueue oprócz dotychczasowych kolejek backgroundforeground. Kolejka przeniesienia ma taki sam priorytet i takie samo zachowanie limitu czasu jak kolejka w tle. Aby zapobiec blokowaniu kolejki w tle, w której mogą się pojawiać bardziej interesujące lub widoczne dla użytkownika transmisje, kolejka przeniesiona obsługuje transmisję BOOT_COMPLETED, której wiele aplikacji nasłuchuje i której ukończenie może zająć dużo czasu. Kolejka wyładowania obecnie obsługuje tylko transmisję BOOT_COMPLETED, ale może obsługiwać inne długie transmisje.

Usługa SystemSuspend

W Androidzie 10 wątek libsuspendodpowiedzialny za inicjowanie zawieszenia systemu został zastąpiony usługą HIDL SystemSuspend. Ta implementacja oferuje funkcje równoważne poprzednim wersjom, a jednocześnie korzysta z zalet infrastruktury HIDL Androida.

safe_union w HIDL

Android 10 wprowadza w HIDL typ safe_union, który jest typem unii z jawnie oznaczonymi tagami.

Konfiguracja

Warstwa HAL ConfigStore

Android 10 wycofuje HAL ConfigStore ze względu na duże zużycie pamięci i trudności w użytkowaniu. Zastępuje go właściwościami systemu.

Config File Schema API

Platforma Android zawiera dużą liczbę plików XML do przechowywania danych konfiguracyjnych. Wiele plików XML znajduje się w partycji vendor, ale są one odczytywane w partycji system. W tym przypadku schemat pliku XML służy jako interfejs między 2 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 ani zapobiegałyby niezgodnym zmianom w schemacie. Android 10 udostępnia ten mechanizm, który nazywa się interfejsem API schematu pliku konfiguracyjnego.

Właściwości systemowe jako interfejsy API

Właściwości systemu, do których uzyskuje się dostęp w różnych partycjach, są schematyzowane w plikach opisu 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 obejmują:

  • Wycofywanie tagów wersji AVB
  • Dodawanie informacji o jądrze w pakietach OTA
  • Oficjalne tworzenie plików manifestu ODM
  • Dodawanie macierzy zgodności produktów
  • Powiązanie wpisu w pliku manifestu z modułem HAL w systemie kompilacji

Program rozruchowy

Ramdysk

W Androidzie 10 główny system plików nie jest już uwzględniany w ramdisk.img, ale jest scalany z system.img.

Tworzenie partycji ODM

Android 10 obsługuje tworzenie partycji odm za pomocą systemu kompilacji Androida. Możesz użyć osobnej partycji /odm na potrzeby dostosowań, co umożliwia używanie jednego obrazu dostawcy w przypadku wielu kodów SKU sprzętu. Umożliwia to producentom oryginalnego sprzętu (ODM) dostosowywanie pakietów obsługi płyt (BSP) dostawców układów SOC do konkretnych urządzeń (płyt). Mogą one wdrażać moduły jądra dla komponentów specyficznych dla płyty, demony specyficzne dla płyty lub własne funkcje w warstwach abstrakcji sprzętu (HAL). Mogą też wymieniać lub dostosowywać komponenty SoC.

Wersjonowanie nagłówka obrazu rozruchowego

Android 10 aktualizuje nagłówek obrazu rozruchowego do wersji 2, która zawiera sekcję do przechowywania obrazu DTB (drzewo urządzeń). Testy VTS w Androidzie 10 weryfikują, czy wszystkie urządzenia uruchamiane z Androidem 10 używają wersji 2 nagłówka obrazu rozruchowego i zawierają prawidłowy obraz DTB jako część obrazów rozruchowych lub odzyskiwania.

Obrazy przywracania na urządzeniach innych niż A/B

W Androidzie 9 i nowszych obraz przywracania systemu urządzenia musi zawierać informacje z obrazu nakładki. Producenci urządzeń mogą używać DeviceTree lub zaawansowanej konfiguracji i interfejsu zasilania (ACPI) do opisywania wszystkich urządzeń, których nie można wykryć. Android 10 i nowsze wersje obsługują architektury, które zamiast pliku binarnego DeviceTree do nakładki (DTBO) używają ACPI.

Stabilny AIDL

Android 10 obsługuje stabilny język definiowania interfejsu Androida (AIDL), czyli nowy sposób śledzenia interfejsu API/interfejsu ABI aplikacji udostępnianego przez interfejsy AIDL.

Przenoszenie fastboot do przestrzeni użytkownika

W Androidzie 10 dodano obsługę partycji o zmiennej wielkości przez przeniesienie implementacji fastboota z programu rozruchowego do przestrzeni użytkownika.

Wyświetlacz

Odtwarzanie filmów HDR

Android 10 obsługuje odtwarzanie HDR10, VP9 i HDR10+.

Klasyfikacja tekstu

Klasyfikacja tekstu wykorzystuje techniki uczenia maszynowego, aby ułatwić deweloperom klasyfikowanie tekstu. Android 10 wprowadza 2 metody interfejsu TextClassifier API: suggestConversationActionsdetectLanguage. 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 wersje nie obsługiwały renderowania czcionki Zawgyi, ponieważ nie jest ona zgodna ze standardem Unicode. Android 10 rozwiązuje ten problem, ponieważ zawiera czcionkę Unicode, która umożliwia jednoczesne renderowanie znaków Unicode w języku birmańskim i Zawgyi. Aby obsługiwać renderowanie czcionki Zawgyi na urządzeniach wprowadzanych na rynek z Androidem 10, nie trzeba niczego wdrażać. Jeśli Twoje urządzenia mają niestandardową implementację obsługującą Zawgyi, możesz:

Ograniczenia dotyczące ukrywania ikon aplikacji

Android 10 ogranicza możliwość ukrywania ikon aplikacji w programie uruchamiającym. Jeśli aplikacja nie ma włączonej aktywności uruchamiającej, system wyświetla w programie uruchamiającym syntetyzowaną aktywność. Ta aktywność reprezentuje stronę z informacjami aplikacji w ustawieniach systemu.

Więcej informacji o logice wyświetlania ikon aplikacji, w tym o typach aplikacji, których ikony nie są wyświetlane, znajdziesz w dokumentacji getActivityList() w dokumentacji API.

Ustawienia

Aby zwiększyć dostępność, Android 10 zawiera ustawienia limitu czasu, które użytkownik może dostosować. Zmiany w interfejsie API i ustawieniach są dostępne w Androidzie 10. Jeśli dostosujesz ustawienia, upewnij się, że ta funkcja jest obsługiwana. Jeśli na urządzeniu masz elementy interfejsu, które wygasają, użyj w ich przypadku interfejsu Timeouts API. Więcej informacji znajdziesz w wytycznych dotyczących ułatwień dostępu dla programistów na Androida.

Zgodność

Dokument definicji zgodności z Androidem (CDD)

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

Testy

Compatibility Test Suite (CTS)

Android CTS ma osobną stronę z informacjami o wersji, na której wymieniono wiele ważnych zmian w Androidzie 10.

Pobieranie CTS

Pakiety CTS obsługujące Androida 10 są dostępne na stronie Pobieranie 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

W Androidzie 10 wprowadzono 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 platformy testowej 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 instaluje plik APK testu jako aplikację błyskawiczną i uruchamia testy.

Oprócz trybu CTS dla aplikacji błyskawicznych Android 10 zawiera CTS Verifier dla aplikacji błyskawicznych.

Test profesjonalnego dźwięku w narzędziu CTS Verifier

W Androidzie 10 dodaliśmy test weryfikacyjny CTS dotyczący zgodności z Pro Audio.

Testy MIDI w narzędziu CTS Verifier

W Androidzie 10 test MIDI w narzędziu CTS Verifier sprawdza funkcje MIDI za pomocą interfejsów USB MIDI, interfejsów Bluetooth MIDI i wirtualnego urządzenia MIDI.

Interpretacja testu CTS

Android 10 aktualizuje mechanizm interpretowania wyników CTS.

Vendor Test Suite (VTS)

Testowanie VTS za pomocą debugowania ramdysku

W Androidzie 10 podstawowy obraz systemu (GSI) używany do testów zgodności CTS-on-GSI/VTS zmienia rodzaj kompilacji z userdebug na user, ponieważ GSI jest podpisany w wersji. Jednak polecenie adb root, które przyznaje hostowi uprawnienia roota na testowanym urządzeniu z Androidem, nie jest dostępne w kompilacji użytkownika. Jest to problem, ponieważ VTS wymaga adb root do działania.

Dysk RAM do debugowania umożliwia adb root, jeśli urządzenie jest odblokowane. Upraszcza to proces testowania, ponieważ wykorzystuje tę samą kompilację użytkownika system.img (GSI lub kompilację OEM system.img).

Weryfikacja sprzętowego komponentu Composer

Android 10 dodaje nową klasę testów VTS do weryfikacji Hardware Composer za pomocą interfejsu readbackIComposerClient.hal. Jeśli dostawcy nie wdrożą readback, testy zostaną automatycznie zaliczone.

Debugowanie

Wczytywanie bibliotek udostępnionych za pomocą różnych programów wczytujących klasy

W Androidzie 9 i starszych wersjach aplikacje wczytywały połączone biblioteki współdzielone Java w programie wczytującym klasy aplikacji. W Androidzie 10 platforma używa innego narzędzia do wczytywania klas niż narzędzie do wczytywania klas aplikacji, aby wczytywać biblioteki współdzielone Java połączone za pomocą uses-library lub uses-static-library.

Ogólnie rzecz biorąc, aplikacje nie powinny polegać na używaniu konkretnego programu ładującego klasy, więc ta zmiana nie powinna zakłócać ich działania. Jeśli jednak aplikacja korzysta z jednego modułu wczytywania klas, to zachowanie jest nieprawidłowe. Dodatkowo nadal obsługiwana jest widoczność pakietu prywatnego klas w tym samym pakiecie, ale nie jest ona obsługiwana w bibliotekach współużytkowanych.

Producenci urządzeń mogą napotkać problemy ze zgodnością aplikacji podczas testowania urządzeń z Androidem 10.

Funkcje zabezpieczeń

Pełniejszą listę ulepszeń związanych tylko z bezpieczeństwem i prywatnością znajdziesz na stronie Ulepszenia dotyczące bezpieczeństwa i prywatności w Androidzie 10.

Uwierzytelnianie twarzą

Uwierzytelnianie twarzą umożliwia użytkownikom odblokowywanie urządzenia przez spojrzenie na jego przednią część. Android 10 obsługuje nowy stos uwierzytelniania za pomocą rozpoznawania twarzy, który może bezpiecznie przetwarzać klatki z kamery, zachowując bezpieczeństwo i prywatność podczas uwierzytelniania za pomocą rozpoznawania twarzy na obsługiwanym sprzęcie. Android 10 zapewnia też prosty sposób na włączenie integracji aplikacji w przypadku transakcji takich jak bankowość internetowa lub inne usługi, które muszą być zgodne z wymaganiami dotyczącymi bezpieczeństwa.

Rozszerzony dostęp

Agenty zaufania, czyli mechanizm bazowy używany przez mechanizmy uwierzytelniania dodatkowego, takie jak Smart Lock, mogą przedłużać odblokowanie tylko na urządzeniach z Androidem 10. Agenty zaufania nie mogą już odblokowywać zablokowanego urządzenia, a mogą utrzymywać je w stanie odblokowanym przez maksymalnie 4 godziny.

Szyfrowanie

OEMCrypto

Android 10 korzysta z interfejsu OEMCrypto API w wersji 15.

Testowanie

BoundsSanitizer

Android 10 wdraża BoundsSanitizer (BoundSan) w Bluetoothie i kodekach. BoundSan korzysta z mechanizmu sprawdzania granic UBSan. Ta metoda ochrony jest włączana na poziomie poszczególnych modułów. Pomaga ona chronić najważniejsze komponenty Androida i nie należy jej wyłączać. BoundSan jest włączony w tych kodekach:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Oczyszczanie przepełnienia liczb całkowitych

Android 10 umożliwia czyszczenie przepełnienia liczb całkowitych (IntSan) w kodekach programowych. Upewnij się, że wydajność odtwarzania jest zadowalająca w przypadku wszystkich kodeków, które nie są obsługiwane przez sprzęt urządzenia. IntSan jest włączony w przypadku tych kodeków:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Pamięć tylko do wykonywania

Domyślnie sekcje kodu wykonywalnego w przypadku binarnych plików systemowych AArch64 są oznaczane jako tylko do wykonania (nie do odczytu), co stanowi zabezpieczenie przed atakami polegającymi na ponownym wykorzystaniu kodu wykonywanego w czasie rzeczywistym. Kod, który łączy dane i kod, oraz kod, który celowo sprawdza te sekcje (bez wcześniejszego ponownego mapowania segmentów pamięci jako odczytywalnych), nie działa już. Aplikacje z docelowym pakietem SDK Androida 10 (poziom interfejsu API 29 lub wyższy) są narażone na problemy, jeśli próbują odczytać sekcje kodu pamięci tylko do wykonywania (XOM) w pamięci bibliotek systemowych bez wcześniejszego oznaczenia sekcji jako możliwej do odczytu.

Scudo

Scudo to dynamiczny alokator pamięci w trybie użytkownika, który jest bardziej odporny na luki w zabezpieczeniach związane ze stertą. Udostępnia standardowe funkcje alokacji i dealokacji pamięci w języku C, a także funkcje w języku C++.

ShadowCallStack

ShadowCallStack (SCS) to tryb instrumentacji LLVM, który chroni przed nadpisywaniem adresu powrotu (np. przepełnieniem bufora stosu) przez zapisywanie adresu powrotu funkcji w osobno przydzielonej instancji ShadowCallStack w prologu funkcji niebędących liśćmi i wczytywanie adresu powrotu z instancji ShadowCallStack w epilogu funkcji.

Audio

HAL dźwięku

Android 10 zawiera te nowe funkcje warstwy HAL audio:

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Dodano dodatkowe wymagania dotyczące implementacji HAL audio i podsystemu.

Efekty przetwarzania wstępnego

Android udostępnia efekty wstępnego przetwarzania, takie jak usuwanie echa akustycznego, automatyczna kontrola wzmocnienia i eliminowanie szumu. Android 10 zawiera nowe wymagania dotyczące nagrywania za pomocą VOICE_COMMUNICATION.

Menedżer zasad audio

Android 10 zawiera znaczną refaktoryzację menedżera zasad audio, aby zapewnić większą elastyczność w obsłudze złożonych przypadków użycia w motoryzacji.

Dźwięk w wysokiej rozdzielczości

Android 10 zawiera te ulepszenia dotyczące dźwięku o wysokiej rozdzielczości:

  • Obsługa wartości zmiennoprzecinkowych
  • Obsługa częstotliwości 192 kHz
  • Obsługa 8 kanałów
  • Uwzględnianie informacji o czasie

Równoczesne rejestrowanie

Android 10 poprawia komfort korzystania z jednoczesnego nagrywania, które wymaga jednoczesnego nagrywania więcej niż jednego 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 zrzutu ekranu, ale dotyczy dźwięku. Głównym zastosowaniem jest umożliwienie aplikacjom do strumieniowania przechwytywania dźwięku odtwarzanego przez gry.

Interfejs API przechwytywania nie wpływa na opóźnienie aplikacji, z której przechwytywany jest dźwięk.

MIDI

Android 10 ułatwia przenoszenie profesjonalnych aplikacji audio korzystających z MIDI na platformę Android za pomocą AMidiinterfejsu NDK API.

Aparat

Podsumowanie zmian w interfejsie API aparatu, HAL aparatu i module aparatu wprowadzonych w Androidzie 10 znajdziesz w artykule Aktualizacje aparatu w Androidzie 10.

Ulepszenia w zakresie prywatności w trybie aparatu

Android 10 wprowadza ulepszenia w zakresie ochrony prywatności w ramach aparatu. Aby uniknąć ujawniania potencjalnie poufnych statycznych informacji o aparacie w CameraCharacteristics bez zgody użytkownika, aplikacje muszą uzyskać uprawnienie CAMERA do pobierania statycznych metadanych z tagiem związanym z ochroną prywatności za pomocą metody getCameraCharacteristics.

Aby uzyskać listę kluczy charakterystyki aparatu, które wymagają uprawnienia CAMERA, wywołaj metodę getKeysNeedingPermission.

Zapytanie o ponowną konfigurację sesji

Android 10 wprowadza funkcję zapytania o ponowną konfigurację sesji, która zwiększa wydajność dzięki większej kontroli nad wewnętrzną logiką ponownej konfiguracji parametrów sesji.

Interfejsy API zarządzania buforem HAL3 aparatu

Android 10 wprowadza opcjonalne interfejsy API zarządzania buforami HAL3 aparatu, które umożliwiają wdrożenie logiki zarządzania buforami w celu uzyskania różnych kompromisów między pamięcią a opóźnieniem przechwytywania w implementacjach HAL aparatu.

Dynamiczny przełącznik kamery fizycznej w HAL aparatu

Android 10 wprowadza dynamiczny tag metadanych, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, który wskazuje aktywny fizyczny aparat urządzenia z aparatem logicznym. Więcej informacji znajdziesz w artykule Obsługa wielu kamer.

Obsługa ukrywania fizycznych kamer

W Androidzie 10 komponent HAL aparatu może zmniejszyć liczbę fizycznych aparatów, które aplikacja może bezpośrednio otwierać. Więcej informacji znajdziesz w sekcji Obsługa wielu aparatów.

Camera2 VNDK API

W Androidzie 10 moduły dostawcy mogą uzyskiwać dostęp do urządzeń z aparatem i nimi sterować za pomocą 2 nowych standardowych interfejsów HIDL: android.frameworks.cameraservice.service@2.0android.frameworks.cameraservice.device@2.0. Aby ułatwić korzystanie z interfejsów HIDL, Android 10 wprowadza też bibliotekę dostępną dla dostawców, libcamera2_vendor. Ta biblioteka jest podobna do biblioteki Camera NDK, ale ma kilka drobnych modyfikacji.

Konfiguracje strumieni

Android 10 zawiera funkcje, które umożliwiają dostawcom aparatów reklamowanie zalecanych strumieni kamery klientom kamery i obsługę interfejsu API do wysyłania zapytań o kombinacje strumieni.

Wymagania dotyczące łączenia strumieni z kamery

Urządzenia z Androidem 10 nie muszą już obsługiwać kombinacji strumieni ze strumieniami z fizycznych podkamer. Urządzenia z Androidem 10 i wersją urządzenia HAL aparatu 3.5 muszą jednak obsługiwać isStreamCombinationSupported(), aby aplikacje mogły sprawdzać, czy obsługiwana jest kombinacja strumieni zawierająca strumienie fizyczne.

Więcej informacji znajdziesz w artykule Obsługa wielu kamer.

zdjęcia HEIF

Android 10 zapewnia natywną obsługę zdjęć w formacie HEIF, który oferuje lepszą jakość obrazu i mniejsze rozmiary niż zdjęcia JPEG. Urządzenia muszą mieć koder HEIC lub HEVC, aby obsługiwać obrazy HEIF.

Kamery monochromatyczne

Android 10 zapewnia dodatkową obsługę formatu strumienia Y8, statycznych metadanych tablicy filtrów kolorów monochromatycznych i bliskiej podczerwieni (NIR) oraz funkcji DngCreator dla 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 obsługujące IRadio HAL w wersji 1.4 mogą inicjować połączenie alarmowe, korzystając z numerów alarmowych pobranych ze źródła, takiego jak karta SIM, sygnał sieci lub baza danych Androida. Numery można podzielić na kategorie służb ratunkowych, takie jak policja, straż pożarna i pogotowie ratunkowe.

Interfejsy API rozmów grupowych

Interfejsy API rozmów grupowych są rozszerzeniem interfejsów eMBMS API dodanych w Androidzie 9. Nowe interfejsy API określają standard umożliwiający aplikacjom dołączanie do grupowych połączeń komórkowych i nadawanie w nich treści poprzez interakcję z pakietami oprogramowania pośredniczącego eMBMS. Połączenia grupowe wymagają wsparcia ze strony dostawcy chipsetu, dostawcy oprogramowania pośredniczącego i operatora komórkowego, aby działać prawidłowo. Dokumentacja dla deweloperów znajduje się na stronie developer.google.com.

Funkcje zdalnej karty SIM

Android 10 wprowadza funkcje zdalnej karty SIM, które umożliwiają aplikacjom do obsługi wiadomości na urządzeniu hosta z Androidem wysyłanie SMS-ów za pomocą telefonów z wykorzystaniem mechanizmów takich jak Bluetooth. Więcej informacji znajdziesz w dokumentacji referencyjnej metody getSubscriptionType i stałej SUBSCRIPTION_TYPE_REMOTE_SIM.

Wiele kart eSIM

W Androidzie 10 klasa EuiccManager obsługuje urządzenia z wieloma wbudowanymi kartami SIM (eSIM) lub eUICCs.

Aktualizacje eSIM

W przypadku urządzeń z Androidem 10, które obsługują karty eSIM, musi być zdefiniowana tablica identyfikatorów gniazd 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 artykułach Wdrażanie karty eSIMWymagania dotyczące HAL.

5G Non-Standalone (NSA)

W Androidzie 10 dodano obsługę 5G w trybie non-standalone (NSA). 5G NSA to rozwiązanie dla sieci 5G, w którym sieć jest obsługiwana przez istniejącą infrastrukturę 4G. Na urządzeniach z Androidem 10 ikona 5G może być wyświetlana na pasku stanu, gdy urządzenie połączy się z siecią 5G.

Sugestia konta na telefonie

Android 10 wprowadza usługę sugestii kont telefonicznych, która umożliwia wyświetlanie użytkownikom sugestii kont telefonicznych podczas wykonywania połączenia.

Operator

Migracja ustawień sieci komórkowej

W Androidzie 10 zmieniono architekturę kodu interfejsu ustawień sieci komórkowej i przeniesiono go ze stosu telefonicznego do stosu 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 właściciela 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

Android stale ocenia jakość połączonej sieci i dostępnych sieci. Android 10 ma zaktualizowane algorytmy i procedury wybierania sieci Wi-Fi i przełączania się między nimi.

Skanowanie w celu odciążania wybranej sieci Wi-Fi

Android 10 wprowadza opcjonalną metodę interfejsu API o nazwie setDeviceMobilityState()WifiManager, która zwiększa interwał między skanami preferowanego odciążania sieci (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ę ze skonfigurowanymi sieciami Wi-Fi operatora (sieciami z certyfikatami klucza publicznego).

Wi-Fi Easy Connect

W Androidzie 10 urządzenia mogą używać Wi-Fi Easy Connect, który wykorzystuje protokół obsługi administracyjnej urządzeń (DPP) wprowadzony przez Wi-Fi Alliance (WFA), do obsługi administracyjnej i konfigurowania urządzeń Wi-Fi.

Tryb niskiego opóźnienia Wi-Fi

Android 10 wprowadza tryb niskiego opóźnienia Wi-Fi, który konfiguruje układ Wi-Fi w celu zmniejszenia opóźnienia.

Zaktualizowany serwer DHCP

W ramach tworzenia parasola usług „Serwer IP” usługa dnsmasq zostanie usunięta. Android 10 zastępuje serwer DHCPv4 osobnym komponentem, napisanym głównie w Javie, aby lepiej integrować się z płaszczyzną sterowania platformy Java. Zwiększa to bezpieczeństwo i możliwość aktualizacji serwera DHCP. Więcej informacji znajdziesz w sekcji packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java.

Aby wdrożyć tę zmianę, nie musisz podejmować żadnych działań: wszystkie urządzenia z Androidem 10 i nowszym domyślnie korzystają z DhcpServer. Jeśli masz dostosowania serwera DHCP, możesz przywrócić działanie 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 dostosowania funkcji serwera DHCP powinny być przesyłane do repozytorium nadrzędnego.

WPA3 i Wi-Fi Enhanced Open

Android 10 obsługuje standardy zabezpieczeń Wi-Fi Protected Access 3 (WPA3) i Wi-Fi Enhanced Open, które zapewniają większą prywatność i odporność na znane ataki.

Wi-Fi Direct

Wi-Fi Direct, znane też jako Wi-Fi P2P, umożliwia obsługiwanym urządzeniom wykrywanie się nawzajem i bezpośrednie łączenie się ze sobą za pomocą protokołu Wi-Fi Direct bez dostępu do internetu lub sieci komórkowej.

Ulepszenia randomizacji adresu MAC

Od Androida 10 randomizacja MAC jest domyślnie włączona w przypadku trybu klienta, SoftAp i Wi-Fi Direct. Urządzenia muszą udostępniać w interfejsie systemowym opcję włączania i wyłączania randomizacji adresów MAC dla każdego identyfikatora SSID.

Passpoint R2

Android 10 wprowadza obsługę funkcji Passpoint R2. Passpoint R2 implementuje rejestrację online (OSU), standardową metodę udostępniania nowych profili Passpoint. Android 10 obsługuje udostępnianie profili EAP-TTLS za pomocą protokołu SOAP-XML.

NFC

Zabezpiecz komunikację NFC

Bezpieczna komunikacja NFC umożliwia włączenie emulacji karty NFC poza urządzeniem tylko wtedy, gdy ekran urządzenia jest odblokowany. Wdrożenie tej funkcji daje użytkownikom możliwość włączenia bezpiecznej technologii NFC w celu zwiększenia bezpieczeństwa.

Wycofanie Androida Beam

W Androidzie 10 Android Beam nie jest już wymagany, a te interfejsy i metody zostały wycofane:

Interfejsy:

Metody:

Aby używać Androida Beam, zgłoś stałą funkcji android.sofware.nfc.beam.

Grafika

ASurfaceControl

Android 10 dodaje ASurfaceControl, nowy sposób na akceptowanie 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 artykule Khronos Releases EGL 1.5 Specification.

Vulkan

Android 10 obsługuje grafikę Vulkan 1.1. Platforma obsługuje też VK_KHR_swapchain v70, więc aplikacja Vulkan może utworzyć VkImage wspierany przez pamięć łańcucha wymiany.

Częstotliwość odświeżania wydajności

Android 10 obsługuje częstotliwość odświeżania dostosowaną do wydajności. Ta funkcja jest domyślnie wyłączona.

Interakcja

Motoryzacja

Samochodowy sprzęt audio

W Androidzie 10 kontekst Audio HAL jest mapowany na AudioAttributes.usage w celu identyfikacji dźwięków. Android obsługuje 1 instancję na kontekst.AUDIO_DEVICE_OUT_BUS IAudioControl Interfejs HAL udostępnia rozszerzenia interfejsu HAL audio specyficzne dla pojazdu.

Nawigacja przy użyciu gestów

Android 10 wprowadza opcję nawigacji w systemie za pomocą gestów. Informacje o tym, jak przygotować aplikacje do korzystania z tej funkcji, znajdziesz na stronie Nawigacja gestami na stronie dla deweloperów aplikacji na Androida.

Sieci neuronowe

Android 10 wprowadza aktualizacje interfejsu Neural Networks API i warstwy HAL sieci neuronowych. Podsumowanie zmian znajdziesz w sekcji Sieci neuronowe.

Nowa i zaktualizowana dokumentacja sieci neuronowych na Androida 10:

Czujniki

Sensors HAL 2.0

Sensors HAL 2.0 obsługuje używanie kolejek szybkich wiadomości (FMQ) do wysyłania zdarzeń czujników z warstwy HAL do platformy Android Sensors Framework.

Wyłącz czujniki

Android 10 zawiera ustawienie deweloperskie, które umożliwia wyłączenie wszystkich czujników na urządzeniu. Ta funkcja pomaga deweloperom testować działanie aplikacji w sytuacjach, w których te czujniki stają się niedostępne, a także umożliwia użytkownikom sterowanie czujnikami w urządzeniu.

Jeśli Twoje urządzenia korzystają z domyślnej implementacji SensorService, CameraServiceAudioPolicyService, nie musisz dodatkowo dostosowywać projektu referencyjnego. Jeśli masz inne czujniki, więcej informacji o obsłudze tej funkcji znajdziesz w sekcji Dostosowywanie.

Multimedia

Komponenty multimedialne, które można aktualizować

Android 10 udostępnia komponenty multimedialne, które można aktualizować. Umożliwiają one aktualizowanie modułów systemowych związanych z multimediami za pomocą infrastruktury Sklepu Google Play lub mechanizmu aktualizacji bezprzewodowych (OTA) dostarczonego przez partnera.

DRM multimediów

Android 10 zwiększa użyteczność interfejsów API Java i NDK.MediaDrm

Dekodowanie

Android 10 obsługuje dekodowanie programowe AV1.

Uprawnienia

Android 10 udostępnia dodatkowe konfiguracje uprawnień, które zapewniają przejrzystość i prywatność użytkowników.

Informacje o dostawcy kontaktów i zainteresowaniach

Od Androida 10 dane związane z powiązaniami kontaktów, którymi zarządza komponent dostawcy kontaktów, są dostępne w inny sposób niż w Androidzie 9 i starszych wersjach. Zmiany dotyczące dostępności danych zwiększają prywatność użytkowników wszystkich urządzeń z Androidem 10, które korzystają z komponentu dostawcy kontaktów. Podstawowa baza danych nie zawiera już danych o powiązaniach z kontaktami. Dlatego aplikacje nie mogą zapisywać w nim danych ani ich odczytywać.

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 sekcjach Dostawca kontaktów i Informacje o powiązaniach, możesz je zaktualizować, aby zrekompensować wszelkie zmiany. Jeśli używasz rozwidlonej wersji dostawcy kontaktów, musisz go zaktualizować.

Trójstanowe uprawnienia do lokalizacji

Trójstanowe uprawnienia 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 ma przypomnienie o dostępie do lokalizacji w tle, które zwiększa przejrzystość informacji o tym, jak duży dostęp do lokalizacji urządzenia mają aplikacje, i pomaga użytkownikom zachować kontrolę nad tym dostępem.

Ograniczanie lokalizacji oportunistycznych

Gdy aplikacja poprosi o lokalizację urządzenia, może poczekać na odpowiedź lub, korzystając z aktywnych odbiorników lokalizacji, uzyskać aktualizację lokalizacji. Od Androida 10, aby otrzymywać okazjonalne aktualizacje lokalizacji, deweloperzy muszą określić, że potrzebują pasywnych aktualizacji lokalizacji z klasy FusedLocationProviderClient.

Uruchamianie aplikacji w tle

W Androidzie 10 aplikacje bez uprawnień, które nie mają widocznego okna, nie mogą uruchamiać się automatycznie na pierwszym planie. Ta zmiana blokuje wyskakujące reklamy i złośliwe przejęcia. Nie musisz nic robić, aby włączyć tę funkcję.

Piaskownica aplikacji

W Androidzie 10 aplikacje mają ograniczony dostęp do systemu plików i nie mogą bezpośrednio uzyskiwać dostępu do ścieżek takich jak /sdcard/DCIM. Aplikacje zachowują jednak pełny dostęp do ścieżek specyficznych dla pakietu, zwracanych przez odpowiednie metody, takie jak Context.getExternalFilesDir(). Aplikacje nadal mają pełny dostęp do ścieżek specyficznych dla pakietu.

Postępuj zgodnie z wytycznymi dotyczącymi udostępniania plików w piaskownicy aplikacji, aby zapewnić odpowiedni poziom szczegółowości udostępniania danych.

Ograniczanie dostępu aplikacji do schowka

W Androidzie 10 dostęp do schowka został zmieniony, aby zawartość schowka nie mogła być monitorowana przez wywołanie ClipboardManager.getPrimaryClip ani przez dodanie detektora onPrimaryClipChangedListener, który powiadamia o zmianach w schowku. Zwiększa to prywatność użytkowników i uniemożliwia aplikacjom typu malvertising modyfikowanie schowka.

W Androidzie 10 dostęp do odczytu jest dozwolony tylko w przypadku bieżącej aplikacji z fokusem na wprowadzanie danych lub bieżącej klawiatury. Wywołanie odbiornika ClipboardManager.onPrimaryClipChanged() jest teraz wywoływane tylko w przypadku aplikacji, które spełniają takie ograniczenia. ClipboardManager.getPrimaryClipClipboardManager.getPrimaryClipDescription zwracają null, jeśli aplikacja wysyłająca żądanie nie jest domyślnym edytorem metody wprowadzania (IME) lub nie ma fokusu na wprowadzanie danych.

Uprawnienia w czasie działania aplikacji obejmują rozpoznawanie aktywności

Gdy aplikacja uzyskuje dostęp do lokalizacji urządzenia w tle, użytkownicy widzą teraz okno dialogowe rozpoznawania aktywności. Uprawnienia czasu działania z ograniczeniami ścisłymi muszą być prawidłowo dodane do białej listy w Androidzie 10.

Uprawnienie MANAGE_DEVICE_ADMINS

W Androidzie 10 uprawnienie MANAGE_DEVICE_ADMINS zostało zmienione z podpisu lub uprawnień na sam podpis. Oznacza to, że tylko aplikacje podpisane przez platformę mogą ustawiać inne aplikacje jako administratora urządzenia.

Ulepszenia interfejsu Sharing API

Android 10 udostępnia szereg nowych funkcji interfejsu Android Platform API związanych z udostępnianiem. Jeśli w swojej implementacji zmodyfikowano kod arkusza udostępniania, upewnij się, że obsługuje ona te nowe funkcje. Jeśli nie zmodyfikowano kodu arkusza udostępniania w Twojej implementacji, nie musisz nic robić, aby obsługiwać te nowe funkcje.

Środowisko uruchomieniowe Androida (ART)

Podpisana konfiguracja

Funkcja Podpisana konfiguracja umożliwia osadzanie w plikach APK konfiguracji ograniczeń interfejsu innego niż SDK. Umożliwia to usunięcie z czarnej listy konkretnych interfejsów spoza SDK, dzięki czemu AndroidX może bezpiecznie z nich 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 i profile zadań, których deweloperzy mogą używać do opisywania zestawu ograniczeń, które mają być stosowane do wątku lub procesu.

Demon Low Memory Killer (lmkd)

Android 10 obsługuje nowy lmkdtryb, który do wykrywania obciążenia pamięci wykorzystuje monitory informacji o obciążeniu jądra (PSI).

Zasilanie

Zarządzanie zasilaniem platformy

W Androidzie 10 tryb uśpienia można włączyć zarówno na urządzeniach z zawsze aktywnym wyświetlaczem, jak i na urządzeniach zasilanych bateryjnie.

Oszczędzanie baterii na podstawie rutyny

Android 10 wprowadza nową opcję harmonogramu oszczędzania baterii o nazwie na podstawie rutyny. Oszczędzanie baterii na podstawie rutyny umożliwia aplikacji wybranej przez producenta OEM przekazywanie sygnałów do systemu w celu bardziej inteligentnego planowania oszczędzania baterii. Ta opcja wymaga konfiguracji i jest opcjonalna.

Interfejs HAL statystyk zasilania

W Androidzie 10 interfejsy API do zbierania statystyk zużycia energii IPowerStats.hal zastępują interfejsy API w IPower.hal. Chociaż interfejs HAL zasilania nadal obsługuje interfejsy API, w przyszłości zostaną one przeniesione wyłącznie do interfejsu HAL statystyk zasilania.

HAL statystyk zasilania zawiera nowe interfejsy API, które umożliwiają zbieranie danych z pomiarów zasilania na urządzeniu w przypadku obsługiwanych urządzeń. Zaktualizowaliśmy też dotychczasowe interfejsy API do zbierania danych o zużyciu energii, aby zwiększyć ich elastyczność. Interfejsy API podpowiedzi dotyczących zasilania pozostają w warstwie HAL zasilania i nie ulegają zmianie.

Ochrona przed przegrzaniem

Platforma termiczna w Androidzie 10 abstrahuje interfejsy urządzenia dla czujnika temperatury podsystemu termicznego, w tym procesora, GPU, baterii, skóry i urządzenia chłodzącego. Platforma wprowadza interfejs odpytywania, który umożliwia sprawdzanie stanu termicznego w celu rozpoczęcia ograniczania, oraz interfejs wywołania zwrotnego, który służy do wysyłania wiadomości do użytkownika po przekroczeniu progu.

Android 10 udostępnia nowe typy danych za pomocą interfejsu IThermalService, korzystając z tych 3 nowych metod:

Aplikacje dodają i usuwają odbiorniki oraz uzyskują dostęp do stanu temperatury w klasie PowerManager. Tylko zaufana usługa systemowa, np. interfejs API Androida lub interfejs API producenta urządzenia, może uzyskać dostęp do informacji o powiązanych zdarzeniach przyczynowych. Producenci urządzeń lub układów SoC muszą wdrożyć thermal HAL 2.0, aby włączyć pełną funkcjonalność nowych ram termicznych.

Przykład implementacji ograniczania ryzyka związanego z temperaturą znajdziesz w implementacji referencyjnej.

Aktualizacje

Format pliku APEX

Android Pony EXpress (APEX) to nowy format kontenera używany w procesie instalacji modułowych komponentów systemu.

Partycje dynamiczne

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ć poszczególnymi rozmiarami partycji, takimi jak system, vendorproduct. Zamiast tego przydzielana jest jedna duża super partycja, a w jej obrębie można dynamicznie określać rozmiar podpartycji.

Dynamiczne aktualizacje systemu

Dynamiczne aktualizacje systemu (DSU) umożliwiają utworzenie obrazu systemu Android, który użytkownicy mogą pobrać z internetu i wypróbować bez ryzyka uszkodzenia bieżącego obrazu systemu.

Tworzenie i przywracanie kopii zapasowej w przypadku wielu użytkowników

Android 10 obsługuje tworzenie kopii zapasowych i przywracanie dla wszystkich użytkowników urządzenia. Wcześniej tworzenie i przywracanie kopii zapasowej było dostępne tylko dla użytkownika systemu. Tworzenie kopii zapasowych i przywracanie danych użytkowników innych niż systemowi jest domyślnie wyłączone, ponieważ obejmuje tylko częściowo ustawienia, tapetę i komponenty systemu.

OverlayFS

Użytkownicy korzystający z kompilacji userdebug lub eng oczekują, że będą mogli skutecznie ponownie zamontować partycję systemową jako odczyt-zapis, a następnie dodać lub zmodyfikować dowolną liczbę plików bez ponownego flashowania obrazu systemu. Możesz użyć Overlayfs, które automatycznie konfiguruje pamięć zapasową dla systemu plików z możliwością zapisu jako górne odniesienie i montuje ją nad dolnym. Te działania są wykonywane w przypadku żądań adb disable-verityadb remount. Więcej informacji znajdziesz w pliku Overlayfs README w AOSP.

Obsługa biblioteki udostępnionej w trybie odzyskiwania

W Androidzie 10 biblioteki współużytkowane są dostępne w partycji odzyskiwania, co eliminuje konieczność statycznego działania wszystkich plików wykonywalnych w trybie przywracania (Recovery Mode). Biblioteki współdzielone znajdują się w katalogu /system/lib (lub /system/lib64 w przypadku urządzeń 64-bitowych) w partycji.

Aby dodać nową bibliotekę udostępnioną do partycji odzyskiwania, dodaj recovery_available: true lub recovery: true do Android.bp biblioteki udostępnionej. Pierwsza opcja instaluje bibliotekę zarówno w partycji systemowej, jak i w partycji odzyskiwania, a druga – tylko w partycji odzyskiwania.

Obsługi biblioteki współdzielonej nie można utworzyć za pomocą systemu kompilacji opartego na narzędziu make w Androidzie. Aby przekonwertować istniejący statyczny plik wykonywalny dla trybu odzyskiwania na dynamiczny, usuń LOCAL_FORCE_STATIC_EXECUTABLE := trueAndroid.mk lub static_executable: true (w Android.bp).

Punkt kontrolny danych użytkownika (UDC)

Android 10 wprowadza funkcję punktu kontrolnego danych użytkownika (UDC), która umożliwia wycofanie zmian systemu Android do poprzedniego stanu w przypadku niepowodzenia aktualizacji OTA.