Informacje o wydaniu Androida 10

Ta strona zawiera podsumowanie głównych funkcji wersji Androida 10 i zawiera łącza do dodatkowych informacji. Te podsumowania funkcji są uporządkowane zgodnie z lokalizacją dokumentacji funkcji w tej witrynie.

Zbudować

biblioteka java_sdk_library

W systemie Android 10 wprowadzono java_sdk_library , nową regułę kompilacji rozwiązującą problemy ze zgodnością współdzielonych bibliotek Java. Producenci urządzeń mogą używać tego mechanizmu w przypadku własnych udostępnionych bibliotek Java, aby zachować kompatybilność wsteczną swoich interfejsów API.

Architektura

Elementy systemu modułowego

Android 10 modularyzuje niektóre komponenty systemu Android i umożliwia ich aktualizację poza normalnym cyklem wydawniczym Androida. Niektóre moduły obejmują:

Warstwa abstrakcji sprzętu (HAL)

W systemie Android 10 dodano obsługę automatycznego zamykania warstw HAL, gdy nie mają one klientów.

Jądro

ABI

Android 10 obsługuje nowe narzędzia monitorujące ABI , które pomagają w porównywaniu, śledzeniu i łagodzeniu zmian w ABI jądra, które wpływają na zgodność z modułami jądra.

W Androidzie 10 wprowadzono także narzędzie do sprawdzania użycia ABI oparte na symbolach. Moduł sprawdzający może wykryć nieaktualne, wstępnie skompilowane pliki binarne w czasie kompilacji, dzięki czemu twórcy bibliotek współdzielonych mogą wiedzieć, które wstępnie skompilowane pliki binarne mogą zostać uszkodzone w wyniku ich zmian, a które wstępnie skompilowane pliki binarne wymagają odbudowania.

Demon blokady na żywo w systemie Android

Android 10 zawiera demona Android Live-Lock Daemon (llkd) , którego zadaniem jest wychwytywanie i łagodzenie zakleszczeń jądra.

vDSO32 na ARM64

Android 10 obsługuje vDSO32 na jądrach 64-bitowych , co zapewnia wzrost żywotności baterii o 0,4% i inne ulepszenia wydajności.

wpisy fstab dla wcześniej zamontowanych partycji

Android 10 wymaga, aby urządzenia określały wpisy fstab dla wcześniej zamontowanych partycji przy użyciu pliku fstab na dysku ramdysku pierwszego stopnia.

HIDL

Odciąż kolejkę transmisji

Android 10 zawiera nową funkcję odciążania BroadcastQueue do istniejących kolejek w tle i na pierwszym planie . Kolejka odciążająca ma taki sam priorytet i zachowanie limitu czasu, jak kolejka w tle. Aby zapobiec blokowaniu kolejki w tle, w której mogą odbywać się bardziej interesujące lub widoczne dla użytkownika transmisje, kolejka odciążająca obsługuje transmisję BOOT_COMPLETED , której odsłuchuje wiele aplikacji, a jej ukończenie może zająć dużo czasu. Kolejka odciążająca obsługuje obecnie tylko emisję BOOT_COMPLETED , ale potencjalnie może obsłużyć inne długie emisje.

SystemZawieś usługę

Android 10 zastępuje wątek w libsuspend odpowiedzialny za inicjowanie zawieszenia systemu usługą SystemSuspend HIDL . Ta implementacja oferuje funkcjonalność równoważną do poprzednich wersji, jednocześnie wykorzystując zalety infrastruktury Android HIDL.

Safe_union w HIDL

W systemie Android 10 wprowadzono safe_union , jawnie oznaczony typ unii, w języku HIDL.

Konfiguracja

ConfigStore HAL

Android 10 wycofuje warstwę HAL ConfigStore ze względu na duże zużycie pamięci i trudne użytkowanie i zastępuje warstwę HAL właściwościami systemowymi .

Interfejs API schematu pliku konfiguracyjnego

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 dwiema partycjami i dlatego schemat musi być jawnie określony i musi ewoluować w sposób zapewniający kompatybilność wsteczną. Przed Androidem 10 platforma nie zapewniała mechanizmów wymagających określania i używania schematu XML ani zapobiegających niezgodnym zmianom w schemacie. Android 10 udostępnia ten mechanizm, zwany interfejsem API schematu pliku konfiguracyjnego .

Właściwości systemu jako API

Właściwości systemu , do których można uzyskać dostęp między partycjami, są schematycznie przedstawione w plikach opisu sysprop , a interfejsy API umożliwiające dostęp do właściwości są generowane jako konkretne funkcje dla C++ i klasy dla Javy.

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
  • Budowa ODM manifestuje się oficjalnie
  • Dodanie macierzy zgodności produktów
  • Powiązanie wpisu manifestu z modułem HAL w systemie kompilacji

Program rozruchowy

Ramdysk

W systemie Android 10 główny system plików nie jest już zawarty w ramdisk.img i zamiast tego został scalony z system.img .

Zbuduj partycje ODM

Android 10 obsługuje tworzenie partycji odm przy użyciu systemu kompilacji Androida. Do dostosowań można użyć osobnej partycji /odm , co umożliwia użycie obrazu jednego dostawcy dla wielu jednostek SKU sprzętu. Umożliwia to producentom oryginalnych projektów (ODM) dostosowywanie pakietów wsparcia dla płyt dostawców (BSP) typu system-on-chip (SoC) do ich konkretnych urządzeń (ich płyt). Mogą implementować moduły jądra dla komponentów specyficznych dla płyty, demonów specyficznych dla płyty lub własnych funkcji w warstwach abstrakcji sprzętu (HAL). Mogą także 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 blob drzewa urządzeń (DTB). Testy VTS systemu Android 10 sprawdzają, czy wszystkie urządzenia uruchamiane z systemem Android 10 korzystają z nagłówka obrazu rozruchowego w wersji 2 i zawierają prawidłowy obraz DTB jako część obrazów rozruchowych/odzyskiwania.

Obrazy odzyskiwania dla urządzeń innych niż A/B

W systemie Android 9 i nowszych wersjach obraz przywracania urządzenia musi zawierać informacje z obrazu nakładki . Producenci urządzeń mogą używać narzędzia DeviceTree lub zaawansowanego interfejsu konfiguracji i zasilania (ACPI) do opisywania wszystkich niewykrywalnych urządzeń. Android 10 i nowsze wersje obsługują architektury korzystające z interfejsu ACPI zamiast obiektu BLOB DeviceTree dla nakładki (DTBO).

Stabilny AIDL

W systemie Android 10 dodano obsługę stabilnego języka definicji interfejsu systemu Android (AIDL) , nowego sposobu śledzenia interfejsu programu aplikacji (API)/interfejsu binarnego aplikacji (ABI) udostępnianego przez interfejsy AIDL.

Przenieś fastboot do przestrzeni użytkownika

Android 10 dodaje obsługę partycji o zmiennym rozmiarze, przenosząc implementację fastboot z bootloadera do przestrzeni użytkownika.

Wyświetlacz

Odtwarzanie wideo HDR

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

Klasyfikacja tekstu

Klasyfikacja tekstu wykorzystuje techniki uczenia maszynowego, aby pomóc programistom klasyfikować tekst. W systemie Android 10 do interfejsu API TextClassifier wprowadzono dwie metody: suggestConversationActions i detectLanguage . Metoda suggestConversationActions generuje sugerowane odpowiedzi i akcje z danej konwersacji, a metoda detectLanguage wykrywa język tekstu.

Obsługa renderowania czcionek Zawgyi

Zawgyi to najpopularniejsza czcionka w Birmie. Android 9 i starsze wersje nie obsługiwały renderowania Zawgyi, ponieważ nie jest on zgodny z Unicode . Android 10 rozwiązuje ten problem, dodając czcionkę Unicode zdolną do jednoczesnego renderowania zarówno Unicode Birmese, jak i Zawgyi. Obsługa renderowania czcionek Zawgyi na urządzeniach z systemem Android 10 nie wymaga żadnych prac implementacyjnych. 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 popularną czcionkę Zawgyi w swoim systemie i użyj kodu regionalnego my-qaag w pliku fonts.xml . Aby uzyskać więcej informacji, zobacz Informacje o wersji Unicode CLDR w Zawgyi (Qaag) .

Ograniczenia ukrywania ikon aplikacji

Android 10 ogranicza możliwość ukrywania ikon programu uruchamiającego przez aplikacje. Jeśli aplikacja nie ma włączonej funkcji uruchamiania, system wyświetla w niej syntetyzowane działanie ; to zsyntetyzowane działanie reprezentuje stronę ze szczegółami aplikacji w ustawieniach systemu.

Więcej informacji na temat logiki używanej do wyświetlania ikon aplikacji, w tym typów aplikacji, których ikony aplikacji nie są wyświetlane, można znaleźć w dokumentacji funkcji getActivityList() w dokumentacji interfejsu API.

Ustawienia

Aby poprawić dostępność, Android 10 zawiera konfigurowalne przez użytkownika ustawienia limitu czasu. Zmiany interfejsu API i ustawień są dostępne w systemie Android 10. Jeśli dostosowujesz ustawienia, upewnij się, że ta funkcja jest obsługiwana. Jeśli na Twoim urządzeniu znajdują się elementy interfejsu użytkownika, dla których przekroczono limit czasu, użyj na nich interfejsu API przekroczenia limitu czasu . Więcej informacji znajdziesz we wskazówkach dotyczących ułatwień dostępu dla programistów Androida .

Zgodność

Dokument definicji zgodności z Androidem (CDD)

Dokument definicji zgodności Androida 10 nawiązuje do poprzednich wersji , wprowadzając aktualizacje nowych funkcji i zmiany w wymaganiach dotyczących wcześniej wydanych funkcji.

Testy

Zestaw testów zgodności (CTS)

Android CTS ma osobną stronę z informacjami o wersji , która zawiera listę wielu ważnych zmian dla Androida 10.

Pliki do pobrania CTS

Pakiety CTS obsługujące system Android 10 są dostępne na stronie pobierania CTS . Kod źródłowy dołączonych testów można zsynchronizować ze znacznikiem android-cts-10_r1 w drzewie open source.

Podkładka CTS APEX

Android 10 wprowadza pakiet o nazwie CtsShimApex , który należy preinstalować na urządzeniu, aby pisać testy CTS do zarządzania APEX.

Sprawdź tryb uprzęży

Tryb wiązki testowej CTS pomaga programistom zautomatyzować testowanie urządzenia lub floty urządzeń.

Tryb aplikacji błyskawicznych

Począwszy od Androida 10, CTS działa w trybie aplikacji błyskawicznych , co oznacza zainstalowanie testowego pakietu APK jako aplikacji błyskawicznej i uruchomienie testów.

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

Profesjonalny test audio CTS Verifier

Android 10 dodaje test CTS Verifier pod kątem zgodności z Pro Audio .

Testy MIDI CTS Verifier

W systemie Android 10 test CTS Verifier MIDI testuje funkcjonalność MIDI z interfejsami USB MIDI, interfejsami Bluetooth MIDI i ścieżką wirtualnego urządzenia MIDI.

Interpretacja testu CTS

Android 10 aktualizuje mechanizm interpretacji wyników CTS .

Zestaw testów dostawców (VTS)

Testowanie VTS z ramdyskiem debugującym

W systemie Android 10 ogólny obraz systemu (GSI) używany do uruchamiania testów zgodności CTS-on-GSI/VTS zmienia się z debugowania użytkownika na typ kompilacji użytkownika, ponieważ GSI ma podpisaną wersję. Jednak polecenie adb root , które przyznaje uprawnienia roota hostowi testowanemu urządzeniu z Androidem, nie jest dostępne w kompilacji użytkownika. Jest to problem, ponieważ VTS wymaga do uruchomienia adb root .

Wprowadzono ramdysk debugowania , aby umożliwić adb root , jeśli urządzenie jest odblokowane. Upraszcza to przebieg testowania poprzez ponowne wykorzystanie tej samej kompilacji użytkownika system.img (albo GSI, albo system.img producenta OEM).

Walidacja narzędzia Hardware Composer

W systemie Android 10 dodano nową klasę testową VTS do sprawdzania poprawności narzędzia Hardware Composer za pośrednictwem interfejsu readback w IComposerClient.hal . Jeśli dostawcy nie wdrożą funkcji readback , testy przechodzą automatycznie.

Debugowanie

Załaduj biblioteki współdzielone za pomocą różnych programów ładujących klasy

W systemie Android 9 i starszych aplikacjach ładowały połączone udostępnione biblioteki Java w module ładującym klasy aplikacji. W systemie Android 10 struktura korzysta z innego modułu ładującego klasy niż moduł ładujący klasy aplikacji do ładowania współdzielonych bibliotek Java połączonych za pośrednictwem uses-library lub uses-static-library .

Ogólnie rzecz biorąc, aplikacje nie powinny polegać na korzystaniu z określonego modułu ładującego klasy, więc ta zmiana nie powinna zakłócać zachowania aplikacji. Jeśli jednak aplikacja korzysta z modułu ładującego jedną klasę, zachowanie to nie działa. Ponadto widoczność klas w tym samym pakiecie w trybie prywatnym jest nadal obsługiwana, ale nie jest obsługiwana w bibliotekach współdzielonych.

Producenci urządzeń mogą zauważyć problemy ze zgodnością aplikacji podczas testowania swoich urządzeń z systemem Android 10.

Funkcjonalność związana z bezpieczeństwem

Pełniejszą listę ulepszeń związanych wyłącznie z bezpieczeństwem i prywatnością znajdziesz na stronie ulepszeń dotyczących zabezpieczeń i prywatności w Androidzie 10 .

Uwierzytelnianie twarzą

Uwierzytelnianie twarzą pozwala użytkownikom odblokować urządzenie, po prostu patrząc na przód urządzenia. W systemie Android 10 dodano obsługę nowego stosu uwierzytelniania za pomocą twarzy, który może bezpiecznie przetwarzać klatki z kamer, zachowując bezpieczeństwo i prywatność podczas uwierzytelniania za pomocą twarzy na obsługiwanym sprzęcie. Android 10 zapewnia także łatwy sposób implementacji zgodnych z bezpieczeństwem, umożliwiający integrację aplikacji do transakcji, takich jak bankowość internetowa lub inne usługi.

Rozszerzony dostęp

Agenci zaufania, czyli podstawowy mechanizm używany przez mechanizmy uwierzytelniania trzeciorzędnego, takie jak Smart Lock, mogą przedłużyć odblokowanie tylko w systemie Android 10. Agenci zaufania nie mogą już odblokowywać zablokowanego urządzenia i mogą pozostawić urządzenie odblokowane tylko przez maksymalnie cztery godziny.

Szyfrowanie

OEMCrypto

Android 10 korzysta z API OEMCrypto w wersji 15.

Testowanie

BoundsSanitizer

Android 10 wdraża BoundsSanitizer (BoundSan) w technologii Bluetooth i kodekach. BoundSan używa środka dezynfekującego UBSan. To ograniczenie jest włączone na poziomie poszczególnych modułów. Pomaga chronić krytyczne komponenty Androida i nie należy go wyłączać. BoundSan jest włączony w następujących kodekach:

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

Oczyszczanie przepełnienia liczb całkowitych

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

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

Pamięć tylko do wykonywania

Domyślnie sekcje kodu wykonywalnego dla plików binarnych systemu AArch64 są oznaczone jako przeznaczone tylko do wykonania (nieczytelne) w celu zabezpieczenia przed atakami polegającymi na ponownym użyciu kodu just-in-time. Kod, który łączy dane i kod oraz kod, który celowo sprawdza te sekcje (bez uprzedniego ponownego mapowania segmentów pamięci jako czytelne) już nie działa. Na aplikacje z docelowym pakietem SDK systemu Android 10 (poziom interfejsu API 29 lub nowszy) wpływa próba odczytania w pamięci sekcji kodu bibliotek systemowych obsługujących pamięć wykonywalną (XOM) bez uprzedniego oznaczenia sekcji jako czytelnej.

Scudo

Scudo to dynamiczny alokator pamięci w trybie użytkownika, zaprojektowany tak, aby był bardziej odporny na luki związane ze stertą. Zapewnia standardowe prymitywy alokacji i dezalokacji C, a także prymitywy C++.

ShadowCallStack

ShadowCallStack (SCS) to tryb instrumentacji LLVM , który chroni przed nadpisywaniem adresów zwrotnych (np. przepełnieniem bufora stosu) poprzez zapisywanie adresu zwrotnego funkcji w oddzielnie przydzielonej instancji ShadowCallStack w prologu funkcji funkcji innych niż liść i ładowanie adresu zwrotnego z instancji ShadowCallStack w epilog funkcji.

Audio

Dźwięk HAL

Android 10 zawiera następujące nowe funkcje audio HAL .

  • AudioSource
  • AudioFormat
  • AudioChannelMask

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

Efekty wstępnego przetwarzania

Android zapewnia efekty wstępnego przetwarzania , takie jak eliminacja echa akustycznego, automatyczna kontrola wzmocnienia i tłumienie szumów. Android 10 zawiera nowe wymagania dotyczące przechwytywania za pomocą VOICE_COMMUNICATION .

Menedżer polityki audio

W systemie Android 10 wprowadzono znaczną refaktoryzację menedżera zasad audio , aby zapewnić większą elastyczność w obsłudze złożonych zastosowań motoryzacyjnych.

Dźwięk o wysokiej rozdzielczości

Android 10 zawiera następujące ulepszenia dotyczące dźwięku o wysokiej rozdzielczości .

  • Wsparcie pływakowe
  • Obsługa częstotliwości 192 kHz
  • Obsługa ośmiu kanałów
  • Włączenie informacji o czasie

Równoczesne przechwytywanie

Android 10 usprawnia obsługę współbieżnego przechwytywania , która wymaga jednoczesnego wykonywania więcej niż jednego aktywnego przechwytywania dźwięku.

Przechwytywanie odtwarzania dźwięku

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. Podstawowym przypadkiem użycia jest umożliwienie aplikacjom do przesyłania strumieniowego przechwytywania dźwięku odtwarzanego w grach.

Interfejs API przechwytywania nie wpływa na opóźnienie aplikacji, 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 API AMidi NDK .

Kamera

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

Ulepszenia prywatności w ramach aparatu

Android 10 wprowadza ulepszenia prywatności w środowisku aparatu. Aby uniknąć ujawniania potencjalnie wrażliwych statycznych informacji o kamerze w CameraCharacteristics bez zgody użytkownika, aplikacje muszą uzyskać pozwolenie CAMERA na pobieranie statycznych metadanych ze znacznikiem wrażliwym na prywatność przy użyciu metody getCameraCharacteristics .

Aby uzyskać listę klawiszy charakterystycznych kamer wymagających uprawnień CAMERA , należy wywołać metodę getKeysNeedingPermission .

Zapytanie o rekonfigurację sesji

W systemie Android 10 dodano funkcję zapytania o rekonfigurację sesji , która pozwala poprawić wydajność dzięki większej kontroli nad wewnętrzną logiką rekonfiguracji parametrów sesji.

Interfejsy API zarządzania buforem HAL3 kamery

W systemie Android 10 wprowadzono opcjonalne interfejsy API do zarządzania buforem HAL3 kamery , które umożliwiają wdrożenie logiki zarządzania buforami w celu uzyskania różnych kompromisów w zakresie pamięci i przechwytywania opóźnień w implementacjach HAL kamery.

Kamera HAL dynamiczny przełącznik kamery fizycznej

W systemie Android 10 wprowadzono dynamiczny tag metadanych ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID , który wskazuje aktywną kamerę fizyczną leżącą u podstaw logicznego urządzenia z kamerą. Aby uzyskać więcej informacji, zobacz Obsługa wielu kamer .

Wsparcie dla ukrywania kamer fizycznych

W systemie Android 10 kamera HAL może zmniejszyć liczbę kamer fizycznych, które można bezpośrednio otworzyć za pomocą aplikacji. Aby uzyskać więcej informacji, zobacz Obsługa wielu kamer .

API Camera2 VNDK

W systemie Android 10 moduły dostawców mogą uzyskiwać dostęp do kamer i sterować nimi za pośrednictwem dwóch nowych standardowych interfejsów HIDL: android.frameworks.cameraservice.service@2.0 i android.frameworks.cameraservice.device@2.0 . Aby korzystanie z interfejsów HIDL było wygodniejsze, w systemie Android 10 wprowadzono także dostępną od dostawców bibliotekę libcamera2_vendor . Ta biblioteka jest podobna do biblioteki Camera NDK , z kilkoma drobnymi modyfikacjami.

Konfiguracje strumieniowe

W systemie Android 10 dodano funkcje umożliwiające producentom kamer reklamowanie zalecanych strumieni z kamer klientom kamer oraz obsługę interfejsu API umożliwiającego wysyłanie zapytań o kombinacje strumieni .

Wymagania dotyczące kombinacji strumieni z kamer

Urządzenia z systemem Android 10 nie muszą już obsługiwać kombinacji strumieni ze strumieniami z fizycznej kamery podrzędnej. Jednak urządzenia z systemem Android 10 i kamerą HAL w wersji 3.5 muszą obsługiwać isStreamCombinationSupported() , aby umożliwić aplikacjom sprawdzanie, czy obsługiwana jest kombinacja strumieni zawierająca strumienie fizyczne.

Aby uzyskać więcej informacji, zobacz Obsługa wielu kamer .

obrazowanie HEIF

System Android 10 zapewnia natywną obsługę aparatu w przypadku obrazów w formacie plików obrazu o wysokiej wydajności (HEIF) , które zapewniają lepszą jakość obrazu i mniejsze rozmiary w porównaniu z obrazami JPEG. Urządzenia muszą być wyposażone w 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 kamer monochromatycznych .

Łączność

Dzwonienie i wysyłanie wiadomości

Numery alarmowe i połączenia alarmowe

Android 10 zapewnia ulepszoną obsługę połączeń alarmowych . W sytuacji awaryjnej urządzenia obsługujące IRadio HAL v1.4 mogą zainicjować połączenie alarmowe, korzystając z numerów alarmowych uzyskanych ze źródła takiego jak karta SIM, sygnał sieciowy lub baza danych Androida. Liczby można kategoryzować na podstawie kategorii służb ratunkowych, takich jak policja, straż pożarna i pogotowie ratunkowe.

Interfejsy API połączeń grupowych

Interfejsy API połączeń grupowych są rozszerzeniem interfejsów API eMBMS dodanych w systemie Android 9. Nowe interfejsy API definiują standard umożliwiający aplikacjom dołączanie i transmitowanie połączeń grupowych w ramach transmisji komórkowej poprzez interakcję z pakietami oprogramowania pośredniego eMBMS. Aby połączenia grupowe mogły działać prawidłowo, wymagają wsparcia ze strony dostawcy chipsetu, dostawcy oprogramowania pośredniego i operatora komórkowego. Dokumentacja programisty znajduje się na stronie developer.google.com .

Możliwości zdalnej karty SIM

W systemie Android 10 wprowadzono funkcje zdalnej karty SIM, które umożliwiają aplikacjom do przesyłania wiadomości na urządzeniu hosta z systemem Android wysyłanie wiadomości SMS za pośrednictwem telefonów przy użyciu mechanizmów takich jak Bluetooth. Więcej informacji można znaleźć w dokumentacji referencyjnej metody getSubscriptionType i stałej SUBSCRIPTION_TYPE_REMOTE_SIM .

Wiele eSIM-ów

W systemie Android 10 klasa EuiccManager obsługuje urządzenia z wieloma wbudowanymi kartami SIM (eSIM) , czyli eUICC.

aktualizacje eSIM

W przypadku urządzeń z systemem Android 10 obsługujących karty eSIM należy zdefiniować niewymienną tablicę identyfikatorów gniazd eUICC. Urządzenia muszą także obsługiwać IRadio HAL v1.4 i IRadioConfig HAL v1.2. Aby uzyskać więcej informacji, zobacz Implementowanie wymagań eSIM i HAL .

Niesamodzielny moduł 5G (NSA)

W Androidzie 10 dodano obsługę niesamodzielnej sieci 5G (NSA) . 5G NSA to rozwiązanie dla sieci 5G, gdzie sieć wspierana jest przez istniejącą infrastrukturę 4G. W systemie Android 10 urządzenia mogą wyświetlać ikonę 5G na pasku stanu, gdy urządzenie łączy się z siecią 5G.

Sugestia konta telefonicznego

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

Przewoźnik

Przeprowadź migrację ustawień sieci komórkowej

W systemie Android 10 zmieniono architekturę kodu interfejsu użytkownika ustawień sieci komórkowej i przeniesiono go ze stosu Telefonia do stosu Ustawienia. Aby obsłużyć migrowany kod, zmień następujące wartości konfiguracyjne 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ądzeń (IMEI/MEID, IMSI i numer seryjny kompilacji) są chronione uprzywilejowanymi uprawnieniami, a dostęp jest również przyznawany aplikacjom właścicieli urządzeń i profili. Ponieważ numer seryjny IMSI i SIM jest podawany przez operatora, dostęp do tych identyfikatorów mają pakiety z uprawnieniami operatora.

Wi-Fi

Wybór sieci

Android na bieżąco ocenia jakość podłączonej sieci i ocenia jakość dostępnych sieci. Android 10 ma zaktualizowane algorytmy i procedury wyboru i przełączania między sieciami Wi-Fi .

Skanowanie odciążające preferowaną sieć Wi-Fi

W systemie Android 10 wprowadzono opcjonalną metodę interfejsu API o nazwie setDeviceMobilityState() w WifiManager , która zwiększa odstęp między skanami preferowanego odciążania sieci (PNO), gdy urządzenie jest nieruchome, aby zmniejszyć zużycie energii.

Wi-Fi operatora

W systemie Android 10 urządzenia z funkcją Wi-Fi operatora automatycznie łączą się ze skonfigurowanymi sieciami Wi-Fi operatora (sieciami z certyfikatami klucza publicznego).

Łatwe połączenie Wi-Fi

W systemie Android 10 urządzenia mogą korzystać z funkcji Wi-Fi Easy Connect , która wykorzystuje protokół udostępniania urządzeń (DPP) wprowadzony przez stowarzyszenie Wi-Fi Alliance (WFA) w celu udostępniania i konfigurowania urządzeń Wi-Fi.

Tryb niskiego opóźnienia Wi-Fi

W systemie Android 10 wprowadzono tryb niskiego opóźnienia Wi-Fi , który konfiguruje układ Wi-Fi w celu zmniejszenia opóźnień.

Zaktualizowany serwer DHCP

W ramach tworzenia parasola usług „IP Server” usuwany jest dnsmasq . Android 10 zastępuje funkcjonalność serwera DHCPv4 oddzielnym komponentem, napisanym głównie w języku Java, aby lepiej zintegrować się z płaszczyzną kontroli platformy Java. Poprawia to bezpieczeństwo i możliwość aktualizacji serwera DHCP. Aby uzyskać więcej informacji, zobacz packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java .

Aby wdrożyć tę zmianę, nie są wymagane żadne działania: wszystkie urządzenia wypuszczające i aktualizujące do Androida 10 domyślnie korzystają z DhcpServer . Jeśli masz dostosowania serwera DHCP, możesz przywrócić zachowanie systemu Android 9, ustawiając ustawienie globalne tether_enable_legacy_dhcp_server=1 . Nowy DhcpServer jest zawarty w module komponentów sieciowych, więc wszelkie dostosowania funkcjonalności serwera DHCP powinny być realizowane wcześniej.

WPA3 i Wi-Fi Enhanced Open

W systemie Android 10 dodano obsługę standardów bezpieczeństwa Wi-Fi Protected Access 3 (WPA3) i Wi-Fi Enhanced Open, aby zapewnić lepszą prywatność i odporność na znane ataki.

Bezpośrednie Wi-Fi

Wi-Fi Direct , znane również jako Wi-Fi P2P, umożliwia obsługującym urządzeniom wykrywanie i łączenie się ze sobą bezpośrednio przy użyciu protokołu Wi-Fi Direct bez dostępu do Internetu lub sieci komórkowej.

Ulepszenia randomizacji MAC

W systemie Android 10 losowość adresów MAC jest domyślnie włączona dla trybu klienta, aplikacji SoftAp i Wi-Fi Direct. Urządzenia muszą zapewniać opcję włączania lub wyłączania randomizacji adresów MAC dla każdego identyfikatora SSID w interfejsie użytkownika systemu.

Punkt przejścia R2

W Androidzie 10 wprowadzono 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 przy użyciu protokołu SOAP-XML.

NFC

Bezpieczna komunikacja NFC

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

Android Beam wycofany

W systemie Android 10 aplikacja Android Beam nie jest już wymagana, a poniższe interfejsy i metody zostały uznane za przestarzałe.

Interfejsy:

Metody:

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

Grafika

Kontrola powierzchni

Android 10 dodaje ASurfaceControl , nowy sposób akceptowania buforów przez SurfaceFlinger .

Implementacja grafiki

Warstwy OpenGL ES

Android 10 wprowadza system warstwowy dla GLES.

EGL 1,5

Android 10 implementuje interfejs EGL 1.5 . Informacje na temat nowych funkcji w EGL 1.5 można znaleźć w specyfikacji Khronos Releases EGL 1.5 .

Wulkan

Android 10 zawiera obsługę grafiki Vulkan 1.1. Platforma obsługuje również VK_KHR_swapchain v70, więc aplikacja Vulkan jest w stanie utworzyć VkImage wspierany przez pamięć swapchain.

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

W systemie Android 10 dodano obsługę częstotliwości odświeżania wydajności. Ta funkcja jest domyślnie wyłączona.

Interakcja

Automobilowy

Dźwięk samochodowy

W systemie Android 10 kontekst Audio HAL jest mapowany na AudioAttributes.usage w celu identyfikowania dźwięków. Android obsługuje jedną instancję AUDIO_DEVICE_OUT_BUS na kontekst. IAudioControl HAL zapewnia rozszerzenia Audio HAL specyficzne dla pojazdu .

Nawigacja gestami

W Androidzie 10 wprowadzono opcję w pełni gestowej nawigacji systemowej. Informacje o tym, jak przygotować aplikacje do korzystania z tej funkcji, znajdziesz na stronie Nawigacja gestami w witrynie dla programistów aplikacji na Androida.

Sieci neuronowe

W Androidzie 10 wprowadzono aktualizacje interfejsu Neural Networks API i Neural Networks HAL. Podsumowanie zmian można znaleźć w artykule Sieci neuronowe .

Nowa i zaktualizowana dokumentacja sieci neuronowych dla systemu Android 10:

Czujniki

Czujniki HAL 2.0

Sensors HAL 2.0 obsługuje szybkie kolejki komunikatów (FMQ) do wysyłania zdarzeń czujników z warstwy HAL do platformy Android Sensors Framework.

Czujniki wyłączone

Android 10 zawiera ustawienie programistyczne umożliwiające wyłączenie wszystkich czujników na urządzeniu. Ta funkcja pomaga programistom testować funkcjonalność aplikacji w sytuacjach, gdy te czujniki stają się niedostępne, a także umożliwia użytkownikom kontrolowanie czujników w ich urządzeniu.

Jeśli Twoje urządzenia korzystają z domyślnej implementacji SensorService , CameraService i AudioPolicyService , nie jest potrzebne żadne dodatkowe dostosowywanie projektu referencyjnego. Jeśli masz inne czujniki, zobacz Dostosowywanie , aby uzyskać więcej informacji na temat obsługi tej funkcji.

Głoska bezdźwięczna

Aktualizowane komponenty multimedialne

System Android 10 zapewnia aktualizowalne komponenty multimedialne , które umożliwiają aktualizację modułowych komponentów systemu związanych z multimediami za pośrednictwem infrastruktury sklepu Google Play lub za pośrednictwem zapewnianego przez partnera mechanizmu bezprzewodowego (OTA).

Media DRM

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

Rozszyfrowanie

Android 10 obsługuje dekodowanie AV1 SW.

Uprawnienia

Android 10 zapewnia dodatkowe konfiguracje uprawnień zapewniające przejrzystość i prywatność użytkowników.

Informacje o dostawcy kontaktów i powinowactwach

Począwszy od Androida 10, dostęp do danych związanych z powinowactwami kontaktów zarządzanych przez komponent Contacts Provider jest inny niż w Androidzie 9 i starszych wersjach. Te zmiany dotyczące dostępności danych poprawiają prywatność użytkowników na wszystkich urządzeniach z Androidem 10, które korzystają z komponentu Dostawca kontaktów. Bazowa baza danych nie zawiera już danych o podobieństwach kontaktów. Dlatego aplikacje nie mogą na nim zapisywać ani czytać.

Oczekuje się, że zmiany w Androidzie 10 będą miały duży wpływ na interfejsy API. Jeśli Twoje aplikacje korzystają z przestarzałych funkcji wymienionych w sekcjach Dostawca kontaktów i Informacje o podobieństwach, możesz zaktualizować swoje aplikacje, aby skompensować wszelkie zmiany. Ponadto, jeśli używasz rozwidlonej wersji dostawcy kontaktów, musisz zaktualizować swojego dostawcę kontaktów.

Uprawnienia dotyczące lokalizacji w trzech stanach

Trójstanowe uprawnienia do lokalizacji w systemie Android 10 dają użytkownikom większą kontrolę nad sposobem, w jaki aplikacje uzyskują dostęp do lokalizacji ich urządzeń.

Przypomnienie o dostępie do lokalizacji w tle

Android 10 zawiera przypomnienie o lokalizacji dostępu w tle , które zwiększa przejrzystość dostępu aplikacji do lokalizacji urządzenia i pomaga użytkownikom zachować kontrolę nad takim dostępem.

Ogranicz oportunistyczne lokalizacje

Gdy aplikacja żąda lokalizacji urządzenia, może poczekać na odpowiedź na żądanie lub, korzystając z aktywnych odbiorników lokalizacji, uzyskać oportunistyczną aktualizację lokalizacji. Począwszy od systemu Android 10, aby uzyskać oportunistyczne aktualizacje lokalizacji , programiści muszą określić, że potrzebują pasywnych aktualizacji lokalizacji z klasy FusedLocationProviderClient .

Uruchamianie aplikacji w tle

W systemie Android 10 nieuprzywilejowane aplikacje bez widocznego okna nie mogą automatycznie uruchamiać się na pierwszym planie. Ta zmiana blokuje wyskakujące okienka reklamowe i złośliwe przejęcia. Aby to włączyć, nie jest wymagane żadne działanie.

Sandboxing aplikacji

W systemie Android 10 aplikacje mają ograniczony, nieprzetworzony widok systemu plików, bez bezpośredniego dostępu do ścieżek takich jak /sdcard/DCIM . Jednak aplikacje zachowują 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.

Skorzystaj ze wskazówek dotyczących piaskownicy aplikacji dotyczących udostępniania plików , aby zapewnić odpowiednią szczegółowość udostępniania danych.

Ogranicz dostęp do schowka aplikacji

W systemie Android 10 dostęp do schowka uległ zmianie, tak że nie można oglądać zawartości schowka przez wywołanie ClipboardManager.getPrimaryClip lub dodanie odbiornika onPrimaryClipChangedListener w celu powiadamiania o zmianach w schowku. Zwiększa to prywatność użytkowników i uniemożliwia szkodliwym aplikacjom modyfikowanie schowka.

W systemie Android 10 dostęp do odczytu jest dozwolony tylko w przypadku bieżącej aplikacji z fokusem wprowadzania lub bieżącej klawiatury. Wywołanie odbiornika ClipboardManager.onPrimaryClipChanged() jest teraz uruchamiane tylko w przypadku aplikacji spełniających takie ograniczenia. ClipboardManager.getPrimaryClip i ClipboardManager.getPrimaryClipDescription zwracają null , jeśli aplikacja żądająca nie jest domyślnym edytorem metod wprowadzania (IME) lub nie ma fokusu wprowadzania.

Uprawnienia wykonawcze obejmują rozpoznawanie aktywności

Użytkownicy widzą teraz okno dialogowe rozpoznawania aktywności, gdy aplikacja uzyskuje dostęp do lokalizacji urządzenia w tle. Mocno ograniczone uprawnienia wykonawcze muszą być odpowiednio umieszczone na białej liście w systemie Android 10.

Uprawnienie MANAGE_DEVICE_ADMINS

Android 10 zmienia uprawnienie MANAGE_DEVICE_ADMINS z podpisu lub uprzywilejowanego na tylko podpis. Oznacza to, że tylko aplikacje podpisane przez platformę mogą ustawić inne aplikacje jako administratora urządzenia.

Udostępnianie ulepszeń API

Android 10 udostępnia szereg nowych funkcji API platformy Android związanych z udostępnianiem . Jeśli zmodyfikowałeś kod Share Sheet w swojej implementacji, upewnij się, że implementacja obsługuje te nowe funkcje. Jeśli nie zmodyfikowałeś kodu Share Sheet w swojej implementacji, nie musisz nic robić, aby obsługiwać te nowe funkcje.

Środowisko wykonawcze Androida (ART)

Podpisana konfiguracja

Funkcja Signed Config umożliwia osadzanie konfiguracji ograniczeń interfejsu innego niż SDK w plikach APK. Umożliwia to usunięcie z czarnej listy określonych interfejsów innych niż SDK, aby AndroidX mógł bezpiecznie z nich korzystać. Dzięki tej zmianie AndroidX może dodać obsługę nowych funkcji w starszych wersjach Androida.

Wydajność

Warstwa abstrakcji grupy C

Android 10 zawiera warstwę abstrakcji cgroup i profile zadań, których programiści mogą używać do opisywania zestawu ograniczeń stosowanych do wątku lub procesu.

Demon zabójcy małej ilości pamięci (lmkd)

Android 10 obsługuje nowy tryb lmkd , który wykorzystuje monitory informacji o przestoju jądra (PSI) do wykrywania ciśnienia pamięci.

Moc

Zarządzanie energią platformy

W systemie Android 10 tryb drzemki można włączyć na urządzeniach, które są zawsze włączone, a także na urządzeniach zasilanych bateryjnie.

Rutynowe oszczędzanie baterii

W Androidzie 10 wprowadzono nową opcję harmonogramu oszczędzania baterii o nazwie Oparta na rutynie . Rutynowe oszczędzanie baterii umożliwia aplikacji wybranej przez producenta OEM dostarczanie sygnałów do systemu w celu bardziej inteligentnego planowania oszczędzania baterii. Ta opcja wymaga konfiguracji i jest opcjonalna do wdrożenia.

Power Stats Hal

W Androida 10 IPowerStats.hal zastępuje interfejsy API kolekcji statystyk mocy w IPower.hal . Podczas gdy Hal Power nadal obsługuje interfejsy API, zostaną migrowane wyłącznie do statystyk władzy HAL w przyszłości.

Statystyki mocy HAL zawiera nowe interfejsy API do obsługi gromadzenia danych z pomiaru mocy na urządzeniu dla obsługiwanych urządzeń. Istniejące interfejsy API kolekcji statystyk mocy są również aktualizowane w celu poprawy elastyczności. API wskazujące na moc pozostają w mocy i nie zmieniają się.

Łagodzenie termiczne

Ramy termiczne w Android 10 Streszczenie interfejsów urządzenia dla czujnika temperatury podsystemu termicznego, w tym procesora, GPU, akumulator, skóry i urządzenia chłodzącego. Framework wprowadza interfejs ankietowy w celu zapytania o status termiczny w celu zainicjowania dławiania, oraz interfejs zwrotny w celu wysłania wiadomości do użytkownika po przekroczeniu progu.

Android 10 zapewnia nowe typy danych za pośrednictwem interfejsu IThermalService przy użyciu tych trzech nowych metod:

Aplikacje dodają i usuwają słuchaczy oraz uzyskują dostęp do stanu temperatury w klasie PowerManager . Tylko zaufana usługa systemowa, taka jak interfejs API Android lub producent urządzeń, może uzyskać dostęp do informacji o powiązanych zdarzeniach przyczynowych. Producenci urządzeń lub producenci SOC muszą zaimplementować thermal HAL 2.0 , aby umożliwić pełną funkcjonalność nowej ramy termicznej.

Przykład implementacji łagodzenia termicznego znajduje się wdrożenie referencyjne .

Aktualizacje

Format pliku APEX

Android Pony Express (APEX) to nowy format pojemnika używany w przepływie instalacji dla komponentów systemu modułowego.

Partycje dynamiczne

Dynamiczne partycje wprowadzają system partycjonowania przestrzeni użytkownika do Androida, umożliwiając tworzenie, rozmiar lub niszczenie partycji podczas aktualizacji OTA. Twórcy urządzeń nie muszą się martwić o poszczególne rozmiary partycji, takich jak system , vendor i product . Zamiast tego przydzielono jedną dużą super partycję, a podczęści można w niej dynamicznie rozmiar.

Dynamiczne aktualizacje systemu

Dynamic System Aktualizacje (DSU) umożliwia tworzenie obrazu systemu Androida, który użytkownicy mogą pobierać z Internetu i wypróbować bez ryzyka uszkodzenia bieżącego obrazu systemu.

Multiuser Backup i przywracanie

Android 10 obsługuje funkcjonalność tworzenia kopii zapasowych i przywracania dla wszystkich użytkowników na urządzeniu. Wcześniej tworzenie kopii zapasowych i przywracania były dostępne tylko dla użytkownika systemu. Tworzenie kopii zapasowych i przywracania użytkowników niesystemu są domyślnie wyłączone, ponieważ ma jedynie częściowe pokrycie ustawień, tapet i komponentów systemowych.

Nakładki

Użytkownicy pracujący z kompilacjami userdebug lub eng oczekują, że będą mogli skutecznie ponownie ponownie znieść partycję systemową jako odczyt-napis, a następnie dodać lub zmodyfikować dowolną liczbę plików bez ponownego odbioru obrazu systemu. Możesz użyć Overlayfs , który automatycznie konfiguruje pamięć podkładu dla zapisanego systemu plików jako górnego odniesienia i zamontuje nad dolną. Działania te mają miejsce w żądaniach adb disable-verity i adb remount . Aby uzyskać więcej szczegółów, zobacz Readme nakładki w AOSP.

Udostępniona obsługa biblioteki w trybie odzyskiwania

Na Androidzie 10 wspólne biblioteki są dostępne na partycji odzyskiwania, co eliminuje potrzebę wykonywania wszystkich trybu odzyskiwania. Wspólne biblioteki znajdują się w katalogu /system/lib (lub /system/lib64 dla urządzeń 64-bitowych) w partycji.

Aby dodać nową bibliotekę udostępnioną do partycji odzyskiwania, dodaj recovery_available: true lub recovery: true to Android.bp z biblioteki udostępnionej. Te pierwsze instaluje bibliotekę zarówno w partycjach systemowych, jak i odzyskiwania, podczas gdy drugi instaluje ją tylko do partycji odzyskiwania.

Udostępnioną obsługę biblioteki nie można zbudować z systemem budowy opartego na systemie Androida. Aby przekonwertować istniejący statyczny wykonywalny dla trybu odzyskiwania na dynamiczny, usuń LOCAL_FORCE_STATIC_EXECUTABLE := true in Android.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 Androida cofnięcie się do poprzedniego stanu, gdy aktualizacja Android Over-the-Air (OTA) się nie powiedzie.