Wiadomości o usługach

Pierwsza wersja beta Androida 17

Czas czytania: 7 minut
Wyświetl profil Matthew McCullougha
Matthew McCullough Vice President, Product Management, Android Developer

Dziś udostępniamy pierwszą wersję beta Androida 17, kontynuując nasze prace nad platformą, która stawia na pierwszym miejscu prywatność, bezpieczeństwo i wydajność. Ta wersja jest kontynuacją naszych prac nad bardziej elastycznymi aplikacjami na Androida. Wprowadziliśmy w niej znaczące ulepszenia funkcji aparatu i multimediów, nowe narzędzia do optymalizacji łączności oraz rozszerzone profile urządzeń towarzyszących. Ta wersja podkreśla też zasadniczą zmianę w sposobie udostępniania nowych wersji społeczności programistów – od tradycyjnego modelu wersji przedpremierowej dla programistów po program Android Canary.

Poza wersją przedpremierową dla programistów

Android zastąpił tradycyjną „wersję przedpremierową dla programistów” ciągłym kanałem Canary. Ten nowy model „zawsze włączony” ma 3 główne zalety:

  • Szybszy dostęp: funkcje i interfejsy API trafiają do wersji Canary od razu po przejściu testów wewnętrznych, a nie dopiero w ramach kwartalnej wersji.
  • Większa stabilność: wczesne „testy bojowe” w wersji Canary zapewniają bardziej dopracowaną wersję beta z nowymi interfejsami API i zmianami w działaniu, które są bliższe ostatecznej wersji.
  • Łatwiejsze testowanie: Canary obsługuje aktualizacje OTA (nie musisz już ręcznie wgrywać oprogramowania) i jako osobny kanał aktualizacji łatwiej integruje się z przepływami pracy CI. Dzięki temu możesz jako pierwszy(-a) przekazywać natychmiastowe opinie o nadchodzących potencjalnych zmianach.

Harmonogram Androida 17

Szybko przejdziemy z wersji beta do etapu stabilności platformy, który planujemy na marzec. Na tym etapie udostępnimy ostateczne interfejsy API pakietu SDK/NDK i w dużej mierze ostateczne zachowania aplikacji. Od tego momentu do ostatecznej premiery będziesz mieć kilka miesięcy na przeprowadzenie testów.

timeline1.png

Rok premier

Planujemy, że Android 17 będzie otrzymywać aktualizacje w ramach serii kwartalnych wersji. Nadchodząca wersja w II kwartale to jedyna, w której wprowadzimy planowane zmiany w działaniu aplikacji, które mogą powodować problemy. W IV kwartale planujemy wydać mniejszą wersję pakietu SDK z dodatkowymi interfejsami API i funkcjami.

timeline2.png

Ograniczenia dotyczące orientacji i rozmiaru

Wraz z premierą wersji beta Androida 17 przechodzimy do kolejnego etapu naszej adaptacyjnej mapy drogowej: Android 17 (poziom interfejsu API 37) usuwa możliwość rezygnacji przez deweloperów z ograniczeń dotyczących orientacji i możliwości zmiany rozmiaru na urządzeniach z dużym ekranem (sw > 600 dp).

Gdy aplikacja jest kierowana na pakiet SDK 37, musi być gotowa na dostosowanie. Użytkownicy oczekują, że aplikacje będą działać wszędzie – podczas korzystania z wielu aplikacji na tablecie, rozkładania urządzenia czy korzystania z okien na komputerze – i że interfejs będzie wypełniać przestrzeń i dostosowywać się do pozycji urządzenia.

Najważniejsze zmiany w pakiecie SDK 37

Aplikacje kierowane na Androida 17 muszą być zgodne z wycofywaniem atrybutów manifestu i interfejsów API środowiska wykonawczego wprowadzonym w Androidzie 16. Gdy aplikacja jest uruchamiana na dużym ekranie (mniejszy wymiar ≥ 600 dp), te atrybuty i interfejsy API są ignorowane:

Atrybuty pliku manifestu/interfejs APIIgnorowane wartości
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivitywszystkie
minAspectRatiowszystkie
maxAspectRatiowszystkie

Wyjątki i kontrola użytkownika

Te zmiany dotyczą tylko dużych ekranów i nie mają zastosowania do ekranów mniejszych niż sw600dp (w tym tradycyjnych telefonów w formie tabletu). Dodatkowo aplikacje sklasyfikowane jako gry (na podstawie flagi android:appCategory) są zwolnione z tych ograniczeń.

Ważne jest również, aby pamiętać, że użytkownicy zachowują kontrolę. Mogą wyraźnie włączyć lub wyłączyć domyślne zachowanie aplikacji w ustawieniach proporcji obrazu systemu.

Aktualizacje zmian w konfiguracji

Aby zwiększyć zgodność aplikacji i zminimalizować przerywanie odtwarzania filmów, utratę danych wejściowych i inne rodzaje zakłóceń, aktualizujemy domyślne działanie w przypadku ponownego tworzenia aktywności. Od Androida 17 system nie będzie już domyślnie ponownie uruchamiał aktywności w przypadku określonych zmian konfiguracji, które zwykle nie wymagają ponownego tworzenia interfejsu, w tym CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_UI_MODE (gdy zmienia się tylko UI_MODE_TYPE_DESK), CONFIG_TOUCHSCREEN i CONFIG_COLOR_MODE. Zamiast tego aktywności związane z bieganiem będą otrzymywać te aktualizacje za pomocą onConfigurationChanged. Jeśli aplikacja wymaga pełnego ponownego uruchomienia, aby ponownie załadować zasoby na potrzeby tych zmian, musisz teraz wyraźnie włączyć tę opcję za pomocą nowego atrybutu manifestu android:recreateOnConfigChanges, który umożliwia określenie, które zmiany konfiguracji powinny wywoływać pełny cykl życia działania (od zatrzymania, przez zniszczenie, po ponowne utworzenie), wraz z powiązanymi stałymi mcc, mnc i nowymi stałymi keyboard, keyboardHidden, navigation, touchscreen i colorMode.

Przygotuj aplikację

Udostępniliśmy narzędzia i dokumentację, które ułatwią Ci to zadanie. Więcej wskazówek znajdziesz w naszym artykule na blogu, w którym przedstawiamy strategie rozwiązywania typowych problemów. Aplikacje będą musiały obsługiwać układy poziome i pionowe dla rozmiarów okien w pełnym zakresie formatów obrazu, ponieważ ograniczenie orientacji lub formatu obrazu nie będzie już możliwe. Zalecamy przetestowanie aplikacji za pomocą Androida 17 w wersji beta 1 na emulatorach Pixela Tablet lub Pixela Fold (skonfigurowanych na targetSdkPreview = "CinnamonBun") albo za pomocą systemu sprawdzania zgodności aplikacji, aby włączyć UNIVERSAL_RESIZABLE_BY_DEFAULT na urządzeniach z Androidem 16.

Wydajność

Lock-free MessageQueue

W Androidzie 17 aplikacje kierowane na SDK w wersji 37 lub nowszej będą otrzymywać nową implementację android.os.MessageQueue, która nie wymaga blokowania. Nowa implementacja zwiększa wydajność i zmniejsza liczbę pominiętych klatek, ale może powodować problemy u klientów, którzy korzystają z pól i metod prywatnych MessageQueue.

Generacyjne odśmiecanie pamięci

Android 17 wprowadza do modułu ART zbieranie śmieci generacyjne w ramach równoczesnego zbierania śmieci typu Mark-Compact. Ta optymalizacja wprowadza częstsze, mniej zasobochłonne odśmiecanie pamięci w przypadku obiektów krótkotrwałych oraz odśmiecanie pamięci w przypadku całej sterty, co ma na celu zmniejszenie ogólnych kosztów procesora i czasu trwania odśmiecania pamięci. Ulepszenia ART są też dostępne na ponad miliardzie urządzeń z Androidem 12 (poziom interfejsu API 31) i nowszym dzięki aktualizacjom systemowym Google Play.

Statyczne pola końcowe są teraz naprawdę końcowe

Od Androida 17 aplikacje kierowane na Androida 17 lub nowszego nie będą mogły modyfikować pól „static final”, co pozwoli środowisku wykonawczemu na bardziej agresywne stosowanie optymalizacji wydajności. Próba wykonania tej czynności za pomocą refleksji (i głębokiej refleksji) zawsze spowoduje zgłoszenie wyjątku IllegalAccessException. Zmiana tych pól za pomocą metod SetStatic<Type>Field w JNI spowoduje natychmiastowe zamknięcie aplikacji.

Ograniczenia dotyczące widoku powiadomień niestandardowych

Aby zmniejszyć wykorzystanie pamięci, ograniczamy rozmiar widoków powiadomień niestandardowych. Ta aktualizacja zamyka lukę, która umożliwia aplikacjom omijanie istniejących limitów za pomocą identyfikatorów URI. To zachowanie jest uzależnione od docelowej wersji pakietu SDK i dotyczy aplikacji kierowanych na interfejs API w wersji 37 lub nowszej.

Nowe reguły debugowania wydajności ProfilingManager

Wprowadziliśmy kilka nowych wyzwalaczy systemowych w ProfilingManager, aby ułatwić Ci zbieranie szczegółowych danych do debugowania problemów z wydajnością. Są to aktywatory TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM i TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

Aby dowiedzieć się, jak skonfigurować nowe wyzwalacze systemowe, zapoznaj się z dokumentacją dotyczącą profilowania opartego na wyzwalaczach i pobierania i analizowania danych profilowania.

Multimedia i aparat

Android 17 wprowadza do aplikacji multimedialnych i aparatów profesjonalne narzędzia, takie jak płynne przejścia i standardowa głośność.

Dynamiczne aktualizacje sesji kamery

Wprowadziliśmy updateOutputConfigurations() w CameraCaptureSession. Umożliwia to dynamiczne dołączanie i odłączanie powierzchni wyjściowych bez konieczności ponownej konfiguracji całej sesji przechwytywania obrazu z kamery. Ta zmiana umożliwia płynne przechodzenie między różnymi zastosowaniami i trybami aparatu (np. robieniem zdjęć i nagrywaniem filmów) bez kosztów pamięci i złożoności kodu związanych z konfigurowaniem i przechowywaniem wszystkich powierzchni wyjściowych aparatu, których aplikacja może potrzebować podczas uruchamiania aparatu. Pomaga to wyeliminować widoczne dla użytkownika usterki lub zawieszenia podczas działania.

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

Metadane logicznego urządzenia z wieloma kamerami

Podczas pracy z kamerami logicznymi, które łączą wiele fizycznych czujników aparatu, możesz teraz poprosić o dodatkowe metadane ze wszystkich aktywnych kamer fizycznych biorących udział w rejestrowaniu obrazu, a nie tylko z kamery głównej. Wcześniej trzeba było stosować obejścia, czasami przydzielając niepotrzebne strumienie fizyczne, aby uzyskać metadane z dodatkowych aktywnych kamer (np. podczas zmiany obiektywu w przypadku zoomu, gdy aktywna jest kamera pomocnicza). Ta funkcja wprowadza nowy klucz LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS w CaptureRequest i CaptureResult. Jeśli w CaptureRequest ustawisz ten klucz na ON, TotalCaptureResult będzie zawierać metadane z tych dodatkowych aktywnych aparatów fizycznych. Dostęp do tych kompleksowych metadanych możesz uzyskać za pomocą metody TotalCaptureResult.getPhysicalCameraTotalResults(), aby uzyskać bardziej szczegółowe informacje, które mogą umożliwić optymalizację wykorzystania zasobów w aplikacjach aparatu.

Obsługa kodeka Versatile Video Coding (VVC)

Android 17 dodaje obsługę standardu Versatile Video Coding (VVC). Obejmuje to zdefiniowanie typu MIME video/vvc w MediaFormat, dodanie nowych profili VVC w MediaCodecInfo i zintegrowanie obsługi z MediaExtractor. Ta funkcja będzie dostępna na urządzeniach z obsługą dekodowania sprzętowego i odpowiednimi sterownikami.

Stała jakość nagrywania filmów

Do interfejsu MediaRecorder dodaliśmy funkcję setVideoEncodingQuality(). Umożliwia to skonfigurowanie trybu stałej jakości (CQ) dla koderów wideo, co daje większą kontrolę nad jakością wideo niż proste ustawienia szybkości transmisji bitów.

Wzmacnianie zabezpieczeń dźwięku w tle

Od Androida 17 platforma audio będzie egzekwować ograniczenia dotyczące interakcji audio w tle, w tym odtwarzania dźwięku, żądań aktywności audio i interfejsów API zmiany głośności, aby mieć pewność, że te zmiany są inicjowane celowo przez użytkownika. 

Jeśli aplikacja spróbuje wywołać interfejsy API audio, gdy nie znajduje się w prawidłowym cyklu życia, interfejsy API odtwarzania dźwięku i zmiany głośności zakończą się niepowodzeniem bez zgłaszania wyjątku ani wyświetlania komunikatu o błędzie. Interfejs API aktywności audio zwróci kod wyniku AUDIOFOCUS_REQUEST_FAILED.

Prywatność i bezpieczeństwo

Wycofanie atrybutu ruchu w formie zwykłego tekstu

Atrybut android:usesCleartextTraffic został wycofany. Jeśli Twoja aplikacja jest kierowana na Androida 17 lub nowszego i korzysta z atrybutu usesCleartextTraffic="true" bez odpowiedniej konfiguracji zabezpieczeń sieciowych, domyślnie będzie blokować ruch w postaci tekstu nieszyfrowanego. Zalecamy przejście na pliki Network Security Configuration, aby uzyskać szczegółową kontrolę.

Kryptografia hybrydowa HPKE

Wprowadzamy publiczny interfejs dostawcy usług (SPI) do implementacji kryptografii hybrydowej HPKE, która umożliwia bezpieczną komunikację za pomocą kombinacji klucza publicznego i szyfrowania symetrycznego (AEAD).

Połączenia i telekomunikacja

Ulepszona historia połączeń VoIP

Wprowadzamy zarządzanie preferencjami użytkowników w przypadku integracji historii połączeń VoIP w aplikacji. Obejmuje to obsługę identyfikatorów URI awatarów dzwoniących i uczestników w systemowym dialerze, co umożliwia użytkownikom szczegółową kontrolę nad prywatnością dziennika połączeń i wzbogaca wizualne wyświetlanie zintegrowanych dzienników połączeń VoIP.

Określanie odległości i bliskości za pomocą Wi-Fi

Wi-Fi Ranging zostało ulepszone o nowe funkcje wykrywania bliskości, które obsługują ciągłe określanie odległości i bezpieczne wykrywanie urządzeń w sieci peer-to-peer. Aktualizacje dotyczące pomiaru odległości w Wi-Fi Aware obejmują nowe interfejsy API do obsługi urządzeń równorzędnych i buforowania PMKID na potrzeby bezpiecznego pomiaru odległości w standardzie 11az.

Produktywność i narzędzia dla programistów

Aktualizacje aplikacji na urządzenie towarzyszące

Wprowadziliśmy 2 nowe profile w CompanionDeviceManager, aby ułatwić rozróżnianie urządzeń i zarządzanie uprawnieniami:

  • Urządzenia medyczne: ten profil umożliwia aplikacjom mobilnym na urządzenia medyczne żądanie wszystkich niezbędnych uprawnień jednym kliknięciem, co upraszcza proces konfiguracji.
  • Trackery aktywności: profil DEVICE_PROFILE_FITNESS_TRACKER umożliwia aplikacjom towarzyszącym wyraźne wskazanie, że zarządzają trackerem aktywności. Zapewnia to dokładne wrażenia użytkowników dzięki odrębnym ikonom przy jednoczesnym ponownym wykorzystaniu istniejących uprawnień do roli oglądającego.

CompanionDeviceManager oferuje teraz ujednolicone okno do łączenia urządzeń i wysyłania próśb o uprawnienia dotyczące urządzeń w pobliżu. Możesz użyć nowej metody setExtraPermissions w AssociationRequest.Builder, aby połączyć prośby o uprawnienia w pobliżu z dotychczasowym procesem powiązania, co zmniejszy liczbę okien dialogowych wyświetlanych użytkownikowi.

Pierwsze kroki z Androidem 17

Możesz zarejestrować dowolne obsługiwane urządzenie Pixel, aby otrzymywać tę i przyszłe aktualizacje wersji beta Androida bezprzewodowo. Jeśli nie masz urządzenia Pixel, możesz używać 64-bitowych obrazów systemu z emulatorem Androida w Android Studio.

Jeśli uczestniczysz w programie Android Beta, otrzymasz aktualizację OTA do wersji beta 1.

Jeśli masz wersję beta Androida 26Q1 i chcesz zainstalować ostateczną stabilną wersję 26Q1 i opuścić program beta, zignoruj aktualizację OTA do wersji beta 26Q2 1 i poczekaj na wydanie wersji 26Q1.

Chętnie poznamy Twoją opinię, dlatego zgłaszaj problemy i przesyłaj prośby o dodanie funkcji na stronie z opiniami. Im wcześniej otrzymamy Twoją opinię, tym więcej będziemy mogli uwzględnić w naszych pracach nad ostateczną wersją.

Aby zapewnić sobie najlepsze wrażenia podczas tworzenia aplikacji na Androida 17, zalecamy korzystanie z najnowszej wersji podglądowej Androida Studio (Panda). Gdy wszystko skonfigurujesz, wykonaj te czynności:

  • Skompiluj kod z użyciem nowego pakietu SDK, przetestuj go w środowiskach CI i zgłoś wszelkie problemy w naszym narzędziu do śledzenia na stronie z opiniami.
  • Sprawdź, czy Twoja obecna aplikacja jest kompatybilna, dowiedz się, czy zmiany w Androidzie 17 mają na nią wpływ, zainstaluj ją na urządzeniu lub emulatorze z Androidem 17 i dokładnie ją przetestuj.

Będziemy regularnie aktualizować wersje systemu w wersji podglądowej lub beta oraz pakiet SDK w okresie wprowadzania Androida 17. Po zainstalowaniu wersji beta będziesz automatycznie otrzymywać przyszłe aktualizacje OTA wszystkich kolejnych wersji przedpremierowych i beta.

Pełne informacje znajdziesz na stronie dla deweloperów Androida 17.

Dołącz do rozmowy

W miarę zbliżania się do stabilności platformy i ostatecznej wersji stabilnej Androida 17 jeszcze w tym roku Twoje opinie pozostają dla nas najcenniejszym źródłem informacji. Niezależnie od tego, czy jesteś osobą, która jako jedna z pierwszych korzysta z kanału Canary, czy deweloperem aplikacji testującym wersję beta 1, możesz dołączyć do naszych społeczności i przesyłać opinie. Słuchamy.

Autor:
Czytaj dalej