Android 7.0 dla programistów

Android 7.0 Nougat wprowadza różne nowe funkcje i możliwości dla użytkowników oraz deweloperów. W tym dokumencie opisujemy nowości dla deweloperów.

Zapoznaj się z zmianami w zachowaniu Androida 7.0, aby dowiedzieć się, w jakich obszarach zmiany na platformie mogą wpłynąć na Twoje aplikacje.

Aby dowiedzieć się więcej o: funkcji Androida 7.0 dla użytkowników indywidualnych wejdź na www.android.com.

Obsługa wielu okien

W Androidzie 7.0 wprowadzamy funkcję wielozadaniowości na platformie – obsługę wielu okien.

Użytkownicy mogą teraz jednocześnie otwierać 2 aplikacje na ekranie.

  • Na telefonach i tabletach z systemem Android 7.0 można uruchamiać dwie aplikacje obok siebie lub wyświetlać je jedno nad drugim w trybie podzielonego ekranu. Użytkownicy mogą zmieniać rozmiar aplikacji, przeciągając rozgraniczenie między nimi.
  • Na urządzeniach z Androidem TV aplikacje mogą wyświetlać się w obrazie w obrazie , dzięki czemu mogą oni nadal wyświetlać treści, gdy użytkownik przegląda lub współdziała z innymi aplikacjami.
Uruchamianie aplikacji mobilnych w trybie podzielonego ekranu

Rysunek 1. Aplikacje działające w trybie podzielonego ekranu.

Szczególnie na tabletach i innych urządzeniach z większymi ekranami obsługa trybu wielu okien i zapewniają Ci nowe sposoby angażowania użytkowników. Możesz nawet włączyć przeciąganie i upuszczanie aby umożliwić użytkownikom wygodne przeciąganie treści do i z aplikacji. sposób na poprawę wrażeń użytkowników.

Dodanie do aplikacji obsługi wielu okien i skonfigurowanie sposobu wyświetlania aplikacji w trybie wielu okien jest bardzo proste. Możesz na przykład określić aktywność minimalne dopuszczalne wymiary, uniemożliwiając użytkownikom zmianę rozmiaru poniższej aktywności w tym rozmiarze. Możesz też wyłączyć wyświetlanie wielu okien w aplikacji, gwarantuje, że system wyświetli aplikację tylko w trybie pełnoekranowym.

Więcej informacji znajdziesz w dokumentacji dla deweloperów na temat obsługi wielu okien.

Ulepszenia powiadomień

W Androidzie 7.0 przeprojektowaliśmy powiadomienia, aby były łatwiejsze i jest szybsze. Wprowadziliśmy kilka zmian:

  • Aktualizacje szablonów: aktualizujemy szablony powiadomień do położyć nowy nacisk na obrazek i awatar. Deweloperzy będą mogli korzystają z nowych szablonów, wprowadzając minimalne poprawki w kodzie.
  • Dostosowanie stylu wiadomości: możesz dostosować etykiety interfejsu powiązane z powiadomieniami za pomocą MessagingStyle zajęcia. Możesz skonfigurować wiadomość, tytuł rozmowy i widok treści.
  • Powiadomienia w grupach: system może grupować wiadomości. razem, na przykład według tematu wiadomości, i wyświetlać grupę. Użytkownik może i wykonać na nich działania, takie jak Odrzuć lub Archiwizuj. Jeśli wdrożonych powiadomień na Androida Wear, znasz już tego modelu.
  • Bezpośrednia odpowiedź: w przypadku aplikacji do komunikacji w czasie rzeczywistym parametr System Android obsługuje odpowiedzi w tekście, dzięki czemu użytkownicy mogą szybko odpowiedzieć wiadomość SMS lub SMS bezpośrednio w interfejsie powiadomień.
  • Widoki niestandardowe: dwa nowe interfejsy API umożliwiają wykorzystanie systemu dekoracje, takie jak nagłówki i działania powiadomień, wyświetleń w powiadomieniach.
Urządzenie mobilne wyświetlające pakiety powiadomień o wiadomościach
Urządzenie mobilne wyświetla powiadomienie o pojedynczej wiadomości
Urządzenie mobilne wyświetlające w tekście odpowiedź w treści w interfejsie powiadomień

Rysunek 2. Powiadomienia zbiorcze i bezpośrednia odpowiedź.

Aby dowiedzieć się, jak wdrażać nowe funkcje, zapoznaj się z powiadomień, Google.

Kompilacja instrukcji JIT/AOT z przewodnikiem

W Androidzie 7.0 dodaliśmy kompilator Just in Time (JIT) z kodem profilowanie do ART, co pozwala stale poprawiać skuteczność aplikacje na Androida w trakcie ich działania. Kompilator JIT uzupełnia bieżące narzędzie ART kompilatora Wyprzedzeniem (AOT) i poprawiać wydajność środowiska wykonawczego, oszczędzać miejsca na dane oraz przyspieszyć aktualizacje aplikacji i systemu.

Kompilacja prowadzona przez profil umożliwia ART zarządzanie kompilacją AOT/JIT dla poszczególnych aplikacji zgodnie z rzeczywistym użyciem oraz warunkami na urządzeniu. Na przykład ART utrzymuje profil często używanych metod każdej aplikacji i może je wstępnie skompilować oraz zapisać w pamięci podręcznej, aby zapewnić najlepszą wydajność. Pozostawia inne części aplikacji nieskompilowane do momentu rzeczywistego użycia.

Oprócz poprawy skuteczności najważniejszych części aplikacji pomaga zmniejszyć ogólne wykorzystanie pamięci RAM przez aplikację, pliki binarne. Ta funkcja jest szczególnie ważna w przypadku urządzeń z małą ilością pamięci.

ART zarządza kompilacjami prowadzonymi przez profil w sposób, który minimalizuje wpływ na baterii urządzenia. Dokonuje wstępnej kompilacji tylko wtedy, gdy urządzenie jest bezczynne, ładowania, oszczędzając czas i baterię, wykonując te czynności z wyprzedzeniem.

Krótka ścieżka do instalacji aplikacji

Jednym z najbardziej namacalnych zalet kompilatora JIT w ART jest szybkość instalacji aplikacji i aktualizacji systemu. Nawet duże aplikacje, których w systemie Android 6.0 można zainstalować sek. Aktualizacje systemu są również szybsze, ponieważ nie trzeba już przechodzić na kolejne elementy optymalizacyjne.

Uśpienie w ruchu...

W Androidzie 6.0 wprowadzono Uśpienie – tryb systemu, który oszczędza baterię dzięki aplikacji Działania procesora i sieci, gdy urządzenie jest nieaktywne, np. na stole lub szufladzie.

W Androidzie 7.0 Doze idzie jeszcze dalej i oszczędza baterię podczas korzystania z urządzenia. Za każdym razem, gdy ekran jest wyłączony przez pewien czas, a urządzenie jest odłączone od zasilania, Doze stosuje w aplikacjach podzbiór znanych ograniczeń dotyczących procesora i sieci. Oznacza to, że użytkownicy mogą oszczędzać baterię nawet wtedy, gdy noszą urządzenia w kieszeniach.

Ilustracja pokazująca, jak Doze stosuje pierwsze ograniczenie aktywności systemu w celu wydłużenia czasu pracy na baterii

Rysunek 3. Doze stosuje teraz ograniczenia, aby wydłużyć czas pracy na baterii nawet wtedy, gdy urządzenie nie jest nieruchome.

Krótko po wyłączeniu ekranu, gdy urządzenie działa na baterii, Doze ogranicza dostęp do sieci oraz opóźnia wykonywanie zadań i synchronizację. Podczas krótkich okresów konserwacji aplikacje mają dostęp do sieci, a wszystkie opóźnione zadania lub synchronizacje są wykonywane. Włączenie ekranu lub podłączenie urządzenia powoduje nie działa uśpienie.

Gdy urządzenie znowu się nie da, przy wyłączonym ekranie i zasilanej baterii przez przez określony czas Uśpienie stosuje pełne ograniczenia dotyczące procesora i sieci do alarmów PowerManager.WakeLock, AlarmManager i Skanowanie GPS/Wi-Fi.

Sprawdzone metody przystosowania aplikacji do trybu uśpienia są takie same, niezależnie od tego, czy urządzenie jest w ruchu, więc jeśli aplikacja została już i przycisk Uśpienie. Wszystko gotowe. Jeśli nie, zacznij dostosowywać aplikację Uśpienie.

Projekt Svelte: optymalizacje w tle

W projekcie Svelte stale staramy się zminimalizować wykorzystanie pamięci RAM przez system i aplikacje na różnych urządzeniach z Androidem w ekosystemie. W Androidzie 7.0 projekt Svelte skupia się na optymalizacji sposobu, w jaki aplikacje działają w tle.

Przetwarzanie w tle to zasadnicza część większości aplikacji. Prawidłowe potraktowanie sprawi, że wrażenia użytkowników będą niesamowite – będą natychmiastowe, szybkie i zależne od kontekstu. Jeśli nie jest odpowiednio zarządzane, przetwarzanie w tle może niepotrzebnie zużywać pamięć RAM (a także baterię) i wpływać na działanie innych aplikacji.

Od Androida 5.0 JobScheduler jest preferowany sposób wykonywania pracy w tle w dobry sposób. użytkowników. Aplikacje mogą planować zadania, a system jest optymalizowany na podstawie pamięci, zasilania i łączności. JobScheduler zapewnia kontrolę i prostotę, dlatego chcemy, aby korzystały z niego wszystkie aplikacje.

Kolejna dobra opcja to GCMNetworkManager, część Usług Google Play, oferuje podobne harmonogramy zadań ze zgodnością ze starszymi wersjami na urządzeniu z Androidem.

Nadal rozszerzamy zakres JobScheduler i GCMNetworkManager, aby spotkać więcej Twoich zastosowań — na przykład w Androidzie 7.0 możesz na podstawie zmian u dostawców treści. Jednocześnie rozpoczynamy starsze wzorce mogące zmniejszyć wydajność systemu, zwłaszcza na urządzeniach z małą ilością pamięci.

W Androidzie 7.0 usuwamy trzy często używane wiadomości niejawne: CONNECTIVITY_ACTION, ACTION_NEW_PICTURE i ACTION_NEW_VIDEO, ponieważ mogą one wybudzić urządzenie procesów w tle wielu aplikacji jednocześnie, obciążając pamięć i baterię. Jeśli Twoja aplikacja otrzymuje te wyjątki, skorzystaj z Androida 7.0, aby przejść na interfejs JobScheduler i powiązane interfejsy API.

Przyjrzyj się Tło Dokumentacji optymalizacji.

SurfaceView

Android 7.0 udostępnia synchroniczne urządzenie SurfaceView klasy, co zapewnia lepszą wydajność baterii niż TextureView w określonych przypadkach: podczas renderowania filmów lub Treści 3D, aplikacje z funkcją przewijania i animowanego położenia wideo zużywają mniej energii SurfaceView niż w TextureView.

Klasa SurfaceView umożliwia bardziej energooszczędne komponowanie na ekranu, ponieważ jest umieszczone na specjalnym sprzęcie, niezależnie od aplikacji zawartość okna. Oznacza to, że dzięki temu mniej średnio zaawansowany użytkownik kopii zapasowych niż TextureView.

Pozycja treści obiektu SurfaceView jest teraz aktualizowana synchronicznie z treścią aplikacji. Dzięki tej zmianie tłumaczenia lub skale filmu odtwarzanego w SurfaceView nie tworzy już czarnych pasów wzdłuż poruszającego się widoku.

Począwszy od Androida 7.0 zdecydowanie zalecamy oszczędzanie energii przez SurfaceView zamiast TextureView.

Oszczędzanie danych

Oszczędzanie danych w Ustawieniach

Rysunek 4. Oszczędzanie danych w Ustawieniach.

Koszt abonamentu z obsługą komórkowej transmisji danych przez cały okres użytkowania urządzenia mobilnego przekracza koszt samego urządzenia. Dla wielu użytkowników komórkowa transmisja danych i które chcą zaoszczędzić na kosztach.

W Androidzie 7.0 wprowadziliśmy tryb Oszczędzanie danych – nową usługę systemową, która pomaga ograniczyć komórkowej transmisji danych przez aplikacje (w roamingu) pod koniec cyklu rozliczeniowego lub na małym przedpłaconym pakiecie danych. Oszczędzanie danych pozwala użytkownikom kontrolować sposób, w jaki aplikacje używają komórkowej transmisji danych i pozwala programistom zapewnić bardziej wydajną usługę, Oszczędzanie jest włączone.

Gdy użytkownik włączy Oszczędzanie danych w Ustawieniach, a urządzenie jest w sieci z ograniczonym transferem danych, system blokuje korzystanie z danych w tle i informuje aplikacje, aby w miarę możliwości używały mniej danych na pierwszym planie, np. ograniczając szybkość transmisji bitów w przypadku strumieniowego przesyłania danych, obniżając jakość obrazu, opóźniając optymalne buforowanie itd. Użytkownicy mogą zezwalać określonym aplikacjom na używanie danych z pomiarem w tle nawet gdy włączone jest Oszczędzanie danych.

Android 7.0 rozszerza uprawnienia ConnectivityManager, aby umożliwić aplikacjom pobieranie ustawień trybu oszczędzania danychmonitorowanie zmian tych ustawień. Wszystkie aplikacje powinny sprawdzać, czy użytkownik włączył opcję Dane oszczędzać dane i ograniczyć użycie danych na pierwszym planie i w tle;

Interfejs API interfejsu Vulkan

Android 7.0 integruje z platformą VulkanTM – nowy interfejs API do renderowania 3D. Polub OpenGLTM ES, Vulkan to otwarty standard dla grafiki 3D i umożliwiającego renderowanie przez grupę Khronos.

Interfejs Vulkan został zaprojektowany od podstaw w celu zminimalizowania obciążenia procesora i pozwala aplikacji bezpośrednio kontrolować działanie GPU. Wulkan umożliwia też lepszą obsługę równoległego, ponieważ umożliwia obsługę wielu wątków. np. budowania bufora poleceń.

Narzędzia i biblioteki dla programistów Vulkan są częścią pakietu SDK Androida 7.0. Ta uwzględnij:

  • Nagłówki
  • Warstwy weryfikacji (biblioteki debugowania)
  • Kompilator do cieniowania SPIR-V
  • Biblioteka kompilacji kompilacji kodu do cieniowania środowiska wykonawczego SPIR-V

Interfejs Vulkan jest dostępny tylko w aplikacjach na urządzeniach z obsługą interfejsu Vulkan, takich jak Nexus 5X, Nexus 6P i Nexus Player. Ściśle współpracujemy z naszymi jak najszybszego udostępnienia interfejsu Vulkan na większej liczbie urządzeń.

Więcej informacji znajdziesz w dokumentacji interfejsu API.

Szybkie ustawienia API

Kafelki Szybkich ustawień w obszarze powiadomień

Rysunek 5. kafelki Szybkich ustawień w obszarze powiadomień.

Szybkie ustawienia to popularny i prosty sposób ujawniania najważniejszych ustawień i działań, bezpośrednio w obszarze powiadomień. W Androidzie 7.0 rozszerzyliśmy Szybkie ustawienia, dzięki którym korzystanie z internetu jest jeszcze wygodniejsze i wygodniejsze.

Dodaliśmy więcej miejsca na dodatkowe kafelki Szybkich ustawień, w obszarze wyświetlania z podziałem na strony, przesuwając palcem w lewo lub w prawo. oraz dając użytkownikom kontrolę nad tym, które kafelki Szybkich ustawień się wyświetlają i gdzie się znajdują wyświetlane – użytkownicy mogą dodawać lub przenosić kafelki, przeciągając je i upuszczając.

Deweloperzy do Androida 7.0 mają też nowy interfejs API, który pozwala zdefiniować własny kafelki Szybkich ustawień, które dają użytkownikom łatwy dostęp do najważniejszych elementów sterujących i działań w aplikacji;

Kafelki Szybkich ustawień są zarezerwowane dla elementów sterujących lub działań, które: pilnie wymagane lub często używane i nie powinny być używane jako skróty do podczas uruchamiania aplikacji.

Po zdefiniowaniu kafelków możesz je wyświetlać użytkownikom, którzy mogą dodawać do Szybkich ustawień, przeciągając je i upuszczając.

Informacje na temat tworzenia kafelka aplikacji znajdziesz w dokumentacji referencyjnej dla Tile.

Blokowanie numerów

Android 7.0 obsługuje teraz blokowanie numerów na platformie i zapewnia Framework API, aby umożliwić dostawcom usług zachowanie listy zablokowanych numerów. domyślna aplikacja do obsługi SMS-ów, domyślna aplikacja telefonu oraz aplikacje operatora mogą odczytywać i zapisywać je na liście zablokowanych numerów. Lista nie jest dostępna dla innych aplikacji.

Dzięki blokowaniu numerów jako standardowej funkcji platformy Android zapewnia w spójny sposób obsługuje blokowanie numerów w wielu różnych urządzenia. Inne zalety aplikacji to:

  • Numery zablokowane w przypadku połączeń są też zablokowane w przypadku SMS-ów
  • Zablokowane numery mogą być przechowywane zarówno przy resetowaniu, jak i na urządzeniach za pomocą Przywróć funkcję
  • Z tej samej listy zablokowanych numerów może korzystać wiele aplikacji

Dodatkowo integracja aplikacji z Androidem przez Androida oznacza, że operatorzy mogą odczytywanie listy numerów zablokowanych na urządzeniu i blokowanie ich po stronie usługi z myślą o użytkowniku, aby niechciane połączenia i SMS-y nie docierały do użytkownika za pośrednictwem dowolnego medium, takiego jak punkt końcowy VOIP czy telefony przekazujące.

Więcej informacji znajdziesz w dokumentacji referencyjnej BlockedNumberContract

Filtrowanie połączeń

Android 7.0 pozwala domyślnej aplikacji telefonicznej na filtrowanie połączeń przychodzących. Telefon to dzięki wdrożeniu nowego interfejsu CallScreeningService, który pozwala aplikacji na wykonywanie wielu działań na podstawie numer Call.Details połączenia przychodzącego, na przykład:

  • Odrzuć połączenie przychodzące
  • Nie zezwalaj na dodawanie połączeń do rejestru połączeń
  • Nie pokazuj użytkownikowi powiadomienia o połączeniu

Więcej informacji znajdziesz w dokumentacji CallScreeningService.

Obsługa wielu języków, więcej języków

W Androidzie 7.0 użytkownicy mogą teraz wybrać wiele języków w Ustawieniach. co daje lepszą obsługę dwujęzycznych zastosowań. Aplikacje mogą używać: nowy interfejs API, który umożliwia dostęp do danych wybranych przez użytkownika i zapewnia bardziej zaawansowane wrażeniami użytkowników korzystających z różnych języków, np. wyświetlanie wyników wyszukiwania wielu języków i nieoferowanie tłumaczenia stron internetowych w języku, co użytkownik wie.

Android 7.0 nie tylko obsługuje wiele języków, ale też udostępnia szeroką gamę języków, dostępnych dla użytkowników. Oferuje ponad 25 wariantów najczęściej używanych. takimi jak angielski, hiszpański, francuski i arabski. Dodaje też częściowe obsługę ponad 100 nowych języków.

Aplikacje mogą pobrać listę ustawień regionalnych ustawionych przez użytkownika, dzwoniąc do niego LocaleList.GetDefault() Aby zapewnić obsługę większej liczby języków, Android 7.0 i zmieniania sposobu używania zasobów. Przetestuj i zweryfikuj, czy Twoje aplikacje będzie działać zgodnie z oczekiwaniami z nową logiką rozpoznawania zasobów.

Aby dowiedzieć się więcej o nowym sposobie rozwiązywania problemów z zasobami i sprawdzonych metodach zapoznaj się z sekcją Obsługa wielu języków.

Nowe emotikony

Android 7.0 wprowadza dodatkowe emotikony i funkcje związane z emotikonami, w tym: emotikony w odcieniach skóry i zróżnicowanie selektory. Jeśli Twoja aplikacja obsługuje emotikony, postępuj zgodnie z poniższymi wskazówkami, aby korzystać z funkcji związanych z emotikonami.

  • Przed wstawieniem emotikona sprawdź, czy urządzenie zawiera emotikon. Aby sprawdzić, jakie emotikony są dostępne w czcionki systemowej, użyj metody hasGlyph(String).
  • Sprawdź, czy emotikon obsługuje selektory wariantów. Dzięki selektorom odmian możesz prezentować wybrane emotikony w kolorze lub czarno-białym. Na urządzeniach mobilnych emotikony powinny być kolorowe, a nie czarno-białe. Pamiętaj jednak: Jeśli aplikacja wyświetla emotikony w tekście, użyj odmiany czarno-białej. Aby sprawdzić, czy emotikon ma odmianę, użyj selektora wariantów. Pełną listę znaków z odmianami znajdziesz w sekwencje wariantów emotikonów Dokumentacja Unicode na temat odmian.
  • Sprawdź, czy emotikon obsługuje odcień skóry. Android 7.0 umożliwia użytkownikom renderować odcień skóry emotikonów zgodnie z preferencjami. Aplikacje klawiatury powinny wyświetlać elementy wizualne oznaczenia emotikonów w różnych odcieniach skóry, które powinny pozwalać użytkownikom na i wybiorą preferowany odcień skóry. Aby określić, które emotikony systemowe mają modyfikatory odcieni skóry, użyj metody hasGlyph(String). Aby dowiedzieć się, które emotikony używają odcieni skóry, przeczytaj dokumentację Unicode.

Interfejsy API ICU4J na Androidzie

Android 7.0 zawiera teraz podzbiór interfejsów API ICU4J na platformie Androida, pakiet android.icu. Migracja jest łatwa i obejmuje głównie zmiana z przestrzeni nazw com.java.icu na android.icu Jeśli w swoich aplikacjach używasz już pakietu ICU4J, przejście na interfejsy API android.icu dostępne w ramach platformy Android może znacznie zmniejszyć rozmiar pliku APK.

Więcej informacji o interfejsach API ICU4J w Androidzie znajdziesz na stronie pomocy ICU4J.

WebView | komponent WebView

Chrome + komponent WebView

Plik APK Chrome na urządzeniu z Androidem 7.0 lub nowszym (od wersji 51 systemu operacyjnego Chrome) służy do udostępniania i renderowania systemowych komponentów WebView Androida. Ta metoda poprawia pamięć na samym urządzeniu oraz zmniejsza przepustowość wymaganą do Aktualizuj komponent WebView (samodzielny pakiet APK WebView nie będzie już aktualizowany) dopóki przeglądarka Chrome pozostanie włączona).

Aby wybrać dostawcę WebView, włącz Opcje programisty i kliknij Implementacja WebView. Możesz użyć dowolnego zgodnego wersję Chrome (deweloperską, beta lub stabilną) zainstalowaną na urządzeniu lub samodzielny plik APK WebView, który będzie działać jako implementacja WebView.

Wieloprocesowe

Od wersji Chrome 51 na Androidzie 7.0 WebView będzie uruchamiać treści z internetu w osobny proces w trybie piaskownicy, gdy dla programistów opcja „Multiprocess WebView” (Komponent WebView wieloprocesowy) jest włączona.

Zanim umożliwimy korzystanie z wiele procesów WebView w przyszłej wersji Androida, chcielibyśmy otrzymać opinie na temat zgodności i wydajności w czasie działania w N. W tym wersja, regresje w czasie uruchamiania, całkowite wykorzystanie pamięci i oprogramowanie. oczekiwaną wydajność renderowania.

Jeśli zauważysz nieoczekiwane problemy w trybie wieloprocesowym, daj nam znać. Skontaktuj się z zespołem WebView, korzystając z narzędzia do śledzenia błędów Chromium.

Uruchamianie kodu JavaScript przed wczytaniem strony

Od aplikacji kierowanych na Androida 7.0 kontekst JavaScript zostanie zresetowany podczas wczytywania nowej strony. Obecnie kontekst jest przenoszony do pierwszej strony wczytywanej w nowej instancji WebView.

Deweloperzy, którzy chcą wstrzyknąć JavaScript do WebView, powinni wykonać skrypt po rozpoczęciu wczytywania strony.

Geolokalizacja w niezabezpieczonych źródłach

Począwszy od aplikacji kierowanych na Androida 7.0 interfejs API geolokalizacji będzie dozwolony tylko w zabezpieczonych źródłach (przez HTTPS). Te zasady mają na celu ochronę prywatnych informacji użytkowników, gdy korzystają oni z niebezpiecznego połączenia.

Testowanie za pomocą komponentu WebView w wersji beta

Komponent WebView jest regularnie aktualizowany, dlatego zalecamy z aplikacją, korzystając z wersji beta komponentu WebView. Aby rozpocząć testowanie przedpremierowych wersji komponentu WebView na Androidzie 7.0. Pobierz i zainstaluj Chrome w wersji deweloperskiej lub Chrome Beta i wybierz ją jako implementację WebView jak opisano powyżej. Zgłaszaj problemy za pomocą śledzika błędów Chromium, abyśmy mogli je naprawić przed wydaniem nowej wersji WebView.

Interfejs API OpenGLTM ES 3.2

W Androidzie 7.0 dodano interfejsy platformy i obsługę platformy dla OpenGL ES 3.2, w tym:

  • Wszystkie rozszerzenia z sieci Android Extension Pack (AEP) oprócz EXT_texture_sRGB_decode.
  • Zmiennoprzecinkowe bufory klatek na potrzeby HDR i odroczonego cieniowania.
  • Wywołania rysowania w BaseVertex umożliwiają lepsze grupowanie i strumieniowanie.
  • Pełna kontrola dostępu do bufora w celu zmniejszenia obciążenia WebGL.

Interfejs API frameworku dla OpenGL ES 3.2 na Androidzie 7.0 jest udostępniany za pomocą klasy GLES32. Jeśli korzystasz z OpenGL ES 3.2, pamiętaj o zadeklarowaniu w pliku manifestu, używając tagu <uses-feature> i atrybut android:glEsVersion.

Informacje o korzystaniu z OpenGL ES, w tym o sprawdzaniu obsługiwanej wersji OpenGL ES w czasie działania znajdziesz w przewodniku po interfejsie OpenGL ES API.

Nagrywanie na Androidzie TV

Android 7.0 daje możliwość nagrywania i odtwarzania treści z wejścia Android TV za pomocą nowych interfejsów API nagrywania filmów. Wykorzystanie dotychczasowego przesuwania czasowego interfejsy API, usługi wejścia TV mogą kontrolować, jakie dane z kanału mogą być rejestrowane, jak są zapisywane i pozwalają zarządzać interakcją użytkownika z nagranymi treściami.

Więcej informacji znajdziesz na stronie o interfejsach API nagrywania Android TV.

Android for Work

Android dla firm dodaje wiele nowych funkcji i interfejsów API na urządzeniach z Androidem 7.0. Poniżej przedstawiamy niektóre z najważniejszych funkcji – pełną listę funkcji znajdziesz na Funkcja Androida Enterprise .

Test zabezpieczający zabezpieczenia profilu służbowego

Właściciele profili kierujących reklamy na pakiet SDK N może określić osobne testy zabezpieczające dla aplikacji działających na do profilu służbowego. Test zabezpieczający jest wyświetlany, gdy użytkownik próbuje otworzyć dowolną aplikację służbową. Pomyślne ukończenie testu zabezpieczającego odblokuje profilu służbowego i w razie potrzeby odszyfrowuje go. Jeśli jesteś właścicielem profilu: Aplikacja ACTION_SET_NEW_PASSWORD prosi użytkownika o ustawienie zadania wyzwanie i ACTION_SET_NEW_PARENT_PROFILE_PASSWORD prompty ustawienia blokady urządzenia.

Właściciele profili mogą ustawić różne zasady dotyczące haseł dla wyzwania służbowego (np. na jak długo trzeba podać kod PIN lub czy można użyć odcisku palca aby odblokować profil) za pomocą setPasswordQuality(), setPasswordMinimumLength() i powiązane metody. Właściciel profilu może też ustawić blokadę urządzenia za pomocą instancji DevicePolicyManager zwróconej przez nową metodę getParentProfileInstance(). Właściciele profili mogą też dostosować ekran danych logowania dla zadanie służbowe z nowymi setOrganizationColor() i setOrganizationName() metody.

Wyłączanie trybu pracy

Na urządzeniu z profilem służbowym użytkownicy mogą przełączać tryb służbowy. Gdy jest włączony tryb służbowy wyłączony użytkownik zarządzany jest tymczasowo wyłączony, co powoduje wyłączenie profilu służbowego aplikacje, synchronizację w tle i powiadomienia. Obejmuje to właściciela profilu aplikacji. Gdy tryb służbowy jest wyłączony, system wyświetla trwałą ikonę stanu, aby przypomnieć użytkownikowi, że nie może uruchamiać aplikacji służbowych. Program uruchamiający wskazuje, że służbowe aplikacje i widżety są niedostępne.

Stały VPN

Właściciele urządzeń i profili mogą zapewnić, że aplikacje służbowe będą zawsze połączone przez określoną sieć VPN. System automatycznie uruchomi tę sieć VPN po uruchamianie urządzenia.

Nowe metody DevicePolicyManagersetAlwaysOnVpnPackage() i getAlwaysOnVpnPackage()

Ponieważ usługi VPN mogą być powiązane bezpośrednio przez system bez aplikacji klienty VPN muszą obsługiwać nowe punkty wejścia dla stałego VPN. Jako wcześniej usługi są wskazywane w systemie przez dopasowanie filtra intencji czynność android.net.VpnService.

Użytkownicy mogą też ręcznie ustawić klienty stałej sieci VPN, które stosują VPNService metoda używa Ustawienia > Więcej > VPN. opcja włączenia stałego VPN. z Ustawień jest dostępna tylko wtedy, gdy klient VPN jest kierowany na interfejs API na poziomie 24.

Niestandardowa obsługa administracyjna

Aplikacja może dostosować obsługę administracyjną właściciela profilu i urządzenia z kolorami i logo firmy. DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR – dostosowanie kolor przepływu. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI aby dostosować proces, dodając logo firmy.

Ułatwienia dostępu

Android 7.0 oferuje teraz ustawienia widoczności bezpośrednio na ekranie powitalnym konfiguracji urządzenia. Ułatwia to użytkownikom znajdowanie i konfigurowanie aplikacji. funkcji ułatwień dostępu na urządzeniach, w tym gestu powiększenia, czcionki rozmiaru, rozmiaru wyświetlacza i TalkBack.

Ułatwienia dostępu będą bardziej widoczne dla użytkowników, chętniej wypróbują aplikację po ich włączeniu. Pamiętaj, aby wcześniej przetestować aplikacje z włączonymi tymi ustawieniami. Możesz je włączyć w sekcji Ustawienia > Ułatwienia dostępu.

Również w Androidzie 7.0 usługi ułatwień dostępu mogą pomóc użytkownikom z dotknięcie ekranu. Nowy interfejs API umożliwia tworzenie usług z funkcjami takimi jak śledzenie twarzy, śledzenie ruchów gałek ocznych, skanowanie punktów itp., aby spełniać potrzeby tych użytkowników.

Więcej informacji znajdziesz w dokumentacji GestureDescription.

Bezpośredni rozruch

Bezpośredni rozruch skraca czas uruchamiania urządzenia i umożliwia rejestrację aplikacje mają ograniczoną funkcjonalność nawet po nieoczekiwanym ponownym uruchomieniu. Jeśli na przykład zaszyfrowane urządzenie uruchomi się ponownie, gdy użytkownik będzie uśpiony, zarejestrowane alarmy, wiadomości i połączenia przychodzące mogą teraz nadal wysyłać powiadomienia jak zwykle. Oznacza to również, że usługi ułatwień dostępu mogą być również dostępne natychmiast po ponownym uruchomieniu.

Bezpośredni rozruch wykorzystuje szyfrowanie oparte na plikach w Androidzie 7.0 aby włączyć szczegółowe zasady szyfrowania danych systemowych i danych aplikacji. System wykorzystuje magazyn zaszyfrowany przez urządzenie dla wybranych danych systemowych i zarejestrowanych danych aplikacji. Domyślnie magazyn szyfrowany danymi logowania jest używany dla wszystkich inne dane systemowe, dane użytkownika, aplikacje i dane aplikacji.

Podczas uruchamiania system uruchamia się w trybie ograniczonego dostępu z dostępem do: szyfrowane tylko na urządzeniu, bez ogólnego dostępu do aplikacji czy danych. Jeśli masz komponenty, które chcesz uruchamiać w tym trybie, możesz je zarejestrować, ustawiając flagę w pliku manifestu. Po ponownym uruchomieniu system aktywuje się. zarejestrowanych komponentów przez transmitowanie parametru LOCKED_BOOT_COMPLETED. intencji. System zapewnia dostępność zarejestrowanych danych aplikacji zaszyfrowanych na urządzeniu przed odblokowaniem. Wszystkie inne dane są niedostępne, dopóki użytkownik nie potwierdzi danych do odblokowania ekranu, aby je odszyfrować.

Więcej informacji znajdziesz w sekcji Bezpośredni rozruch.

Atestacja klucza

Android 7.0 wprowadza atestację kluczy – nowe narzędzie zabezpieczające, które pomaga upewnij się, że pary kluczy przechowywane w wspomaganym sprzętowo magazyn kluczy, który odpowiednio chroni informacje poufne przechowywane przez aplikację zastosowań. Korzystając z tego narzędzia, masz większą pewność, że Twoja aplikacja współdziała z kluczami umieszczonymi w bezpiecznym sprzęcie, nawet jeśli urządzenie masz dostęp do roota. Jeśli używasz kluczy ze sprzętowego magazynu kluczy użyj go, szczególnie jeśli używasz klawiszy do weryfikować informacje poufne w aplikacji.

Atestacja kluczy umożliwia sprawdzenie, czy para kluczy RSA lub EC została tworzone i przechowywane w obsługiwanym sprzętowo magazynie kluczy. zaufanego środowiska wykonawczego (TEE). Narzędzie umożliwia też korzystanie z usługi poza urządzeniem, takiej jak serwer backendu aplikacji, do określenia i dokładnego sprawdzenia zastosowań oraz ważności pary kluczy. Te funkcje zapewniają Dzięki temu zabezpieczysz parę kluczy, nawet jeśli ktoś uzyska dostęp do roota lub zagraża bezpieczeństwu platformy Androida, na urządzeniu.

Uwaga: tylko niewielka liczba urządzeń z Androidem 7.0 obsługuje uwierzytelnianie klucza na poziomie sprzętu. Wszystkie inne urządzenia z Androidem 7.0 używają zamiast tego uwierzytelniania klucza na poziomie oprogramowania. Zanim zweryfikujemy usługi wspieranych sprzętowo kluczy w środowisku produkcyjnym należy upewnić się, że urządzenie obsługuje atestację kluczy na poziomie sprzętowym. Do sprawdź, czy łańcuch certyfikatów atestu zawiera element główny który jest podpisany kluczem głównym atestu Google oraz że Element attestationSecurityLevel w kluczu opis, dla struktury danych wybrano poziom zabezpieczeń TrustedEnvironment. na poziomie 300%.

Więcej informacji: Atestacja klucza dokumentacji dla deweloperów.

Konfiguracja zabezpieczeń sieci

W Androidzie 7.0 aplikacje mogą dostosować działanie swoich bezpiecznych (HTTPS, TLS) w bezpiecznych połączeniach, bez konieczności modyfikowania kodu, za pomocą funkcji deklaratywnej Konfiguracja zabezpieczeń sieci zamiast konwencjonalnego podatnych na błędy interfejsów API automatyzacji (np. X509TrustManager).

Obsługiwane funkcje:

  • Niestandardowe kotwicy zaufania Pozwala aplikacji dostosować Urzędy certyfikacji (CA) są zaufane ze względu na bezpieczne połączenia. Dla: na przykład ufania określonym samodzielnie podpisanym certyfikatom lub ograniczonemu zbiorowi publicznych urzędów certyfikacji.
  • Zastąpienia tylko do debugowania. Umożliwia deweloperowi bezpieczne debugowanie połączeń zabezpieczonych w aplikacji bez zwiększania ryzyka dla zainstalowanej bazy.
  • Rezygnacja z ruchu związanego z czystym tekstem. Pozwala aplikacji na ochronę przed przypadkowe wykorzystanie ruchu nieszyfrowanego.
  • Przypinanie certyfikatów. Zaawansowana funkcja, która umożliwia aplikacji określ, które klucze serwera są zaufane dla bezpiecznych połączeń.

Więcej informacji znajdziesz w artykule Konfigurowanie zabezpieczeń sieci.

Domyślny zaufany urząd certyfikacji

Domyślnie aplikacje kierowane na Androida 7.0 ufają tylko certyfikatom dostarczonym przez system i przestań ufać urzędom certyfikacji dodawanym przez użytkowników. Aplikacje kierowane na Androida 7.0 (poziom interfejsu API 24), które mają ufać urzędom certyfikacji dodanym przez użytkownika, powinny używać konfiguracji zabezpieczeń sieci, aby określić, jak należy ufać urzędom certyfikacji użytkownika.

Schemat podpisu pliku APK w wersji 2

Android 7.0 wprowadza schemat podpisu plików APK w wersji 2 – nowy schemat podpisywania aplikacji, który Krótszy czas instalacji aplikacji i większa ochrona przed nieautoryzowanymi modyfikacje plików APK. Domyślnie Android Studio 2.2 i wtyczka Androida do obsługi Gradle 2.2 podpisują aplikację przy użyciu schematu podpisu APK w wersji 2 oraz tradycyjnego schematu podpisywania, który wykorzystuje podpisywanie JAR.

Zalecamy zastosowanie do aplikacji schematu podpisu plików APK w wersji 2, jednak schemat nie jest wymagany. Jeśli aplikacja nie kompiluje się prawidłowo podczas korzystania z pliku APK Schemat podpisu w wersji 2, możesz wyłączyć nowy schemat. Proces wyłączania powoduje, że Android Studio 2.2 i wtyczka Androida do Gradle 2.2 podpisują aplikację tylko przy użyciu tradycyjnego schematu podpisywania. Do podpisywania tylko tradycyjnie otwórz plik build.gradle na poziomie modułu, a następnie dodaj wiersz v2SigningEnabled false do podpisywania wersji Konfiguracja:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

Uwaga: jeśli podpisujesz aplikację za pomocą pliku APK schemat podpisu w wersji 2 i wprowadź dalsze zmiany w aplikacji, podpisie aplikacji; jest unieważniony. Dlatego warto używać takich narzędzi jak zipalign przed podpisaniem aplikacji za pomocą schematu podpisu plików APK w wersji 2, a nie później.

Więcej informacji znajdziesz w dokumentach dotyczących usługi Android Studio podpisać aplikację w Android Studio oraz skonfigurować plik kompilacji do podpisywania aplikacji za pomocą wtyczki Androida do Gradle.

Ograniczony dostęp do katalogu

W Androidzie 7.0 aplikacje mogą używać nowych interfejsów API do żądania dostępu do określonych katalogów zewnętrznej pamięci masowej, w tym katalogów na wymiennych nośnikach, takich jak karty SD. Nowe interfejsy API znacznie upraszczają dostęp aplikacji do standardowych interfejsów zewnętrznych katalogów pamięci masowej, takich jak Pictures. aplikacji; np. aplikacje do zdjęć, mogą korzystać z tych interfejsów API, READ_EXTERNAL_STORAGE, który przyznaje dostęp do całego miejsca na dane lub platformę Storage Access Framework, dzięki której użytkownik przechodzi do katalogu.

Co więcej, nowe interfejsy API upraszczają proces przyznawania użytkownikom zewnętrznym dostępu do pamięci Twojej aplikacji. Przy korzystaniu z nowych interfejsów API system używa prostego interfejs uprawnień z wyraźnym opisem, do jakiego katalogu jest aplikacja proszą o dostęp.

Więcej informacji znajdziesz w dokumentacji dla deweloperów dotyczącej dostępu do katalogu ograniczonego.

Asystent skrótów klawiszowych

W Androidzie 7.0 użytkownik może nacisnąć Meta + /, aby wywołać ekran Skróty klawiatury, na którym wyświetlają się wszystkie skróty dostępne zarówno w systemie, jak i w aplikacji, na której jest skupiona uwaga. System pobiera te automatycznie skróty w menu aplikacji, jeśli takie skróty istnieją. Dostępne opcje możesz też dodać własną listę skrótów dla swojego ekranu. Możesz zrobić to przez zastąpienie metody onProvideKeyboardShortcuts().

Uwaga: klawisz Meta nie występuje na wszystkich klawiaturach: na klawiaturze Macintosha jest to klawisz Command, na klawiaturze Windowsa – klawisz Windows, a na klawiaturze Pixela C i ChromeOS – klawisz Wyszukaj.

Aby aktywować Asystenta skrótów klawiszowych z dowolnego miejsca w aplikacji, wpisz requestShowKeyboardShortcuts() z danej aktywności.

Interfejs Custom Pointer API

W Androidzie 7.0 wprowadziliśmy interfejs Custom Pointer API wygląd, widoczność i działanie wskaźnika. Ta funkcja jest szczególnie przydatne, gdy użytkownik korzysta z myszy lub touchpada. obiekty interfejsu. Domyślny wskaźnik ma standardową ikonę. Ten interfejs API obejmuje również zaawansowane funkcje, takie jak zmienianie wyglądu ikony wskaźnika związane z określonymi ruchami myszki lub touchpada.

Aby ustawić ikonę wskaźnika, zastąp onResolvePointerIcon() klasy View. Ta metoda korzysta z PointerIcon obiekt, aby narysować ikonę odpowiadającą konkretne zdarzenie ruchu.

Interfejs Sustained Performance API

W przypadku długoterminowych aplikacji wydajność może znacznie się wahać, ponieważ ogranicza silniki oparte na układach scalonych, gdy komponenty urządzeń limitów temperatury. Te fluktuacje stanowią ruchomy cel w przypadku aplikacji dla deweloperów tworzących skuteczne i działające od dawna aplikacje.

Aby rozwiązać te ograniczenia, Android 7.0 obsługuje tryb ciągłej wydajności, który umożliwia producentom urządzeń OEM podawanie wskazówek dotyczących możliwości wydajności urządzenia w przypadku długo działających aplikacji. Deweloperzy aplikacji mogą wykorzystać te wskazówki, by dostosować aplikacje pod kątem stałą wydajność urządzenia przez dłuższy czas.

Deweloperzy aplikacji mogą wypróbować ten nowy interfejs API w Androidzie 7.0 na Tylko urządzenia Nexus 6P. Aby użyć tej funkcji, ustaw flagę okna o stałej wydajności dla tego okna jeśli chcesz zachować ciągłość działania. Ustaw tę flagę za pomocą Metoda Window.setSustainedPerformanceMode(). System automatycznie wyłącza ten tryb, gdy okno nie jest już aktywne.

Pomoc VR

Android 7.0 wprowadza obsługę platformy i optymalizacje dla nowego trybu VR, aby umożliwić deweloperom tworzyć wysokiej jakości rzeczywistość wirtualną na urządzeniach mobilnych. W YouTube można znaleźć wiele filmów np. dostęp do rdzeni procesora przeznaczonego wyłącznie do aplikacji VR. W aplikacjach możesz korzystać z inteligentnego śledzenia ruchów głowy, i powiadomienia stereo, które działają w rzeczywistości wirtualnej. Co najważniejsze, Android 7.0 grafikę z bardzo małym opóźnieniem. Aby uzyskać pełne informacje o tworzeniu aplikacji VR na Androida 7.0, Więcej informacji znajdziesz w artykule Pakiet SDK Google VR na Androida.

W Androidzie 7.0 deweloperzy usług drukowania mogą wyświetlać dodatkowe informacje o poszczególnych drukarkach i zadaniach drukowania.

Przy wyświetlaniu listy pojedynczych drukarek usługa drukowania może teraz określić tylko jedną z nich. na dwa sposoby:

Możesz też określić aktywność dla każdej drukarki, aby wyświetlić dodatkowe aby dowiedzieć się więcej, zadzwoń pod numer setInfoIntent().

Możesz wskazywać postęp i stan zadań drukowania w ramach zadania drukowania. powiadomienie przez telefon setProgress() i setStatus().

Interfejs Frame Metrics API

Interfejs Frame Metrics API umożliwia aplikacji monitorowanie renderowania UI skuteczność reklam. Interfejs API zapewnia tę funkcję, udostępniając interfejs Pub/Sub API do przesyłania strumieniowego informacji o czasie trwania ramki w bieżącym oknie aplikacji. Zwracane dane są odpowiednik tej, która wyświetla się adb shell dumpsys gfxinfo framestats, ale nie tylko ostatnich 120 klatek.

Do pomiaru interfejsu użytkownika na poziomie interakcji możesz używać interfejsu Frame Metrics API. i wydajność w środowisku produkcyjnym bez połączenia USB. Ten interfejs API umożliwia zbieranie danych na znacznie większej szczegółowości niż ma to miejsce adb shell dumpsys gfxinfo Taki wyższy poziom szczegółowości jest możliwy, ponieważ system może zbierać dane dotyczące określonych interakcji w aplikacji; system nie muszą zawierać globalnego podsumowania całej aplikacji, jak zwiększyć skuteczność kampanii lub usunąć jakikolwiek stan globalny. Możesz użyć tej możliwość gromadzenia danych o wydajności i wykrywania spadków wydajności interfejsu użytkownika. do rzeczywistych przypadków użycia w aplikacji.

Aby monitorować okno, zaimplementuj metodę wywołania zwrotnego OnFrameMetricsAvailableListener.onFrameMetricsAvailable() i zarejestruj ją w tym oknie.

Interfejs API udostępnia obiekt FrameMetrics, który zawiera dane o czasie, które podsystem renderuje dla różnych etapów w cyklu życia ramki. Obsługiwane dane to: UNKNOWN_DELAY_DURATION, INPUT_HANDLING_DURATION, ANIMATION_DURATION LAYOUT_MEASURE_DURATION, DRAW_DURATION, SYNC_DURATION, COMMAND_ISSUE_DURATION, SWAP_BUFFERS_DURATION, TOTAL_DURATION i FIRST_DRAW_FRAME.

Pliki wirtualne

W poprzednich wersjach Androida aplikacja mogła używać platformy Storage Access Framework, aby umożliwić użytkownikom wybieranie plików z ich kont w chmurze, takich jak Dysk Google. Nie było jednak sposobu odzwierciedlenia tych plików. nie mogą być reprezentowane przez bezpośredni kod bajtowy; każdy plik był wymagany, strumienia danych wejściowych.

Android 7.0 wprowadza pliki wirtualne w ramach dostępu do pamięci Platforma. Funkcja plików wirtualnych umożliwia DocumentsProvider, aby zwracać identyfikatory URI dokumentów, które mogą być używane z intencją ACTION_VIEW, nawet jeśli nie mają bezpośredniej reprezentacji kodu bajtowego. Android 7.0 umożliwia też udostępniać alternatywne formaty plików użytkownika, wirtualne lub inne.

Więcej informacji o otwieraniu plików wirtualnych znajdziesz tutaj: Otwórz pliki wirtualne w Przewodnik po platformach dostępu do pamięci masowej.