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.

Build

java_sdk_library

Android 10 wprowadza java_sdk_library, nową regułę kompilacji, która rozwiązuje problemy z kompatybilnoś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 wydawniczym 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 zmianę 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 łagodzić 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 wcześniej

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

HIDL

Przenoszenie 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óra może trwać długo. Kolejka wyładowania obsługuje obecnie tylko transmisję BOOT_COMPLETED, ale może obsługiwać inne długie transmisje.

Usługa SystemSuspend

Android 10 zastępuje wątek w libsuspendodpowiedzialny za inicjowanie zawieszenia systemu 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 ConfigStore HAL 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ę na partycji vendor, ale są one odczytywane z partycji system. W tym przypadku schemat pliku XML służy jako interfejs między 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 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

Ramdisk

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żliwi Ci 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 obiektu drzewa urządzenia (DTB). 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 odzyskiwania na urządzeniach innych niż A/B

W Androidzie 9 i nowszych obraz odzyskiwania 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 w wersji 10 i nowszej obsługuje 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), nowy sposób śledzenia interfejsu programowania aplikacji (API) i interfejsu binarnego aplikacji (ABI) udostępnianych 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 pomagać deweloperom w klasyfikowaniu 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 programu uruchamiającego, system wyświetla w programie uruchamiającym syntetyzowaną aktywność. Ta aktywność reprezentuje stronę szczegółów 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 informacjach o interfejsie 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 z Androidem 10 jest rozwinięciem poprzednich wersji i zawiera aktualizacje dotyczące nowych funkcji oraz zmiany wymagań 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 pakietu CTS

Pakiety CTS obsługujące Androida 10 są dostępne na stronie Pobieranie CTS. Kod źródłowy testów zawartych w android-cts-10_r1 można zsynchronizować z tagiem 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 dotyczące zarządzania APEX.

Tryb jarzma testowego

Tryb platformy testowej CTS pomaga deweloperom automatyzować 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 przeprowadza testy.

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

Test audio profesjonalnego weryfikatora CTS

W Androidzie 10 dodano test weryfikatora CTS sprawdzający zgodność z Pro Audio.

Testy MIDI weryfikatora CTS

W Androidzie 10 test MIDI w ramach CTS Verifier sprawdza funkcje MIDI za pomocą interfejsów MIDI przez USB, interfejsów MIDI przez Bluetooth 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 ogólny obraz systemu (GSI) używany do przeprowadzania testów zgodności CTS-on-GSI/VTS zmienia typ 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ż można ponownie użyć tej samej kompilacji użytkownika system.img (GSI lub kompilacji 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 ładowały połączone biblioteki współdzielone Java w ładowarce klas aplikacji. W Androidzie 10 platforma używa innego narzędzia do wczytywania klas niż narzędzie do wczytywania klas aplikacji, aby wczytywać udostępnione biblioteki 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 ładującego klasy, to działanie jest nieprawidłowe. Dodatkowo widoczność klas w tym samym pakiecie na poziomie pakietu jest nadal obsługiwana, ale nie jest 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ść online lub inne usługi, które wymagają zgodności 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. Ograniczanie skutków jest włączone 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 przypadku tych kodeków:

  • 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. Sprawdź, czy wydajność odtwarzania jest zadowalająca w przypadku 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 momencie użycia. 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ż prawidłowo. Dotyczy to aplikacji, których docelowy pakiet SDK to Android 10 (poziom interfejsu API 29 lub wyższy), jeśli aplikacja próbuje odczytać sekcje kodu pamięci tylko do wykonywania (XOM) w pamięci systemowych bibliotek z włączoną tą funkcją 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 przydzielania i zwalniania 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 przydzielonym wystąpieniu ShadowCallStack w prologu funkcji niebędących liśćmi i wczytywanie adresu powrotu z wystąpienia 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 przetwarzania wstępnego, takie jak usuwanie echa akustycznego, automatyczna kontrola wzmocnienia i eliminowanie szumu. Android 10 zawiera nowe wymagania dotyczące rejestrowania 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 liczb 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 funkcji jednoczesnego nagrywania, która 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 strukturze aparatu. Aby uniknąć ujawnienia potencjalnie poufnych informacji o statycznym aparacie w CameraCharacteristics bez zgody użytkownika, aplikacje muszą uzyskać uprawnienie CAMERA do pobierania statycznych metadanych z tagiem związanym z 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 pozwala zwiększyć 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 fizyczny HAL aparatu

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

Obsługa ukrywania kamer fizycznych

W Androidzie 10 komponent HAL aparatu może zmniejszyć liczbę fizycznych aparatów, które aplikacja może bezpośrednio otworzyć. 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 strumieniowania

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 z 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ę aparatu w przypadku obrazów w formacie HEIF, które oferują lepszą jakość obrazu i mniejsze rozmiary niż obrazy 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 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 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 połączeń grupowych

Interfejsy API połączeń 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 sekcjach Wdrażanie karty eSIMWymagania dotyczące HAL.

5G Non-Standalone (NSA)

Android 10 obsługuje 5G w trybie 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 w telefonie

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

Operator

Migracja ustawień sieci komórkowej

W Androidzie 10 zmieniliśmy architekturę kodu interfejsu ustawień sieci komórkowej i przenieśliśmy 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, czyli protokołu udostępniania urządzeń (DPP) wprowadzonego przez Wi-Fi Alliance (WFA), do udostępniania 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 taki sposób, aby zmniejszyć opóźnienie.

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 frameworka 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 nic robić: 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. Nowy DhcpServer jest zawarty 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ć opcję włączania i wyłączania randomizacji adresów MAC dla każdego identyfikatora SSID w interfejsie systemu.

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, co zwiększa bezpieczeństwo.

Wycofanie Androida Beam

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

Interfejsy:

Metody:

Aby korzystać z Androida Beam, zgłoś stałą funkcji android.sofware.nfc.beam.

Grafika

ASurfaceControl

Android 10 dodaje ASurfaceControl, czyli 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 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

Automotive

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ęAUDIO_DEVICE_OUT_BUS na kontekst. 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 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 ich 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) udostępnianego przez partnera.

DRM multimediów

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

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. Te 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. 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 uwzględnić wszelkie zmiany. Jeśli używasz rozwidlonej wersji dostawcy kontaktów, musisz ją zaktualizować.

Trójstanowe uprawnienia dostępu do lokalizacji

Trójstanowe uprawnienia do lokalizacji w Androidzie 10 zapewniają 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 aplikacje mają do lokalizacji urządzenia, 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 funkcji ClipboardManager.getPrimaryClip ani przez dodanie odbiornika onPrimaryClipChangedListener powiadomień 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, która ma fokus, lub bieżącej klawiatury. Wywołanie funkcji nasłuchującej 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 listy dozwolonych w Androidzie 10.

Uprawnienie MANAGE_DEVICE_ADMINS

Android 10 zmienia uprawnienie MANAGE_DEVICE_ADMINS z podpisu lub uprawnień na tylko 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 lmkd tryb, który do wykrywania obciążenia pamięci wykorzystuje monitory informacji o obciążeniu jądra (PSI).

Moc

Zarządzanie zasilaniem platformy

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

Oszczędzanie baterii w ramach rutyny

W Androidzie 10 wprowadziliśmy nową opcję harmonogramu oszczędzania baterii o nazwie na podstawie rutyny. Oszczędzanie baterii w ramach rutyny umożliwia aplikacji wybranej przez producenta OEM wysyłanie sygnałów do systemu w celu bardziej inteligentnego planowania oszczędzania baterii. Ta opcja wymaga konfiguracji i jest opcjonalna.

Warstwa 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.

Warstwa 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 statystyk dotyczących zasilania, 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 wydajności, 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ą odbiorców oraz uzyskują dostęp do stanu temperatury w klasie PowerManager. Dostęp do informacji o powiązanych zdarzeniach przyczynowych może mieć tylko zaufana usługa systemowa, np. interfejs API Androida lub interfejs API producenta urządzenia. Aby włączyć pełną funkcjonalność nowych ram termicznych, producenci urządzeń lub układów SoC muszą wdrożyć thermal HAL 2.0.

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ć o rozmiary poszczególnych partycji, takich jak system, vendorproduct. Zamiast tego przydzielana jest jedna duża partycja super, a podpartycje mogą być w niej dynamicznie dostosowywane.

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 funkcję tworzenia kopii zapasowych i przywracania 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 wersji 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 się nad dolnym. Te działania są wykonywane w przypadku żądań adb disable-verityadb remount. Więcej informacji znajdziesz w pliku README Overlayfs 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 odzyskiwania. Biblioteki współdzielone znajdują się w katalogu /system/lib (lub /system/lib64 w przypadku urządzeń 64-bitowych) na partycji.

Aby dodać nową bibliotekę współdzieloną do partycji odzyskiwania, dodaj recovery_available: true lub recovery: true do Android.bp biblioteki współdzielonej. Pierwsza opcja instaluje bibliotekę zarówno w systemie, jak i w partycji odzyskiwania, a druga – tylko w partycji odzyskiwania.

Obsługi bibliotek współdzielonych nie można utworzyć za pomocą systemu kompilacji opartego na 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 przywrócenie poprzedniego stanu systemu Android w przypadku niepowodzenia aktualizacji bezprzewodowej (OTA).