Android 17 jest już dostępny

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

Dziś 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.

AfD-Android-17.gif

Android 17 to początek naszej transformacji w kierunku systemu opartego na sztucznej inteligencji, w którym najważniejsze są aplikacje. Android przechodzi na standardy rozwoju oparte na adaptacyjności, wprowadzając obowiązkową zmianę rozmiaru na dużych ekranach, a jednocześnie zapewnia nową generację prywatności, bezpieczeństwa, multimediów, aparatu i wydajności. W tym poście omówimy wszystkie te kwestie, a także to, jak łączymy narzędzia, biblioteki i umiejętności agentów nowej generacji, aby pomóc Twoim aplikacjom wykorzystać tę szansę.

Przez ostatni rok, od kanału Canary po wersje beta, współpracowaliśmy z wieloma osobami z społeczności deweloperów, aby stworzyć platformę, której możesz zaufać Ty i Twoi użytkownicy. W tym momencie udostępniamy kod źródłowy w ramach Projektu Android Open Source (AOSP). Dzięki temu możesz sprawdzić kod źródłowy, aby lepiej zrozumieć, jak działa Android.

Przyjrzyjmy się bliżej Androidowi 17.

system analityczny,

Dzięki głębokiej integracji sprzętu, oprogramowania i AI przekształcamy Androida z systemu operacyjnego w system inteligencji. Chodzi o zapewnianie nowych, przydatnych funkcji, które spełniają oczekiwania użytkowników, oraz o stwarzanie większych możliwości angażowania ich w aplikacje. W tym celu Android 17 rozszerza możliwości interfejsu AppFunctions, czyli interfejsu API platformy z odpowiednią biblioteką Jetpack. Umożliwia udostępnianie unikalnych funkcji aplikacji jako „narzędzi” do orkiestracji w protokole MCP na Androida, czyli odpowiedniku protokołu Model Context Protocol na urządzeniu. Agenci i asystenci AI (np. Google Gemini) mogą wykrywać i wykonywać funkcje aplikacji, aby realizować przepływy pracy w imieniu użytkownika z bezpośrednim dostępem do lokalnego stanu aplikacji.

Biblioteka Jetpack, która jest obecnie w wersji alfa, sprawia, że dodawanie funkcji aplikacji jest tak proste, jak dodawanie adnotacji do klasy i komentarzy KDoc. 

/**
 *   A note app's [AppFunction]s.
 */
class NoteFunctions(
    private val noteRepository: NoteRepository
) {
    /**
     *   Adds a new note to the app.
     *
     *   @param appFunctionContext The execution context.
     *   @param title The title of the note.
     *   @param content The note's content.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun createNote(
        appFunctionContext: AppFunctionContext,
        title: String,
        content: String
    ): Note {
        return noteRepository.createNote(title, content)
    }
}

Wprowadziliśmy też umiejętność agenta AppFunctions, która analizuje kluczowe procesy w aplikacji, automatycznie generuje wymagany kod Kotlin, optymalizuje dokumentację KDoc pod kątem wywoływania narzędzi LLM oraz udostępnia polecenia ADB do testowania i debugowania.

Integracja z Gemini jest obecnie dostępna w wersji testowej dla zaufanych testerów, ale możesz już teraz przygotować swoje aplikacje. Oprócz poleceń ADB do wykonywania funkcji aplikacji udostępniliśmy aplikację agenta testowego, która zawiera interfejs do wykrywania i wykonywania funkcji aplikacji oraz symulowania integracji agenta AI. Dołącz do naszego programu wcześniejszego dostępu do integracji na stronie goo.gle/eap-af, aby mieć szansę na wdrożenie funkcji aplikacji w wersji produkcyjnej jako jedna z pierwszych aplikacji.

Podejście adaptacyjne

Użytkownicy nie korzystają już tylko z jednego rodzaju urządzenia. Przechodzą między telefonami, urządzeniami składanymi, tabletami, laptopami, wyświetlaczami samochodowymi i środowiskami XR. Obecnie użytkownicy mają w rękach ponad 580 milionów urządzeń z dużym ekranem, a wkrótce wprowadzimy Googlebooks, czyli nową generację ChromeOS opartą na platformie Android. W tej sytuacji adaptacyjność nie jest już tylko celem technicznym. To ogromna szansa na dotarcie do bardzo zaangażowanych użytkowników, dlatego przechodzimy na standard tworzenia aplikacji w pierwszej kolejności z myślą o adaptacyjności.

Brak ograniczeń dotyczących zmiany rozmiaru i orientacji na dużych ekranach

Aby zapewnić aplikacjom najwyższą jakość na wszystkich urządzeniach, w tym na urządzeniach mobilnych działających w trybie desktopowym na podłączonych wyświetlaczach, 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) w przypadku aplikacji korzystających z interfejsu API na poziomie 37. System zignoruje starsze atrybuty pliku manifestu i interfejsy API środowiska wykonawczego, w tym screenOrientation, setRequestedOrientation(), resizeableActivity=false i ograniczenia dotyczące proporcji (minAspectRatio/maxAspectRatio). Gry (na podstawie kategorii aplikacji w Google Play) nadal są zwolnione z tego obowiązku. Aplikacja musi być gotowa do dostosowania się do dowolnego rozmiaru okna, uwzględniać preferowaną pozycję urządzenia użytkownika i natywnie obsługiwać okna o dowolnym kształcie.

Wielozadaniowość nowej generacji: dymki aplikacji, pasek dymków i interaktywny obraz w obrazie na komputerze

Android 17 wprowadza nowe, zaawansowane funkcje okien, które zmieniają sposób, w jaki użytkownicy wykonują wiele zadań jednocześnie, i wymagają od aplikacji jeszcze większej elastyczności układu:

  • Dymki aplikacji:  użytkownicy mogą teraz przekształcić dowolną aplikację w pływający dymek, przytrzymując jej ikonę w programie uruchamiającym. Ta funkcja jest dostępna na telefonach, urządzeniach składanych i tabletach, co umożliwia lekką wielozadaniowość w dowolnym środowisku pracy.
  • Pasek dymków: na dużych ekranach (tabletach i urządzeniach składanych) pasek aplikacji systemu zawiera teraz specjalny pasek dymków, który umożliwia organizowanie, przełączanie i dokowanie tych pływających dymków aplikacji.
  • Interaktywny obraz w obrazie na komputerze: w środowiskach komputerowych Android 17 wprowadza interaktywny obraz w obrazie. W przeciwieństwie do tradycyjnych okien obrazu w obrazie, które są tylko do odczytu, te przypięte okna pozostają w pełni interaktywne, a jednocześnie zawsze znajdują się na wierzchu innych okien aplikacji.
Bubbles (1).gif
Działanie dymków aplikacji i paska dymków

Aktualizacje dotyczące odtwarzania aktywności

Aby zapobiec zakłóceniom utraty stanu i zacinaniu się, Android 17 aktualizuje domyślne działanie w przypadku ponownego tworzenia aktywności. System nie będzie już domyślnie ponownie uruchamiać aktywności w przypadku typowych zmian konfiguracji, które nie wymagają pełnego ponownego narysowania interfejsu (w tym CONFIG_KEYBOARDCONFIG_KEYBOARD_HIDDENCONFIG_NAVIGATION, CONFIG_TOUCHSCREENCONFIG_COLOR_MODE).

Zamiast tego uruchomione działania będą otrzymywać te aktualizacje za pomocą metody onConfigurationChanged(), co umożliwi płynne przejścia. Jeśli aplikacja wyraźnie wymaga pełnego ponownego uruchomienia, aby ponownie wczytać zasoby na potrzeby tych zmian, musisz teraz wyraźnie włączyć tę opcję za pomocą nowego atrybutu manifestu android:recreateOnConfigChanges.

Kontynuuj na

Android 17 wprowadza funkcję Kontynuuj na, która pomaga użytkownikom płynnie przenosić zadania między urządzeniami z Androidem. Na pasku zadań tabletu użytkownik zobaczy sugestię dotyczącą ostatnio otwartej aplikacji na urządzeniu mobilnym. Wystarczy jedno kliknięcie, aby uruchomić aplikację i otworzyć ją w miejscu, w którym użytkownik zakończył pracę. Funkcja kontynuowania może obsługiwać przejścia z aplikacji do internetu, w tym powrót do korzystania z internetu, jeśli aplikacja nie jest zainstalowana.

Continue On.png
Sugestia przekazania na tablecie
class MyHandoffActivity : Activity() {

    ...

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Do stuff
    ...
    // Enable handoff
    setHandoffEnabled(true, null)
  }

  // Override and implement onHandoffActivityDataRequested
  override fun onHandoffActivityDataRequested(handoffRequestInfo: HandoffActivityDataRequestInfo) : HandoffActivityData {
    // Create and return handoff data
  }
}

Tworzenie aplikacji adaptacyjnych za pomocą Jetpack Compose

Aby pomóc Ci dostosować aplikacje do nowych wymagań Androida 17, udostępniliśmy umiejętność adaptacyjną Jetpack Compose. Ten oparty na AI proces pracy dewelopera pomaga wdrażać sprawdzone metody adaptacyjne:

  • Nawigacja adaptacyjna: automatyczne przechodzenie między paskami nawigacyjnymi u dołu ekranu na urządzeniach mobilnych a paskami nawigacyjnymi przy krawędziach na dużych ekranach za pomocą komponentu NavigationSuiteScaffold z biblioteki adaptacyjnej Material 3.
  • Układy wielopanelowe: wdrażaj układy szczegółowej listy i panele pomocnicze natywnie za pomocą 3 scen nawigacji (ListDetailSceneStrategySupportingPaneSceneStrategy) zamiast niestabilnych transakcji fragmentów.
  • Interfejsy API FlexBox i Grid: korzystaj z dynamicznych komponentów układu Compose 1.11, aby łatwo dostosowywać rozpiętość wierszy i kolumn w trakcie pracy. Dzięki temu Twoje treści zawsze będą dobrze wypełniać przestrzeń.
  • Zaawansowane sterowanie bezdotykowe: wykorzystaj ulepszoną obsługę trackpada i myszy w Compose 1.11, w tym natywne pierścienie ostrości i nowe interfejsy API (np. TrackpadInjectionScopeperformTrackpadInput), aby łatwo testować i zapewniać prawdziwą „laptopową” jakość na Chromebookach i w trybie pulpitu.
  • Dynamiczne stany okien: wykorzystaj reaktywny model stanu Compose, aby płynnie dostosowywać interfejs, gdy aplikacja przechodzi z trybu pełnoekranowego do pływającego dymka aplikacji lub interaktywnego okna PiP na pulpicie. Zapewnij najwyższą jakość nawet przy minimalnych wymiarach.

Android jest oparty na Compose

Compose to najprostszy sposób na tworzenie aplikacji adaptacyjnych. To tylko jeden z wielu powodów, dla których uważamy, że wszystkie interfejsy Androida powinny być tworzone za pomocą Compose. Dlatego tworzenie aplikacji na Androida opiera się teraz przede wszystkim na Compose. Wszystkie nowe interfejsy API, biblioteki, narzędzia i wskazówki dla programistów na Androida będą tworzone wyłącznie z myślą o Jetpack Compose. Komponenty starszego widoku (w pakiecie android.widget) i biblioteki Jetpack oparte na widoku (np. FragmentsRecyclerViewViewPager) są obecnie w trybie konserwacji. Będą otrzymywać tylko ważne poprawki błędów, a nie nowe funkcje.


WSKAZÓWKA Chcesz przeprowadzić migrację? Skorzystaj z naszej opartej na AI umiejętności migracji z XML na Compose, aby automatycznie analizować starsze układy widoków i przekształcać je w wysoce adaptacyjny kod Compose.


Wydajność i skuteczność

Wydajność aplikacji to płynny interfejs użytkownika, szybkie uruchamianie aplikacji i wydajne wykonywanie wielu zadań jednocześnie. Android 17 wprowadza znaczące ulepszenia we wszystkich tych obszarach.

Limity pamięci aplikacji

Wykorzystanie pamięci to jeden z niewidocznych fundamentów ogólnej wydajności. Gdy aplikacja lub usługa działająca na pierwszym planie rośnie bez kontroli, zarządzanie pamięcią powoduje gwałtowny wzrost wykorzystania procesora i baterii, co ostatecznie prowadzi do zakończenia działania innych prawidłowo działających aplikacji w pamięci podręcznej i zadań w tle, a w konsekwencji do wolniejszego uruchamiania i ograniczenia możliwości wielozadaniowości. 

Od Androida 17 system będzie egzekwować ścisłe limity pamięci aplikacji na podstawie całkowitej pamięci RAM urządzenia, nagle kończąc procesy, które je przekraczają. Nowe funkcje, które pomogą Ci spełnić te bardziej rygorystyczne wymagania:

  • Optymalizator R8:  optymalizator R8 znacznie zmniejsza rozmiar kodu bajtowego aplikacji, skracając nazwy klas, metod i pól oraz usuwając nieużywany kod i zasoby. Aby mieć pewność, że aplikacja w pełni wykorzystuje możliwości R8, używaj tego narzędzia w trybie pełnym wraz z nowym analizatorem konfiguracji R8.
R8 Configuration Analyzer.png
Analizator konfiguracji R8
  • LeakCanary w Android Studio Panda:  profiler ma teraz natywną integrację z LeakCanary jako osobne zadanie, w pełni zintegrowane ze środowiskiem IDE i kodem źródłowym.
  • ApplicationExitInfo: jeśli aplikacja zostanie zamknięta z powodu tych limitów, wywołanie metody getDescription() z klasy ApplicationExitInfo zwróci wartość „MemoryLimiter:AnonSwap”.
  • Wykrywanie anomalii na urządzeniu: w ramach ProfilingManager możesz korzystać z profilowania opartego na wyzwalaczach za pomocą TRIGGER_TYPE_ANOMALY, aby automatycznie rejestrować zrzuty sterty po osiągnięciu limitu pamięci.
val profilingManager = applicationContext
   .getSystemService(ProfilingManager::class.java)

val triggers = ArrayList<ProfilingTrigger>().apply {
  add(ProfilingTrigger.Builder(
    ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build())
}
profilingManager.addProfilingTriggers(triggers)

Pracujemy też nad tym, aby w Konsoli Google Play udostępniać Ci więcej wskaźników pamięci na urządzeniu.

Generacyjne odśmiecanie pamięci

Android 17 wprowadza częstsze i mniej zasobochłonne kolekcje młodszej generacji do ART, czyli równoczesnego kompresującego modułu odśmiecania pamięci (GC). Dzięki oddzieleniu obiektów o krótkim czasie życia od obiektów stabilnych i o długim czasie życia system wykonuje częste, lekkie skanowania „młodszej generacji” zamiast kosztownych skanów całego stogu, co znacznie zmniejsza zużycie procesora, pobór mocy i zacinanie się interfejsu. Nasze testy wykazały znaczną poprawę w zakresie zakłóceń GC w wątkach aplikacji oraz zmniejszenie maksymalnego rozmiaru zestawu rezydentnego pamięci (RSS). Ulepszenia ART są też dostępne na ponad miliardzie urządzeń z Androidem 12 (API na poziomie 31) i nowszym dzięki aktualizacjom systemu Google Play.

Lock-Free MessageQueue

W przypadku aplikacji kierowanych na pakiet SDK 37 lub nowszy podstawowy interfejs android.os.MessageQueue ma teraz architekturę bez blokad, co znacznie zmniejsza liczbę pominiętych klatek, skraca czas uruchamiania aplikacji i radykalnie poprawia wydajność zajętych kolejek w scenariuszach wielowątkowych. Uwaga: może to spowodować nieprawidłowe działanie aplikacji, które używają odbicia w prywatnych polach i metodach MessageQueue.  Do interfejsu TestLooperManager dodano interfejsy API peekWhenpoll, aby umożliwić testowanie instrumentacyjne bez polegania na wewnętrznych elementach MessageQueue

Statyczne pola ostateczne są teraz naprawdę ostateczne

Od Androida 17 aplikacje kierowane na pakiet SDK 37 lub nowszy 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 (lub głębokiego odbicia) spowoduje zgłoszenie wyjątku IllegalAccessException. 

Zmiana tych wartości za pomocą metod z rodziny SetStatic<Type>Field JNI spowoduje natychmiastowe zamknięcie aplikacji.

Ograniczenia dotyczące wyświetlania powiadomień niestandardowych

Aby zmniejszyć wykorzystanie pamięci, dodatkowo ograniczamy rozmiar niestandardowych widoków powiadomień. 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 37 lub nowszy.

Prywatność i bezpieczeństwo

Utrzymanie zaufania użytkowników jest podstawą ekosystemu Androida. Android 17 wprowadza zaawansowane funkcje, które chronią dane wrażliwe, a jednocześnie upraszczają korzystanie z urządzenia.

Opcje chroniące prywatność

W przeszłości aplikacje wymagały szerokich, stałych uprawnień dostępu do informacji takich jak kontakty, dokładna lokalizacja i pliki multimedialne. Android 17 kontynuuje trend w kierunku opcji chroniących prywatność, które przyznają tymczasowy dostęp oparty na sesji tylko do danych, które użytkownik wyraźnie wybierze:

  • Selektor kontaktów na poziomie systemu: korzystając z ACTION_PICK_CONTACTS, aplikacje mogą prosić o tymczasowy dostęp tylko do określonych pól (np. adresu e-mail lub numeru telefonu) wybranych przez użytkownika, co eliminuje potrzebę szerokiego uprawnienia READ_CONTACTS. W pełni obsługuje też rozdzielenie profilu służbowego i profilu osobistego.
  • Możliwość dostosowania proporcji selektora zdjęć: za pomocą parametru PhotoPickerUiCustomizationParams możesz dostosować selektor zdjęć systemu, aby wyświetlać miniatury w trybie pionowym. Jest to idealne rozwiązanie dla aplikacji, które zawsze wyświetlają zdjęcia i filmy w trybie pionowym, np. aplikacji społecznościowych opartych na filmach.
  • Przycisk lokalizacji renderowany przez system: nowy przycisk lokalizacji renderowany przez system, który możesz umieścić w aplikacji, umożliwia dostęp do dokładnej lokalizacji tylko w bieżącej sesji.
  • EyeDropper API: nowy interfejs API na poziomie systemu ACTION_OPEN_EYE_DROPPER umożliwia aplikacji tworzenie zakraplacza obsługiwanego przez system, który pozwala użytkownikowi wybrać kolor z dowolnego piksela na wyświetlaczu. Zapewnia to bezpieczne i chroniące prywatność wybieranie kolorów, które eliminuje potrzebę przyznawania szerokich uprawnień do przechwytywania ekranu lub rejestrowania multimediów.
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)
}
Eyedropper Tester.webp
Wybieranie koloru z dowolnego miejsca na ekranie za pomocą systemowego zakraplacza

Dostęp przez sieć lokalną

Aplikacje kierowane na Androida 17 wymagają teraz uprawnienia ACCESS_LOCAL_NETWORK w czasie działania lub korzystania z selektorów urządzeń, które są obsługiwane przez system i zapewniają ochronę prywatności, w celu komunikacji w sieci lokalnej, np. z urządzeniami inteligentnego domu lub odbiornikami przesyłania. Ponieważ uprawnienie ACCESS_LOCAL_NETWORK 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.

Ochrona haseł jednorazowych SMS

Android 17 rozszerza ochronę jednorazowych haseł SMS-owych, opóźniając dostęp do wiadomości SMS o 3 godziny:

Wyjątki: wyjątkiem są domyślne aplikacje do obsługi SMS-ów, Asystenta i połączone aplikacje towarzyszące. Zdecydowanie zachęcamy do przejścia na interfejsy SMS Retriever lub SMS User Consent.

Kryptografia postkwantowa (PQC)

Android 17 jest gotowy na nową generację zabezpieczeń kryptograficznych:

  • Integracja z Keystore: obsługiwane urządzenia mogą generować klucze ML-DSA (Module-Lattice-Based Digital Signature Algorithm) w bezpiecznym sprzęcie, aby tworzyć podpisy odporne na złamanie za pomocą komputera kwantowego, udostępniane za pomocą standardowych interfejsów API JCA.
  • Hybrydowe podpisywanie plików APK: wprowadzamy schemat podpisu plików APK w wersji 3.2, który łączy klasyczne podpisy z podpisami ML-DSA, aby zabezpieczyć dostarczanie aplikacji.

Bezpieczniejsze dynamiczne wczytywanie kodu natywnego

Jeśli Twoja aplikacja jest przeznaczona na pakiet SDK w wersji 37 lub nowszej, ochrona Safer Dynamic Code Loading (DCL) wprowadzona w Androidzie 14 w przypadku plików DEX i JAR obejmuje teraz biblioteki natywne. Wszystkie pliki natywne wczytywane za pomocą funkcji System.load muszą być oznaczone jako tylko do odczytu. W przeciwnym razie system zgłosi błąd UnsatisfiedLinkError.

Inteligentniejsza ochrona haseł w przypadku wpisywania na klawiaturze

W Androidzie 17 zwiększamy bezpieczeństwo wpisywania haseł, kodów PIN i innych poufnych informacji podczas korzystania z klawiatury fizycznej, ponieważ domyślnie nie wyświetlamy już ostatniego wpisanego znaku.

Użytkownicy mogą nadal łatwo dostosowywać te ustawienia wyświetlania do swoich preferencji (dostępność może się różnić w zależności od producenta urządzenia).

Te ulepszone zabezpieczenia prywatności są automatycznie obsługiwane przez wbudowane komponenty pakietu SDK Androida i będą obsługiwane w Compose 1.12 w przypadku SecureTextFields

Hide First Letter.gif
Inteligentniejsza ochrona haseł wpisywanych na klawiaturze

Funkcje multimedialne i funkcje aparatu, które ułatwiają tworzenie treści i zachwycają użytkowników

Android 17 wprowadza nowe funkcje dla twórców, które zapewniają dostęp do profesjonalnych aparatów i multimediów, a jednocześnie zwiększają komfort użytkowników.

  • Eclipsa Video: standard wideo HDR oparty na specyfikacji SMPTE ST 2094-50, który wprowadza nowe metadane, aby pomóc urządzeniom dostosowywać treści do ich zakresu wyświetlania i warunków jasności otoczenia, a także poprawić jednoczesne wyświetlanie treści w standardowej jakości i HDR.
  • Format obrazu RAW14: nowa obsługa formatu obrazu RAW14 umożliwia profesjonalnej aplikacji do obsługi aparatu rejestrowanie najwyższego poziomu szczegółowości i głębi kolorów z kompatybilnych czujników aparatu.
  • Rozszerzenia aparatu zdefiniowane przez dostawcę: rozszerzenia zdefiniowane przez dostawcę umożliwiają partnerom sprzętowym definiowanie i wdrażanie niestandardowych trybów rozszerzeń aparatu, zapewniając dostęp do najlepszych i najnowszych funkcji aparatu.
  • Rozszerzony koder oprogramowania HE-AAC: nowy koder oprogramowania HE-AAC dostarczany przez system obsługuje zarówno niskie, jak i wysokie szybkości transmisji bitów przy użyciu ujednoliconego kodowania mowy i dźwięku, co zapewnia znacznie lepszą jakość dźwięku w przypadku wiadomości głosowych w warunkach niskiej przepustowości, w tym obsługę metadanych głośności.
  • Versatile Video Coding (H.266): umożliwia producentom OEM dodawanie obsługi kodeków przez zdefiniowanie typu MIME video/vvcMediaFormat, dodanie nowych profili VVC w MediaCodecInfo i zintegrowanie obsługi z MediaExtractor.
  • Typ urządzenia z kamerą: nowe interfejsy API, które wysyłają zapytania o typ urządzenia, aby określić, czy kamera jest wbudowanym sprzętem, zewnętrzną kamerą internetową USB czy kamerą wirtualną.
  • Stała jakość nagrywania wideo: funkcja setVideoEncodingQuality w MediaRecorder konfiguruje tryb stałej jakości (CQ) dla koderów wideo, aby zapewnić jednolitą jakość obrazu w całym filmie.

Lepsza obsługa aparatów słuchowych

  • Obsługa aparatów słuchowych Bluetooth LE Audio: Android zawiera teraz specjalną kategorię urządzeń dla aparatów słuchowych Bluetooth Low Energy (BLE) Audio z nową stałą AudioDeviceInfo.TYPE_BLE_HEARING_AID. Dzięki temu aplikacja może odróżniać aparaty słuchowe od zwykłych słuchawek i zapewniać użytkownikom urządzeń wspomagających słyszenie dostosowane do ich potrzeb wrażenia.
  • Szczegółowe kierowanie dźwięku na aparaty słuchowe: Android 17 umożliwia użytkownikom niezależne zarządzanie miejscem odtwarzania określonych dźwięków systemowych. Mogą oni kierować powiadomienia, dzwonki i alarmy do połączonych aparatów słuchowych lub wbudowanego głośnika urządzenia, co pomaga uniknąć niechcianych przerw w słuchaniu, przy jednoczesnym utrzymaniu połączenia Bluetooth z aplikacjami do zarządzania aparatami słuchowymi.

CameraX i Media3

CameraXMedia3 zostały zaktualizowane pod kątem Androida 17. Ułatwiają one tworzenie aplikacji, wygładzając ostre krawędzie rozwoju multimediów i upraszczając tworzenie niezawodnego przechwytywania obrazu z kamery, płynnego odtwarzania multimediów oraz kreatywnych i złożonych funkcji edycji. 

Udostępniliśmy umiejętność agenta, która może migrować starsze implementacje kamery na Androidzie (interfejsy API Camera1 lub surowe interfejsy API Camera2) do CameraX.  

Uwaga: aby uniknąć awarii związanej z dodanym trybem zakresu dynamicznego na urządzeniach z Androidem 17, musisz zaktualizować wersję CameraX do 1.5.2 lub 1.6.0+.

Przygotuj aplikacje, biblioteki, narzędzia i silniki gier.

Jeśli tworzysz Android SDK, bibliotekę, narzędzie lub silnik gry na Androida, musisz teraz przygotować niezbędne aktualizacje, aby zapobiec blokowaniu deweloperów aplikacji i gier przez problemy ze zgodnością i umożliwić im korzystanie z najnowszych funkcji pakietu SDK. Poinformuj deweloperów, którzy korzystają z Twoich bibliotek, czy konieczne są aktualizacje, aby w pełni obsługiwać Androida 17.

Testowanie polega na zainstalowaniu aplikacji produkcyjnej lub testowej korzystającej z biblioteki lub silnika za pomocą Google Play lub w inny sposób na urządzeniu lub emulatorze z Androidem 17 w wersji beta 4. Sprawdź wszystkie ścieżki w aplikacji i poszukaj problemów z funkcjonalnością lub interfejsem. Każda wersja Androida zawiera zmiany na platformie, które poprawiają prywatność, bezpieczeństwo i ogólną wygodę użytkowników. Aby skupić się na testowaniu, zapoznaj się ze zmianami w działaniu, które mają wpływ na aplikacje działającekierowane na Androida 17, w tym z tymi zmianami:

  • Możliwość zmiany rozmiaru na dużych ekranach:  gdy zaczniesz kierować aplikację na Androida 17 (SDK 37), nie będziesz już mieć możliwości rezygnacji z zachowania ograniczeń dotyczących orientacji, możliwości zmiany rozmiaru i formatu obrazu na dużych ekranach.
  • Dynamiczne wczytywanie kodu: jeśli Twoja aplikacja jest przeznaczona na pakiet SDK w wersji 37 lub nowszej, ochrona Safer Dynamic Code Loading (DCL) wprowadzona w Androidzie 14 w przypadku plików DEX i JAR obejmuje teraz biblioteki natywne. Wszystkie pliki natywne wczytywane za pomocą funkcji System.load() muszą być oznaczone jako tylko do odczytu. W przeciwnym razie system zgłosi błąd UnsatisfiedLinkError.
  • Domyślne włączanie CT: przejrzystość certyfikatów (CT) jest domyślnie włączona. (Na Androidzie 16 funkcja CT jest dostępna, ale aplikacje musiały wyrazić na nią zgodę).
  • Ochrona sieci lokalnej:  aplikacje przeznaczone na pakiet SDK w wersji 37 lub nowszej mają domyślnie zablokowany dostęp do sieci lokalnej. Jeśli to możliwe, używaj selektorów chroniących prywatność, a w przypadku szerokiego i trwałego dostępu korzystaj z nowego uprawnienia ACCESS_LOCAL_NETWORK.
  • Wzmacnianie zabezpieczeń dźwięku w tle: od Androida 17 platforma audio wymusza ograniczenia dotyczące interakcji z dźwiękiem w tle, w tym odtwarzania dźwięku, żądań aktywności audio i interfejsów API zmiany głośności. Na podstawie Twoich opinii wprowadziliśmy kilka zmian od wersji beta 2, w tym ograniczenie targetSDK podczas egzekwowania działania usługi na pierwszym planie w trakcie używania oraz wyłączenie dźwięku alarmu. Pełne informacje znajdziesz w zaktualizowanych wskazówkach.
  • Deklaracja dostępu do NPU: aplikacje kierowane na Androida 17, które potrzebują bezpośredniego dostępu do NPU, muszą zadeklarować w pliku manifestu uprawnienie  FEATURE_NEURAL_PROCESSING_UNIT, aby uniknąć zablokowania dostępu do NPU. Dotyczy to aplikacji, które korzystają z delegata LiteRT NPU, pakietów SDK specyficznych dla dostawców, a także wycofanego NNAPI.

Pierwsze kroki z Androidem 17

Jeśli nie korzystasz jeszcze z wersji beta Androida, wkrótce na Twoim Pixelu powinien pojawić się Android 17. Jeśli nie masz urządzenia Pixel, możesz używać 64-bitowych obrazów systemu z emulatorem Androida w Android Studio. Jeśli korzystasz obecnie z Androida 17 w wersji beta 4.1 i nie masz jeszcze kwartalnej wersji beta Androida 17 QPR1, możesz zrezygnować z programu. Wtedy otrzymasz bezprzewodowo wersję Androida 17.

Uzyskiwanie wersji beta Androida 17 na urządzeniach partnerów

Android 17 jest dostępny w wersji beta na telefonach, tabletach i urządzeniach składanych partnerów, takich jak Honor, iQOO, Lenovo, OnePlus, OPPO, Realme, Sharp, vivo i Xiaomi.

android-17-beta-partners.jpg

Aby zapewnić sobie jak najlepsze środowisko programistyczne w przypadku Androida 17, zalecamy korzystanie z najnowszej wersji Canary Androida Studio Quail. Po skonfigurowaniu środowiska wykonaj te czynności:

Jeszcze raz dziękujemy wszystkim, którzy wzięli udział w programie wersji przedpremierowej i beta dla deweloperów Androida. Nie możemy się doczekać, aby zobaczyć, jak Twoje aplikacje wykorzystają aktualizacje w Androidzie 17. Planujemy też w przyszłości udostępniać Ci aktualizacje w szybkim tempie.

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

Autor:

Czytaj dalej