Wydanie mobilnej platformy Android 17

Firma Google opublikowała wydanie otwartej platformy mobilnej Android 17. Powiązane z nowym wydaniem pliki źródłowe zostały umieszczone w repozytorium Git projektu (gałąź android-17.0.0_r1). Wersje oprogramowania są przygotowane dla urządzeń Pixel 6/6a/6 Pro, Pixel 7/7a/7 Pro, Pixel 8/8a/8 Pro, Pixel 9/9a/9 Pro/9 Pro XL/9 Pro Fold, Pixel 10/10 Pro/10 Pro XL/10 Pro Fold, Pixel Fold i Pixel Tablet. Wstępne wersje oprogramowania są dostępne dla urządzeń HONOR, iQOO, Lenovo, OnePlus, OPPO, realme, Sharp, vivo i Xiaomi. W procesie tworzenia są uniwersalne wersje GSI (Generic System Images), które pasują do różnych urządzeń opartych na architekturach ARM64 i x86_64.

Wśród zmian (1, 2, 3):

  • Dodano nowy tryb pracy w wielu oknach — „Bubbles”, umożliwiający uruchamianie dowolnych aplikacji w pływających oknach, przypominających wyświetlane nad inną zawartością powiadomienia do wysyłania wiadomości („bąbelki”), ale nie powiązanych z specjalizowanym API. Otwieranie aplikacji w pływającym oknie odbywa się poprzez długie naciśnięcie ikony aplikacji. Na dużych ekranach ikony pływających okien są wyświetlane w osobnym obszarze na pasku zadań. Takie okna można grupować, przesuwać i przypinać na ekranie.

  • Kontynuowano rozwój platformy dla urządzeń z dużymi ekranami, takich jak tablety, laptopy, systemy stacjonarne i smartfony ze składanymi ekranami. Usunięto wcześniej obowiązujące opcje wyłączania nowego zachowania na urządzeniach z ekranami szerszymi niż 600 dp, związane z ignorowaniem niektórych API do zarządzania zmianą rozmiaru i orientacją ekranu (screenOrientation, resizeableActivity, [min|max]AspectRatio), a także adaptacyjnym rozmieszczaniem aplikacji w oknach, które umożliwiają zmianę rozmiaru i przemieszczanie po ekranie.

  • Dodano systemowe API EyeDropper API, dzięki któremu aplikacja może uzyskać informacje o kolorze dowolnego piksela na ekranie bez potrzeby uzyskania uprawnień do przechwytywania ekranu. Bezpieczeństwo zapewnia to, że użytkownik sam wybiera obszar do określenia koloru za pomocą zarządzanego przez platformę interfejsu z „pipetą”, który nie jest kontrolowany przez aplikację, tzn. aplikacja nie może żądać informacji o konkretnym pikselu i piksel po pikselu odtwarzać zawartości ekranu.

  • Dodano systemowe interfejs wyboru kontaktu z książki adresowej, do którego dostęp uzyskuje się po przyznaniu uprawnienia ACTION_PICK_CONTACTS. Interfejs umożliwia pominięcie udzielania uprawnienia READ_CONTACTS, które pozwala na odczyt wszystkich danych kontaktowych. Przy wywołaniu nowego interfejsu użytkownik decyduje, jakie informacje z książki adresowej przekazać aplikacji, z możliwością wyboru tylko poszczególnych pól.

  • Dodano API PhotoPickerUiCustomizationParams do dostosowywania interfejsu wyboru zdjęć, co pozwala zbliżyć go do stylu wywołującej aplikacji. Na przykład, można zmienić proporcje miniatur zdjęć z 1:1 (kwadrat) na 9:16 (portret).

  • Dodano uprawnienie USE_LOCATION_BUTTON, które umożliwia zintegrowanie w interfejsie aplikacji systemowego przycisku udostępniania dostępu do dokładnych danych o lokalizacji. Przycisk jest rysowany przez system i po jego naciśnięciu użytkownik uzyskuje dostęp do lokalizacji tylko na czas trwania bieżącej sesji.

  • Dodano opcję, która pozwala na wyłączenie wyświetlania nazw aplikacji pod ich ikonami.
  • Zmodyfikowano wygląd paska narzędzi do nagrywania screencastów.

  • Dodano wsparcie dla reakcji ekranowych (Screen Reactions), które łączą nagrywanie wideo z przedniej kamery z tworzeniem screencastu w celu nałożenia własnych komentarzy na działania na ekranie.

  • Dodano tryb dla gier na urządzeniach ze składanymi ekranami, w którym jedna połowa złożonego ekranu jest używana do wyświetlania rozgrywki, a druga do wirtualnego kontrolera.

  • Dodano interfejs API Handoff, umożliwiający przekazywanie stanu aplikacji na inne znajdujące się w pobliżu urządzenie z systemem Android (na przykład tablet) i kontynuowanie pracy tam.

  • Wdrożono interaktywne przyczepione okna, które, w przeciwieństwie do tradycyjnych okien w trybie „obraz w obrazie” (Picture-in-Picture), pozostają interaktywne po przypięciu nad innymi aplikacjami w trybie pulpitu.
  • Dodano dwa nowe API: API UWB DL-TDOA — lokalizacja urządzenia wewnątrz budynku za pomocą Wi-Fi do nawigacji wewnętrznej; API Proximity Detection do wykrywania pobliskich urządzeń przez Wi-Fi.
  • Dodano wsparcie dla formatu wideo VVC (Versatile Video Coding), znanego również jako standard kompresji wideo H.266, opracowanego wspólnie przez grupy robocze MPEG (ISO/IEC JTC 1) i VCEG (ITU-T), z udziałem takich firm jak Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm i Sony. H.266 zastępuje H.265 (HEVC) i zapewnia wysoką efektywność przesyłania i przechowywania wszystkich rozdzielczości ekranu (od SD i HD do 4K i 8K), obsługuje wideo z rozszerzonym zakresem dynamicznym (HDR, High Dynamic Range) oraz wideo panoramiczne w trybie 360 stopni.
  • Dodano możliwość rejestrowania wideo o stałym poziomie jakości. Tryb ten jest konfigurowany w obiekcie MediaRecorder, przy użyciu metody setVideoEncodingQuality(), co pozwala na ustalenie poziomu jakości niezwiązanego z bitrate'em.
  • Dodano wsparcie dla formatu obrazów RAW14, stosowanego w profesjonalnych cyfrowych aparatach, który zapewnia przechowywanie 15 bitów na kanał kolorystyczny.
  • Dodano wsparcie dla formatu wideo HDR Eclipsa Video.
  • Dodany programowy kodek dźwiękowy w formacie HE-AAC (High-Efficiency Advanced Audio Coding), wspierający zarówno niskie, jak i wysokie bitrate'y.
  • Dodano nowe uprawnienie ACCESS_LOCAL_NETWORK, które ogranicza dostęp aplikacji do lokalnej sieci. Posiadanie tego uprawnienia pozwala aplikacjom na identyfikację i łączenie się z urządzeniami w lokalnej sieci, na przykład z urządzeniami inteligentnego domu i systemami multimedialnymi. Uprawnienie dodano, aby zablokować skanowanie zasobów w lokalnej sieci przez szkodliwe aplikacje, na przykład w celu ukrytej identyfikacji otoczenia użytkownika.
  • Rozszerzono ochronę przed przechwytywaniem jednorazowych haseł (OTP) i kodów potwierdzających wysyłanych za pośrednictwem SMS. Bezpośredni dostęp do tego typu wiadomości jest teraz udostępniany większości aplikacji dopiero po trzech godzinach od ich otrzymania. W standardowej aplikacji do czytania SMS wiadomości te są wyświetlane od razu.
  • Wprowadzono ochronę przed telefonami oszustów podszywających się pod pracowników banku. Platforma może współpracować z zainstalowanymi aplikacjami bankowymi w celu potwierdzenia, że ​​połączenie zostało zainicjowane przez bank. Banki mogą również identyfikować numery telefonów, na które dozwolone są tylko połączenia przychodzące.
  • Dodano możliwość udzielania aplikacjom tymczasowego dostępu do danych o dokładnej lokalizacji, działającego tylko w trakcie bieżącej sesji z programem.
  • Mechanizm ochrony dynamicznego ładowania kodu (DCL, Dynamic Code Loading) został rozszerzony w celu zastosowania z natywnymi bibliotekami ładowanymi za pośrednictwem metody System.load(), a nie tylko
    plikami w formatach DEX i JAR. DCL pozwala uniknąć wstrzykiwania złośliwego kodu do dynamicznie ładowanych plików wykonywalnych, dzięki przyznawaniu tym plikom praw dostępu, które pozwalają tylko na odczyt.
  • Włączono domyślnie mechanizm Certificate Transparency, prowadzący publiczny rejestr wszystkich wydanych i cofniętych certyfikatów,
  • Umożliwiono podpisywanie pakietów APK podpisem cyfrowym na bazie hybrydowego algorytmu, łączącego klasyczny algorytm z algorytmem ML-DSA, odpornym na ataki ze strony komputerów kwantowych.
  • Dla aplikacji działających w tle ograniczono dostęp do API do odtwarzania dźwięku, łączenia się z urządzeniami audio i zmiany głośności. Zakłada się, że tylko aktywne aplikacje, z którymi obecnie wchodzi w interakcję użytkownik, mogą rozpocząć odtwarzanie i zmieniać głośność.
  • Dodano wsparcie dla hybrydowego szyfrowania opartego na mechanizmie HPKE (Hybrydowe Szyfrowanie Klucza Publicznego, RFC 9180), które łączy prostotę przekazywania klucza w szyfrowaniu z kluczem publicznym z wysoką wydajnością szyfrowania symetrycznego (dane są szyfrowane szybkim kluczem symetrycznym, a sam klucz jest szyfrowany wolnym kluczem asymetrycznym).
  • Przy wprowadzaniu haseł i kodów PIN przy użyciu fizycznej klawiatury domyślnie wyłączone jest wyświetlanie ostatnio wprowadzonego znaku w miarę wpisywania.
  • Aby uprościć realizację wsparcia dla touchpadów w grach, ujednolicono przetwarzanie zdarzeń zmysłowych z myszy i touchpadu — domyślnie zdarzenia związane z poruszaniem wskaźnika i gestami przewijania z touchpadu są teraz konwertowane na format z względnymi współrzędnymi, jak w przypadku myszy. Dostęp do absolutnych współrzędnych jest zapewniany przy wyraźnym ustawieniu trybu POINTER_CAPTURE_MODE_ABSOLUTE.
  • Do obiektu ChooserSession dodano metodę getInitialRestingBounds(), umożliwiającą uzyskanie końcowej pozycji i rozmiaru okna dialogowego wyboru (Chooser) po zakończeniu animacji i załadowaniu danych.
  • Dodano metody getStreamingAppMaxDownlinkKbps i getStreamingAppMaxUplinkKbps do określenia maksymalnej przepustowości kanału komunikacyjnego w celu wyboru poziomu jakości podczas strumieniowego przesyłania.
  • Producenci sprzętu otrzymali API do tworzenia rozszerzeń dla kamer, które pozwalają wykorzystać w aplikacjach specyficzne funkcje, takie jak mechanizm poprawy szczegółowości Super Resolution, tryby redukcji szumów i AI-optymizatory jakości.
  • Dodano API do uzyskiwania informacji o typie kamery (wbudowana kamera, kamera podłączana przez USB web-kamerę lub wirtualna kamera).
  • Dodano wsparcie dla aparatów słuchowych podłączanych przez interfejs Bluetooth Low Energy (BLE). Urządzenia te zostały przypisane do nowej kategorii TYPE_BLE_HEARING_AID, co pozwala aplikacjom rozdzielać aparaty słuchowe i słuchawki oraz oddzielnie zarządzać odtwarzaniem dźwięków systemowych (na przykład można odtwarzać dźwięki powiadomień, połączeń i budzików przez wbudowany głośnik telefonu, a nie przez aparat słuchowy).
  • Dodano oddzielne ustawienia do włączenia pokazu hasła, wprowadzonego na fizycznej klawiaturze oraz na ekranie dotykowym. Domyślnie znaki hasła wprowadzane za pomocą fizycznej klawiatury są natychmiast ukrywane.
  • Udoskonalono wyświetlanie widżetów aplikacji na zewnętrznych ekranach, uwzględniając różnice w DPI przy skalowaniu.
  • Dodano zapytanie ACTION_VPN_APP_EXCLUSION_SETTINGS, które pozwala wywołać systemowy ekran ustawień umożliwiających aplikacji dostęp do sieci z pominięciem VPN-tunelu.
  • Dodano obsługę dostępnych w OpenJDK 25 funkcji języka i klas Java.
  • Rozszerzono możliwości interfejsów programistycznych do pracy z kamerą. Do obiektu CameraCaptureSession dodano metodę updateOutputConfigurations(), która umożliwia dynamiczne przypinanie lub odpinanie obszarów wyjściowych bez konieczności przeprowadzania ponownej konfiguracji całej sesji przechwytywania danych z kamery. W praktyce zmiana ta pozwala na płynne przełączanie między różnymi trybami pracy kamery (np. nagrywaniem wideo i robieniem zdjęć). W przypadku logicznych kamer obejmujących kilka fizycznych czujników dodano możliwość uzyskiwania metadanych o każdym z czujników, a nie tylko o głównym.
  • Ogłoszono przestarzałym atrybut android:usesCleartextTraffic, który umożliwiał aplikacji transmisję nieszyfrowanego ruchu, np. połączeń przez „http://”. W przypadku konieczności korzystania z nieszyfrowanego ruchu należy użyć oddzielnych plików z ustawieniami bezpieczeństwa.
  • Dodano ustawienia do zarządzania historią połączeń VoIP, umożliwiające kontrolowanie zapisywania informacji w logach i wyświetlania w interfejsie informacji o wykonanych połączeniach.
  • W API Wi-Fi RTT (Round-Trip-Time) rozszerzono możliwość ciągłego określania przybliżonej odległości do punktów dostępowych oraz bezpiecznego określania węzłów dla połączeń P2P (peer-to-peer).
  • W CompanionDeviceManager dodano nowe profile do żądania uprawnień i interakcji aplikacji z urządzeniami medycznymi i trackerami fitness.
  • W Android Runtime (ART) wdrożono generacyjny zbieracz śmieci (Generational Concurrent Mark-Compact Garbage Collector), który stosuje oddzielne przetwarzanie „starych” i „młodych” obiektów, co zwiększa efektywność czyszczenia niedawno utworzonych obiektów o krótkim czasie życia. Zastosowanie generacyjnego zbieracza śmieci zmniejsza ryzyko zatrzymań podczas alokacji zasobów i obniża obciążenie CPU, co poprawia efektywność zużycia energii.
  • Wprowadzono ograniczenie maksymalnej pojemności pamięci RAM, którą może zajmować aplikacja. W przypadku przekroczenia limitu, obliczanego na podstawie dostępnej pamięci RAM w urządzeniu, aplikacja jest wymuszona do zakończenia. Aby zmniejszyć zużycie pamięci, zaproponowano R8 Optimizer, który pakuje nazwy klas, metod i pól, a także usuwa nieużywany kod i zasoby.
  • Podczas kompilacji jądra Linux włączona została optymalizacja AutoFDO (Auto-Feedback-Directed Optimization), która wykorzystuje wyniki profilowania z informacjami o częstotliwości wykonywania różnych fragmentów kodu w celu zwiększenia wydajności często wykonywanych operacji. W przeprowadzonych testach włączenie AutoFDO dla jądra spowodowało skrócenie czasu ładowania o 2,1%, przyspieszenie pierwszego uruchomienia programów o 4,3%, zwiększenie efektywności wywołań systemowych o 9,3%, skrócenie czasu wykonywania transakcji mmap dla Binder o 12,3%, HwBinder o 20% i Binder RPC o 21,7%.
  • Zaproponowana nowa implementacja kolejki wiadomości android.os.MessageQueue, działająca bez blokad. Nowa implementacja pozwala zwiększyć wydajność i zmniejszyć utratę klatek.
  • Aplikacjom, które deklarują wsparcie dla Android 17 i nowszych wydań, zabrania się zmiany wartości pól oznaczonych jako „static final”, co umożliwia zastosowanie bardziej agresywnych optymalizacji wydajności w czasie wykonywania.
  • W celu zmniejszenia zużycia pamięci ograniczono rozmiar własnych układów stylów powiadomień (notification view).
  • Do profilera ProfilingManager dodano dodatkowe wyzwalacze TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM oraz TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE do zbierania danych pomocnych przy debugowaniu problemów z wydajnością.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster