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 deweloperó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 wydania kwartalnego.
- 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 wymaga już ręcznego flashowania) i jako oddzielny kanał aktualizacji łatwiej integruje się z przepływami pracy CI, a także umożliwia najwcześniejsze przekazywanie natychmiastowych opinii na temat potencjalnych zmian.
Harmonogram Androida 17
Szybko przejdziemy od tej wersji beta do etapu stabilności platformy, który planujemy osiągnąć w marcu. 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 nadal aktualizowany w ramach serii kwartalnych wersji. W II kwartale wprowadzimy tylko jedną wersję, w której pojawią się planowane zmiany w działaniu aplikacji. W IV kwartale planujemy wydać mniejszą wersję pakietu SDK z dodatkowymi interfejsami API i funkcjami.
Ograniczenia dotyczące orientacji i rozmiaru
Wraz z wersją beta Androida 17 przechodzimy do kolejnego etapu naszej adaptacyjnej mapy drogowej: Android 17 (poziom 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 wielozadaniowości na tablecie, rozkładania urządzenia czy korzystania z trybu okien na pulpicie – i że interfejs będzie wypełniać przestrzeń oraz uwzględniać położenie urządzenia.
Najważniejsze zmiany w pakiecie SDK 37
Aplikacje kierowane na Androida 17 muszą być zgodne z wycofywaniem atrybutów pliku 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 będą ignorowane:
| Atrybuty/interfejs API pliku manifestu | 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 slate). Dodatkowo aplikacje sklasyfikowane jako gry (na podstawie flagi android:appCategory) są zwolnione z tych ograniczeń.
Warto też 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 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 działające usługi będą otrzymywać te aktualizacje za pomocą onConfigurationChanged.Jeśli aplikacja wymaga pełnego ponownego uruchomienia, aby ponownie wczytać zasoby po wprowadzeniu tych zmian, musisz teraz wyraźnie włączyć tę opcję za pomocą nowego atrybutu pliku 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 do ponownego utworzenia), wraz z powiązanymi stałymi mcc, mnc i nowymi stałymi keyboard, keyboardHidden, navigation, touchscreen i colorMode.
Przygotowanie aplikacji
Udostępniliśmy narzędzia i dokumentację, aby Ci to ułatwić. Więcej wskazówek znajdziesz w naszym poście na blogu, w którym opisujemy 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 współczynników proporcji, ponieważ ograniczenie orientacji lub współczynnika proporcji nie będzie już możliwe. Zalecamy przetestowanie aplikacji za pomocą emulatorów Androida 17 w wersji beta 1 na tablecie Pixel Tablet lub telefonie Pixel 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 37 lub nowszy otrzymają 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 prywatnych i metod klasy MessageQueue.
Generacyjne czyszczenie pamięci
Android 17 wprowadza generacyjne czyszczenie pamięci do kolektora Concurrent Mark-Compact w ART. Ta optymalizacja wprowadza częstsze, mniej zasobochłonne czyszczenie pamięci w przypadku obiektów młodszej generacji oraz czyszczenie pamięci w przypadku całej sterty, co ma na celu zmniejszenie ogólnego kosztu procesora i czasu trwania 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.
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ą odbicia (i głębokiego odbicia) 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ła aplikacjom omijanie dotychczasowych limitów przy użyciu 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 wyzwalacze ProfilingManager do debugowania wydajności
Wprowadziliśmy w ProfilingManager kilka nowych wyzwalaczy systemowych, które pomogą Ci zbierać szczegółowe dane do debugowania problemów z wydajnością. Są to: TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM i TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.
Aby dowiedzieć się, jak skonfigurować nowe wyzwalacze systemu, zapoznaj się z dokumentacją dotyczącą profilowania opartego na wyzwalaczach oraz 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 aparatami
Podczas pracy z kamerami logicznymi, które łączą wiele fizycznych czujników aparatu, możesz teraz żądać dodatkowych metadanych 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 celu powiększenia, gdy aktywna jest kamera śledząca). 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 kamer fizycznych. Dostęp do tych kompleksowych metadanych możesz uzyskać za pomocą funkcji TotalCaptureResult.getPhysicalCameraTotalResults(), aby uzyskać bardziej szczegółowe informacje, które mogą Ci pomóc w optymalizacji wykorzystania zasobów w aplikacjach aparatu.
Obsługa standardu Versatile Video Coding (VVC)
Android 17 wprowadza 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 wideo
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ą filmu 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 tekstu nieszyfrowanego
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 konfiguracji zabezpieczeń 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żytkowników w przypadku integracji historii połączeń VoIP w aplikacji. Obejmuje to obsługę identyfikatorów URI awatarów rozmówców i uczestników w systemowym dialerze, co umożliwia użytkownikom szczegółową kontrolę nad prywatnością dziennika połączeń i wzbogaca wizualną prezentację 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 pomiarów odległości w Wi-Fi Aware obejmują nowe interfejsy API do obsługi identyfikatorów urządzeń i buforowania PMKID na potrzeby bezpiecznego pomiaru odległości w standardzie 11az.
Narzędzia i produktywność 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 do korzystania z usług 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 bierzesz udział w programie Android Beta, otrzymasz aktualizację OTA do wersji beta 1.
Jeśli masz wersję beta Androida 16 QPR1 i chcesz zainstalować ostateczną stabilną wersję Androida 16 QPR1 i zrezygnować z udziału w programie testów beta, zignoruj aktualizację OTA do wersji beta Androida 16 QPR2 1 i poczekaj na wydanie Androida 16 QPR1.
Chętnie poznamy Twoją opinię, dlatego zgłaszaj problemy i przesyłaj prośby o dodanie funkcji na stronie opinii. Im wcześniej otrzymamy Twoją opinię, tym więcej będziemy mogli uwzględnić w naszej pracy nad ostateczną wersją.
Aby zapewnić sobie najlepsze środowisko programistyczne w Androidzie 17, zalecamy korzystanie z najnowszej wersji podglądowej Androida Studio (Panda). Po skonfigurowaniu konta 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 zgodna z Androidem 17, 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ć obrazy systemu w wersji podglądowej lub beta i pakiet SDK w trakcie cyklu wydawniczego 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 stabilnej wersji 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 przesłać opinię. Słuchamy.
Czytaj dalej
-
Wiadomości o usługach
Dziś rozszerzamy możliwości programowania na Androida dzięki Gemmie 4, naszemu najnowszemu, zaawansowanemu modelowi otwartemu, który został zaprojektowany z myślą o złożonym rozumowaniu i autonomicznym wywoływaniu narzędzi.
Matthew McCullough • Czas czytania: 2 minuty
-
Wiadomości o usługach
Wersja beta 3 Androida 17 osiągnęła dziś oficjalnie stabilność platformy. Oznacza to, że interfejs API jest zablokowany. Możesz przeprowadzić ostateczne testy zgodności i przesłać do Sklepu Play aplikacje przeznaczone na Androida 17.
Matthew McCullough • Czas czytania: 5 minut
-
Wiadomości o usługach
Chcemy, aby tworzenie wysokiej jakości aplikacji na Androida było szybsze i łatwiejsze. Jednym ze sposobów na zwiększenie Twojej produktywności jest udostępnienie Ci AI.
Matthew McCullough • Czas czytania: 2 minuty
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.