Android 7.0 dla deweloperó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.

Sprawdź Zmienia się sposób działania Androida 7.0, by dowiedzieć się, w jakich obszarach zmienia się platforma może mieć wpływ 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ć 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.

Można łatwo dodać do aplikacji obsługę wielu okien i skonfigurować sposób jej używania. obsługuje wyświetlanie wielu okien. 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 artykule Obsługa wielu okien. dokumentacji dla deweloperów.

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łu rozmowy i widoku 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 tworzy profil popularnych metod każdej aplikacji i może prekompilować i zapisywać w pamięci podręcznej te metody, 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 na urządzeniach 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

Jedną z najbardziej widocznych zalet kompilatora JIT ART jest szybkość działania instalacje i aktualizacje 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.

Teraz w Androidzie 7.0 Uśpienie to krok dalej i oszczędza baterię, gdziekolwiek jesteś. Zawsze gdy ekran jest wyłączony na jakiś czas, a urządzenie jest odłączone od zasilania, Uśpienie stosuje do aplikacji podzbiór znanych ograniczeń dotyczących procesora i sieci. Oznacza to, że użytkownicy mogą oszczędzać baterię nawet wtedy, gdy mają przy sobie urządzenie kieszeni.

Ilustracja przedstawiająca, jak Uśpienie stosuje pierwszy poziom ograniczeń aktywności systemu, aby wydłużyć czas pracy na baterii

Rysunek 3. Włącza się drzemka ograniczenia w celu poprawy żywotności baterii, nawet gdy urządzenie nie jest stojące.

Uśpienie krótko po wyłączeniu ekranu, gdy urządzenie jest na baterii ogranicza dostęp do sieci oraz opóźnia zadania i synchronizacje. Podczas krótkiej konserwacji okna, aplikacje mogą uzyskiwać dostęp do sieci, a wszelkie ich odroczone są wykonywane zadania/synchronizacje. 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. Gdy przetwarzanie w tle nie jest obsługiwane, może zużywać pamięć RAM (oraz baterii) i wpływają na wydajność systemu w przypadku 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ę jest łatwa do opanowania i chcemy, aby używały jej 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 do Twoich celów – 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 trafia do Twojej aplikacji, skorzystaj z Androida 7.0, przenieść je do JobScheduler i powiązanych z nimi interfejsów 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 kompilowanie na ekranu, ponieważ jest umieszczone na specjalnym sprzęcie, niezależnie od aplikacji zawartość okna. Oznacza to, że użytkownicy nie są średnio zaawansowani 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 zostanie w sieci z pomiarem użycia danych system blokuje użycie danych w tle i sygnalizuje aplikacje, aby wykorzystywać mniej danych na pierwszym planie tam, gdzie to możliwe – na przykład przez ograniczenie szybkość transmisji bitów, zmniejszająca jakość obrazu, opóźniające optymistyczne wstępne wczytywanie i tak dalej. 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 ConnectivityManager o aplikacje aby pobrać wybrane przez użytkownika ustawienia Oszczędzania danych oraz monitorowanie zmian preferencji. 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 pozwoli 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 Tile 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 połączeniach są blokowane także w SMS-ach
  • 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 połączenie z rejestrem połączeń
  • Nie pokazuj użytkownikowi powiadomienia o połączeniu

Więcej informacji znajdziesz w dokumentacji referencyjnej 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 odmian. 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 dotycząca 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 oznaczeń dotyczących emotikonów w różnych odcieniach skóry, które powinny umożliwiać użytkownikom i wybiorą preferowany odcień skóry. Aby określić, które emotikony systemowe modyfikatorów odcieni skóry, użyj funkcji hasGlyph(String) . Aby sprawdzić, które emotikony używają odcieni skóry, przeczytaj Dokumentacja 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 używasz już pakietu ICU4J w przez przejście na interfejsy API android.icu udostępniane przez system Android może zapewnić znaczne oszczędności rozmiaru 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 (począwszy od wersji 51), 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.

Chcemy poznać opinie na temat zgodności i wydajności środowiska wykonawczego w języku N. przed włączeniem wieloprocesowego komponentu WebView w przyszłej wersji Androida. 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, poinformuj nas o tym . 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 pierwszej strony wczytanej do 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

Od aplikacji kierowanych na Androida 7.0 interfejs API geolokalizacji będzie dozwolone w bezpiecznych źródłach (przez HTTPS). Ta zasada ma na celu ochronę prywatnych danych użytkowników podczas korzystania z niezabezpieczonego 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. Problemy zgłaszaj za pomocą Chromium , które pozwolą nam je naprawić, zanim pojawi się nowa wersja komponentu WebView został zwolniony.

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 platformy OpenGL ES 3.2 w systemie Android 7.0 jest dostarczany z GLES32 zajęcia. Jeśli korzystasz z OpenGL ES 3.2, zadeklaruj 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 for Work dodaje wiele nowych funkcji i interfejsów API na urządzenia 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 wyświetla się, gdy użytkownik próbuje otworzyć plik wszystkich aplikacji służbowych. 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. Profil właściciel może też ustawić blokadę urządzenia za pomocą DevicePolicyManager instancję zwracaną 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 pracy jest wyłączony, system wyświetla stały stan przypominająca 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.

Ulepszenia ułatwień 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. Testuj aplikacje po włączeniu tych ustawień. 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 takich jak śledzenie twarzy, śledzenie oczu, skanowanie punktowe itd., aby spełniają potrzeby tych użytkowników.

Więcej informacji znajdziesz w dokumentacji referencyjnej 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 uruchomić w tym trybie, możesz zarejestrować ustaw 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. Dopóki użytkownik nie potwierdzi blokady, żadne inne dane będą niedostępne dane logowania do ekranu i odszyfrować dane.

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 to pozwala też korzystać z innych narzędzi poza urządzeniem, np. serwera backendu aplikacji, w celu określenia należy zdecydowanie zweryfikować użycie i poprawność 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ługa atestu klucza na poziomie sprzętu; wszystkie pozostałe urządzenia z Androidem 7.0 użyj atestu 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ń sieciowych zamiast konwencjonalnego podatnych na błędy interfejsów API automatyzacji (np. X509TrustManager).

Obsługiwane funkcje:

  • Niestandardowe kotwice 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 aplikacji bezpieczne debugowanie bezpiecznych połączeń aplikacji bez dodatkowego ryzyka dla zainstalowanych wiele instalacji.
  • 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 chcą ufać urzędom certyfikacji dodawanym przez użytkowników, powinni używać parametru Konfiguracja zabezpieczeń sieci na określają sposób, w jaki urzędy certyfikacji mają być zaufane.

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 Android Wtyczka do Gradle 2.2 podpisuje aplikację przy użyciu schematu podpisu plików APK w wersji 2 oraz tradycyjnego schematu podpisywania, który korzysta z podpisywania plików 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 sprawia, że Android Studio 2.2 i wtyczka Androida do obsługi Gradle 2.2 podpisują używając wyłącznie 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 po.

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, by żądać dostępu do określonych zewnętrznych interfejsów API katalogi pamięci masowej, w tym katalogi na nośnikach wymiennych, takich jak SD. karty. 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: Zakres Dostęp do katalogu w dokumentacji dla deweloperów.

Asystent skrótów klawiszowych

W Androidzie 7.0 użytkownik może nacisnąć Meta + /, aby wywołać Ekran Skróty klawiszowe, na którym wyświetlane są wszystkie skróty dostępne zarówno z systemu i aplikacji. 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: klucz Meta nie jest widoczny na wszystkich na klawiaturze Maca: na klawiaturze Maca jest to klawisz Command, na klawiaturze Windows jest klawisz Windows, a na klawiaturze na klawiaturze Pixela C i klawiatury ChromeOS, jest to klawisz wyszukiwania.

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 sprostać tym ograniczeniom, Android 7.0 obsługuje tryb utrzymania wydajności, dzięki któremu producenci OEM mogą przekazywać wydajność 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 programiści usług drukowania mogą teraz 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. Zapewnia tę możliwość, wyświetlając interfejs API typu Pub/Sub w celu przeniesienia ramki informacje o czasie 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 OnFrameMetricsAvailableListener.onFrameMetricsAvailable() wywołania zwrotnego 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 korzystać z dostępu do pamięci platformę umożliwiającą użytkownikom wybieranie plików z 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.