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.
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.
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 API | Ignorowane wartości |
| screenOrientation | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| setRequestedOrientation() | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| resizeableActivity | wszystkie |
| minAspectRatio | wszystkie |
| maxAspectRatio | wszystkie |
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.
-
Wiadomości o usługachDziś udostępniamy pierwszy zestaw zadań długoterminowych (LHT), czyli bardzo złożonych zadań, których wykonanie zajmuje inżynierowi kilka dni, a nawet tydzień. Wprowadzamy też ocenę agentów, zaczynając od agentów od odpowiednich dostawców modeli.
Matthew McCullough • Czas czytania: 3 minuty -
Wiadomości o usługachDziś udostępniamy Androida 17 na większości obsługiwanych urządzeń Pixel. W najbliższych miesiącach pojawią się nowe urządzenia z Androidem 17.
Matthew McCullough • Czas czytania: 13 min -
Wiadomości o usługachNa konferencji Google I/O 26 przedstawiliśmy 17 najważniejszych ogłoszeń dla deweloperów Androida, które dotyczą produktywności opartej na agentach, standardu interfejsu użytkownika Compose First oraz wydajnych multimediów i adaptacyjnego rozwoju w rozszerzającym się ekosystemie.
Matthew McCullough • Czas czytania: 8 minut
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.