Wiadomości o usługach

Pierwsza wersja beta Androida 17

Czas czytania: 7 minut
Matthew McCullough
Vice President, Product Management, Android Developer

Udostępniamy dziś pierwszą wersję beta Androida 17. Kontynuujemy prace nad platformą, która priorytetowo traktuje prywatność, bezpieczeństwo i wydajność. Ta wersja zawiera dalsze prace nad bardziej elastycznymi aplikacjami na Androida, znaczące ulepszenia funkcji aparatu i multimediów, nowe narzędzia do optymalizacji połączeń oraz rozszerzone profile urządzeń towarzyszących. Ta wersja podkreśla też zasadniczą zmianę w sposobie udostępniania nowych wersji społeczności deweloperów – od tradycyjnego modelu wersji przedpremierowej dla programistów do programu 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 kanału Canary od razu po przejściu testów wewnętrznych, a nie dopiero w wersji kwartalnej.
  • Większa stabilność: wczesne „testy bojowe” w kanale Canary zapewniają bardziej dopracowaną wersję beta z nowymi interfejsami API i zmianami w działaniu, które są bliższe wersji ostatecznej.
  • Łatwiejsze testowanie: kanał Canary obsługuje aktualizacje OTA (nie trzeba już ręcznie instalować oprogramowania) i jako oddzielny kanał aktualizacji łatwiej integruje się z przepływami pracy CI oraz zapewnia najwcześniejszy dostęp do natychmiastowego przekazywania opinii o nadchodzących potencjalnych zmianach.

Harmonogram Androida 17

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

timeline1.png

Rok wydań

Planujemy, że Android 17 będzie nadal otrzymywać aktualizacje w ramach serii wydań kwartalnych. Nadchodząca wersja w drugim kwartale to jedyna, w której wprowadzimy planowane zmiany w działaniu aplikacji. W czwartym kwartale planujemy wydać niewielką wersję SDK z dodatkowymi interfejsami API i funkcjami.

timeline2.png

Ograniczenia dotyczące orientacji i możliwości zmiany rozmiaru

Wraz z wydaniem wersji beta Androida 17 przechodzimy do następnego etapu naszej adaptacyjnej mapy drogowej: Android 17 (poziom interfejsu API 37) usuwa możliwość rezygnacji dewelopera 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 SDK 37, musi być gotowa do adaptacji. Użytkownicy oczekują, że ich aplikacje będą działać wszędzie – niezależnie od tego, czy korzystają z tabletu w trybie wielozadaniowości, rozkładają urządzenie czy używają trybu okien na pulpicie. Oczekują też, że interfejs użytkownika będzie wypełniać przestrzeń i uwzględniać pozycję urządzenia.

Główne zmiany w SDK 37

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

Atrybuty manifestu/interfejs APIIgnorowane wartości
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivitywszystko
minAspectRatiowszystko
maxAspectRatiowszystko

Wyjątki i kontrola użytkownika

Te zmiany dotyczą tylko dużych ekranów. Nie mają zastosowania do ekranów mniejszych niż sw600dp (w tym tradycyjnych telefonów). Ponadto te ograniczenia nie dotyczą aplikacji sklasyfikowanych jako gry (na podstawie flagi android:appCategory).

Ważne jest też, aby pamiętać, że użytkownicy zachowują kontrolę. Mogą wyraźnie włączyć lub wyłączyć domyślne działanie aplikacji w ustawieniach formatu obrazu systemu.

Aktualizacje zmian konfiguracji

Aby zwiększyć zgodność aplikacji i zminimalizować przerwy w odtwarzaniu 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 domyślnie ponownie uruchamiać aktywności w przypadku określonych zmian konfiguracji, które zwykle nie wymagają ponownego tworzenia interfejsu użytkownika, w tym CONFIG_KEYBOARDCONFIG_KEYBOARD_HIDDENCONFIG_NAVIGATIONCONFIG_UI_MODE (gdy zmienia się tylko UI_MODE_TYPE_DESK ), CONFIG_TOUCHSCREEN i CONFIG_COLOR_MODE. Zamiast tego uruchomione aktywności będą po prostu otrzymywać te aktualizacje za pomocą onConfigurationChanged.Jeśli Twoja aplikacja polega na pełnym ponownym uruchomieniu, aby ponownie wczytać 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 do zniszczenia i ponownego utworzenia), wraz z powiązanymi stałymi mccmnc oraz nowymi stałymi keyboardkeyboardHiddennavigationtouchscreen i colorMode.

Przygotowanie aplikacji

Udostępniliśmy narzędzia i dokumentację, aby ułatwić Ci to zadanie. Więcej wskazówek i strategii rozwiązywania typowych problemów znajdziesz w naszym szczegółowym poście na blogu. 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 testowanie aplikacji za pomocą wersji beta 1 Androida 17 z emulatorami Pixel Tablet lub Pixel Fold (skonfigurowanymi 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ść

MessageQueue bez blokad

Androidzie 17 aplikacje kierowane na SDK 37 lub nowszy będą otrzymywać nową implementację android.os.MessageQueue, w której implementacja jest bez blokad. Nowa implementacja zwiększa wydajność i zmniejsza liczbę pominiętych klatek, ale może powodować problemy z klientami, którzy korzystają z prywatnych pól i metod MessageQueue.

Czyszczenie pamięci z podziałem na generacje

Android 17 wprowadza czyszczenie pamięci z podziałem na generacje do modułu ART Concurrent Mark-Compact. Ta optymalizacja wprowadza częstsze, mniej zasobożerne czyszczenie pamięci z młodszych generacji oraz czyszczenie pamięci z całej sterty, co ma na celu zmniejszenie ogólnego kosztu procesora i czasu czyszczenia 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.

Pola statyczne finalne są teraz naprawdę finalne

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. Modyfikowanie ich za pomocą metod SetStatic<Type>Field w JNI spowoduje natychmiastowe zamknięcie aplikacji.

Ograniczenia dotyczące niestandardowego widoku powiadomień

Aby zmniejszyć wykorzystanie pamięci, ograniczamy rozmiar niestandardowych widoków powiadomień. Ta aktualizacja zamyka lukę, która umożliwiała aplikacjom omijanie dotychczasowych limitów za pomocą adresów URI. To działanie jest ograniczone przez docelową wersję SDK i obowiązuje w przypadku aplikacji kierowanych na interfejs API 37 i nowszy.

Nowe wyzwalacze ProfilingManager do debugowania wydajności

Wprowadziliśmy kilka nowych wyzwalaczy systemowych do ProfilingManager, aby ułatwić Ci zbieranie szczegółowych danych do debugowania problemów z wydajnością. Te wyzwalacze to TRIGGER_TYPE_COLD_STARTTRIGGER_TYPE_OOMTRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

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

Multimedia i aparat

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

Dynamiczne aktualizacje sesji aparatu

Wprowadziliśmy updateOutputConfigurations() do CameraCaptureSession. Umożliwia to dynamiczne dołączanie i odłączanie powierzchni wyjściowych bez konieczności ponownej konfiguracji całej sesji przechwytywania obrazu z aparatu. Ta zmiana umożliwia płynne przechodzenie między przypadkami użycia i trybami aparatu (np. robieniem zdjęć a 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 błędy 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 aparatami

Podczas pracy z aparatami logicznymi, które łączą wiele fizycznych czujników aparatu, możesz teraz poprosić o dodatkowe metadane ze wszystkich aktywnych aparatów fizycznych biorących udział w przechwytywaniu, a nie tylko z aparatu głównego. Wcześniej trzeba było stosować obejścia, czasami przydzielając niepotrzebne strumienie fizyczne, aby uzyskać metadane z dodatkowych aktywnych aparatów (np. podczas przełączania obiektywu w celu powiększenia, gdy aktywny jest aparat pomocniczy). Ta funkcja wprowadza nowy klucz, LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS, w CaptureRequest i CaptureResult. Ustawienie tego klucza na ON w CaptureRequest spowoduje, że TotalCaptureResult będzie zawierać metadane z tych dodatkowych aktywnych aparatów fizycznych. Możesz uzyskać dostęp do tych kompleksowych metadanych za pomocą TotalCaptureResult.getPhysicalCameraTotalResults(), aby uzyskać bardziej szczegółowe informacje, które mogą umożliwić optymalizację wykorzystania zasobów w aplikacjach aparatu.

Obsługa wszechstronnego kodowania wideo (VVC)

Android 17 dodaje obsługę standardu Versatile Video Coding (VVC). Obejmuje to zdefiniowanie typu MIME video/vvcMediaFormat, dodanie nowych profili VVC w MediaCodecInfo oraz 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

Dodaliśmy setVideoEncodingQuality() do MediaRecorder. Umożliwia to skonfigurowanie trybu stałej jakości (CQ) dla koderów wideo, co daje większą kontrolę nad jakością wideo niż w przypadku prostych ustawień szybkości transmisji.

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 zapewnić, ż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ę bez wyświetlenia wyjątku ani komunikatu o błędzie. Interfejs API aktywności audio zakończy się kodem wyniku AUDIOFOCUS_REQUEST_FAILED.

Prywatność i bezpieczeństwo

Wycofanie atrybutu ruchu w postaci tekstu nieszyfrowanego

Atrybut android:usesCleartextTraffic został wycofany. Jeśli Twoja aplikacja jest kierowana na (Androida 17) lub nowszego i korzysta z usesCleartextTraffic="true" bez odpowiedniej konfiguracji bezpieczeństwa sieci, domyślnie będzie blokować ruch w postaci tekstu nieszyfrowanego. Zachęcamy do przejścia na pliki konfiguracji bezpieczeństwa sieci, aby uzyskać szczegółową kontrolę.

Kryptografia hybrydowa HPKE

Wprowadzamy publiczny interfejs dostawcy usług (SPI) do implementacji kryptografii hybrydowej HPKE, który 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żytkownika w zakresie integracji historii połączeń VoIP w aplikacji. Obejmuje to obsługę adresów URI awatarów rozmówców i uczestników w dialerze systemowym, co umożliwia szczegółową kontrolę użytkownika nad prywatnością dziennika połączeń i wzbogaca wizualne wyświetlanie zintegrowanych dzienników połączeń VoIP.

Zasięg i bliskość Wi-Fi

Zasięg Wi-Fi został ulepszony o nowe funkcje wykrywania bliskości, które obsługują ciągłe określanie zasięgu i bezpieczne wykrywanie peer-to-peer. Aktualizacje zasięgu Wi-Fi Aware obejmują nowe interfejsy API do obsługi peer i buforowania PMKID na potrzeby bezpiecznego określania zasięgu 11az.

Narzędzia i produktywność programistów

Aktualizacje aplikacji na urządzenia towarzyszące

Wprowadziliśmy 2 nowe profile w CompanionDeviceManager, aby poprawić rozróżnianie urządzeń i obsługę uprawnień:

  • 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żytkownika dzięki odrębnym ikonom przy jednoczesnym ponownym wykorzystaniu dotychczasowych uprawnień roli zegarka.

CompanionDeviceManager oferuje teraz też ujednolicone okno do powiązania urządzenia i żądania uprawnień do urządzeń w pobliżu. Możesz użyć nowej metody setExtraPermissions w AssociationRequest.Builder, aby połączyć prośby o uprawnienia do urządzeń w pobliżu z dotychczasowym przepływem powiązań, co zmniejszy liczbę okien wyświetlanych użytkownikowi.

Rozpoczęcie pracy 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 obecnie uczestniczysz w programie testów beta Androida, otrzymasz aktualizację OTA do wersji beta 1.

Jeśli masz wersję beta Androida 26Q1 i chcesz przejść na ostateczną stabilną wersję 26Q1 oraz opuścić program testów beta, musisz zignorować aktualizację OTA do wersji beta 1 26Q2 i poczekać na wydanie wersji 26Q1.

Czekamy na Twoje opinie, dlatego zgłaszaj problemy i przesyłaj prośby o dodanie funkcji na stronie opinii. Im szybciej otrzymamy Twoje opinie, tym więcej będziemy mogli uwzględnić w pracach nad wersją ostateczną.

Aby zapewnić najlepsze wrażenia podczas tworzenia aplikacji na Androida 17, zalecamy korzystanie z najnowszej wersji przedpremierowej Android Studio (Panda). Gdy wszystko będzie gotowe, wykonaj te czynności:

  • Skompiluj aplikację za pomocą nowego pakietu SDK, przetestuj ją w środowiskach CI i zgłoś wszelkie problemy w naszym narzędziu do śledzenia na stronie opinii.
  • Przetestuj bieżącą aplikację pod kątem zgodności, sprawdź, 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.

W trakcie cyklu wydawania Androida 17 będziemy regularnie aktualizować obrazy systemu w wersji przedpremierowej/beta oraz pakiet SDK. Po zainstalowaniu wersji beta będziesz automatycznie otrzymywać przyszłe aktualizacje OTA wszystkich kolejnych wersji przedpremierowych i beta.

Więcej informacji znajdziesz na stronie dla deweloperów Androida 17.

Dołącz do rozmowy

W miarę zbliżania się do stabilności platformy i ostatecznej stabilnej wersji Androida 17, która ukaże się jeszcze w tym roku, Twoje opinie pozostają dla nas najcenniejszym zasobem. Niezależnie od tego, czy jesteś użytkownikiem kanału Canary, czy deweloperem aplikacji testującym wersję beta 1, dołącz do naszych społeczności i przesyłaj opinie. Słuchamy Cię.

Autor:

Czytaj dalej