Wiadomości o usługach

Druga wersja beta Androida 17

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

Dziś udostępniamy drugą wersję beta Androida 17. Kontynuujemy prace nad platformą, która stawia na pierwszym miejscu prywatność, bezpieczeństwo i wydajność. Ta aktualizacja wprowadza szereg nowych funkcji, w tym interfejs EyeDropper API i narzędzie do wyboru kontaktów z zachowaniem prywatności. Dodajemy też zaawansowane określanie odległości, interfejsy API do przekazywania połączeń na innym urządzeniu i inne funkcje.

Ta wersja kontynuuje zmianę w częstotliwości publikowania. Po tej corocznej wersji głównej pakietu SDK w II kwartale opublikujemy mniejszą aktualizację pakietu SDK.

Wygoda użytkowników i interfejs systemu

Dymki

Dymki to funkcja trybu okienkowego, która oferuje nowy interfejs użytkownika w postaci pływających okienek, niezależny od interfejsu API dymków do przesyłania wiadomości. Użytkownicy mogą utworzyć dymek aplikacji na telefonie, urządzeniu składanym lub tablecie, przytrzymując ikonę aplikacji w programie uruchamiającym. Na dużych ekranach na pasku aplikacji znajduje się pasek z dymkami, na którym użytkownicy mogą organizować dymki, przełączać się między nimi oraz przenosić je do i z punktów zakotwiczenia na ekranie.

Bubbles.gif

Aby mieć pewność, że aplikacje działają prawidłowo jako dymki, postępuj zgodnie z wytycznymi dotyczącymi obsługi trybu wielu okien.

Dymki nie są jeszcze w pełni włączone w wersji beta 2. Szukaj ich w przyszłej wersji Androida 17.

EyeDropper API

Nowy interfejs EyeDropper API na poziomie systemu umożliwia aplikacji pobieranie koloru z dowolnego piksela na wyświetlaczu bez konieczności uzyskiwania uprawnień do przechwytywania ekranu.

Eyedropper_Tester.webp
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  result -> if (result.resultCode == Activity.RESULT_OK) {
    val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
    // Use the picked color in your app
  }
}

fun launchColorPicker() {
  val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
  eyeDropperLauncher.launch(intent)
}

Selektor kontaktów

Nowy selektor kontaktów na poziomie systemu, uruchamiany za pomocą intencji ACTION_PICK_CONTACTS, przyznaje tymczasowy dostęp do odczytu tylko tych pól danych, o które prosi użytkownik. Zmniejsza to potrzebę przyznawania szerokich uprawnień READ_CONTACTS. Umożliwia też wybieranie treści z profilu osobistego lub służbowego na urządzeniu.

android-17-contact-picker.gif
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val uri = it.data?.data ?: return@rememberLauncherForActivityResult
        // Handle result logic
        processContactPickerResults(uri)
    }
}

val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
    putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
    putExtra(EXTRA_ALLOW_MULTIPLE, true)
    putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}

contactPicker.launch(intent)

Łatwiejsze przechwytywanie wskaźnika dzięki zgodności z touchpadami

Wcześniej, gdy aplikacja przechwytywała wskaźnik, touchpady zgłaszały zdarzenia w sposób bardzo różny od myszy. Zamiast względnych ruchów, które byłyby zgłaszane przez mysz, raportowały położenie palców na padzie. Utrudniało to prawidłową obsługę gier z widokiem z perspektywy pierwszej osoby. Teraz system domyślnie rozpoznaje ruch wskaźnika i gesty przewijania, gdy touchpad jest przechwytywany, i zgłasza je tak samo jak zdarzenia myszy. Nadal możesz poprosić o stare, szczegółowe dane o położeniu palca, wyraźnie prosząc o ich rejestrowanie w nowym trybie „bezwzględnym”.

// To request the new default relative mode (mouse-like events)
// This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE
view.requestPointerCapture()

// To request the legacy absolute mode (raw touch coordinates)
view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)

Granice spoczynkowe interaktywnego selektora

Wywołując funkcję getInitialRestingBoundsChooserSession na Androidzie, aplikacja może określić pozycję docelową, którą zajmuje selektor po zakończeniu animacji i wczytaniu danych, co umożliwia lepsze dostosowanie interfejsu.

Połączenia i wiele urządzeń

Przekazywanie aplikacji na inne urządzenie

Nowy interfejs Handoff API umożliwia określenie stanu aplikacji, który ma zostać wznowiony na innym urządzeniu, np. na tablecie z Androidem. Gdy użytkownik wyrazi zgodę, system synchronizuje stan za pomocą interfejsu CompanionDeviceManager i wyświetla sugestię przekazania w launcherze urządzeń użytkownika znajdujących się w pobliżu. Ta funkcja została zaprojektowana z myślą o zapewnieniu płynności pracy, dzięki czemu użytkownicy mogą kontynuować zadania dokładnie w miejscu, w którym je przerwali, w całym ekosystemie Androida. Co ważne, funkcja przekazywania obsługuje zarówno przejścia między aplikacjami natywnymi, jak i przejścia z aplikacji do witryny, co zapewnia maksymalną elastyczność i pełne wrażenia, nawet jeśli aplikacja natywna nie jest zainstalowana na urządzeniu odbierającym.

Zaawansowane interfejsy API pomiaru odległości

Dodajemy obsługę 2 nowych technologii pomiaru odległości:

  1. UWB DL-TDOA, która umożliwia aplikacjom korzystanie z UWB do nawigacji w pomieszczeniach. Ten interfejs API jest zgodny ze specyfikacją FIRA (Fine Ranging Consortium) 4.0 DL-TDOA i umożliwia nawigację w pomieszczeniach z zachowaniem prywatności  (zapobiega śledzeniu urządzenia przez punkt dostępu).
  2. Wykrywanie bliskości, które umożliwia aplikacjom korzystanie z nowej specyfikacji pomiaru odległości przyjętej przez WFA (WiFi Alliance). W porównaniu z obecną specyfikacją pomiaru odległości opartego na technologii Wi-Fi Aware zapewnia ona większą niezawodność i dokładność.

Ulepszenia pakietów danych

Aby zoptymalizować jakość multimediów, aplikacja może teraz pobierać maksymalne szybkości transmisji danych przydzielone przez operatora dla aplikacji do strumieniowania za pomocą funkcji getStreamingAppMaxDownlinkKbpsgetStreamingAppMaxUplinkKbps.

Główne funkcje, prywatność i wydajność

Dostęp przez sieć lokalną

Android 17 wprowadza uprawnienie w czasie działania (aplikacji) ACCESS_LOCAL_NETWORK, aby chronić użytkowników przed nieautoryzowanym dostępem do sieci lokalnej. Ponieważ ta funkcja należy do istniejącej grupy uprawnień NEARBY_DEVICES, użytkownicy, którzy przyznali już inne uprawnienia NEARBY_DEVICES, nie będą ponownie proszeni o ich przyznanie. Deklarując to uprawnienie i prosząc o nie, aplikacja może wykrywać urządzenia w lokalnej sieci komputerowej (LAN), takie jak inteligentne urządzenia domowe czy odbiorniki do przesyłania, i się z nimi łączyć. Zapobiega to wykorzystywaniu przez złośliwe aplikacje nieograniczonego dostępu do sieci lokalnej w celu potajemnego śledzenia użytkowników i zbierania ich odcisków cyfrowych. Aplikacje kierowane na Androida 17 lub nowszego będą miały 2 sposoby na utrzymanie komunikacji z urządzeniami w sieci LAN: mogą korzystać z wybierania urządzeń za pomocą systemu, które chroni prywatność i pomija prośbę o uprawnienia, lub wyraźnie prosić o to nowe uprawnienie w czasie działania, aby utrzymać komunikację w sieci lokalnej.

Rozgłaszanie zmiany przesunięcia strefy czasowej

Android udostępnia teraz niezawodny zamiar transmisji ACTION_TIMEZONE_OFFSET_CHANGED, który jest wywoływany, gdy zmienia się przesunięcie strefy czasowej systemu, np. podczas przejścia na czas letni. Uzupełnia to istniejące intencje transmisji ACTION_TIME_CHANGEDACTION_TIMEZONE_CHANGED, które są wywoływane odpowiednio, gdy zmienia się sygnatura czasowa w formacie Unix i gdy zmienia się identyfikator strefy czasowej.

Zarządzanie NPU i ustalanie priorytetów

Aplikacje na Androida 17, które muszą mieć bezpośredni dostęp do NPU, muszą zadeklarować w pliku manifestu FEATURE_NEURAL_PROCESSING_UNIT, aby uniknąć zablokowania dostępu do NPU. Dotyczy to aplikacji, które używają delegata LiteRT NPU, pakietów SDK specyficznych dla dostawcy, a także wycofanego NNAPI.

Obsługa ICU 78 i Unicode 17

Główne biblioteki internacjonalizacji zostały zaktualizowane do wersji ICU 78, co rozszerza obsługę nowych skryptów, znaków i bloków emoji oraz umożliwia bezpośrednie formatowanie obiektów czasu.

Zabezpieczenie hasłem jednorazowym SMS

Android rozszerza ochronę haseł jednorazowych SMS-ów, automatycznie opóźniając dostęp do wiadomości SMS z hasłem jednorazowym. Wcześniej ochrona koncentrowała się głównie na formacie SMS Retriever, w którym dostarczanie wiadomości zawierających skrót SMS Retriever jest opóźniane w przypadku większości aplikacji o 3 godziny. Jednak w przypadku niektórych aplikacji, takich jak domyślna aplikacja do SMS-ów itp., oraz aplikacji odpowiadającej identyfikatorowi, to opóźnienie nie obowiązuje. Ta aktualizacja rozszerza ochronę na wszystkie SMS-y z kodem OTP. W przypadku większości aplikacji SMS-y zawierające jednorazowy kod dostępu będą dostępne dopiero po 3 godzinach, aby zapobiec przejęciu tego kodu. Transmisja SMS_RECEIVED_ACTION zostanie wstrzymana, a zapytania do bazy danych dostawcy SMS-ów będą filtrowane. Po upływie tego czasu SMS będzie dostępny w tych aplikacjach. 

Opóźniony dostęp do wiadomości SMS w formacie WebOTP

Jeśli aplikacja ma uprawnienia do odczytywania SMS-ów, ale nie jest zamierzonym odbiorcą hasła jednorazowego (co zostało ustalone na podstawie weryfikacji domeny), wiadomość SMS w formacie WebOTP będzie dostępna dopiero po upływie 3 godzin. Ta zmiana ma na celu zwiększenie bezpieczeństwa użytkowników, ponieważ zapewnia, że kod weryfikacyjny może być odczytywany programowo tylko przez aplikacje powiązane z domeną wymienioną w wiadomości. Ta zmiana dotyczy wszystkich aplikacji niezależnie od poziomu interfejsu API, na który są kierowane.

Opóźniony dostęp do standardowych wiadomości SMS z hasłem jednorazowym

W przypadku SMS-ów zawierających kod OTP, które nie korzystają z formatów WebOTP ani SMS Retriever, kod OTP będzie dostępny dopiero po 3 godzinach w większości aplikacji. Ta zmiana dotyczy tylko aplikacji kierowanych na Androida 17 (interfejs API na poziomie 37) lub nowszego.

Niektóre aplikacje, takie jak domyślna aplikacja do SMS-ów, aplikacja asystenta oraz aplikacje towarzyszące połączonym urządzeniom itp., będą zwolnione z tego opóźnienia.

Wszystkie aplikacje, które polegają na odczytywaniu wiadomości SMS w celu wyodrębniania kodów OTP, powinny przejść na korzystanie z interfejsów API SMS Retriever lub SMS User Consent, aby zapewnić ciągłość działania.

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. Od tego momentu możesz kierować aplikację na pakiet SDK 37 i publikować ją w Google Play, aby przeprowadzić testy i zebrać opinie użytkowników w ciągu kilku miesięcy przed ogólną dostępnością Androida 17.

Oś czasu wydań Androida.png

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.

Android Release Timeline_2.png

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 w emulatorze Androida w Android Studio.

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

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 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 z opiniami. Im wcześniej otrzymamy Twoją opinię, tym więcej będziemy mogli uwzględnić w naszej pracy nad ostateczną wersją.

Aby zapewnić sobie jak 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.

W trakcie cyklu wydawniczego Androida 17 będziemy regularnie aktualizować wersje systemu w wersji zapoznawczej lub beta oraz pakiet SDK. Po zainstalowaniu wersji beta przyszłe aktualizacje będą pobierane automatycznie.

OTA w przypadku 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 ogólnej dostępności Androida 17 jeszcze w tym roku Twoje opinie pozostają dla nas najcenniejszym zasobem. 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 2, możesz dołączyć do naszych społeczności i przesłać opinię. Słuchamy.

Autor:

Czytaj dalej