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](https://developer.android.com/static/images/android-7.0/mw-portrait.png?authuser=9&hl=pl)
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](https://developer.android.com/static/images/android-7.0/notifications-1.png?authuser=9&hl=pl)
![Urządzenie mobilne wyświetla powiadomienie o pojedynczej wiadomości](https://developer.android.com/static/images/android-7.0/notifications-3.png?authuser=9&hl=pl)
![Urządzenie mobilne wyświetlające w tekście odpowiedź w treści w interfejsie powiadomień](https://developer.android.com/static/images/android-7.0/notifications-2.png?authuser=9&hl=pl)
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](https://developer.android.com/static/images/android-7.0/doze-diagram-1.png?authuser=9&hl=pl)
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
.
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](https://developer.android.com/static/images/android-7.0/datasaver.png?authuser=9&hl=pl)
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ń](https://developer.android.com/static/images/android-7.0/quicksettings.png?authuser=9&hl=pl)
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 DevicePolicyManager
są
setAlwaysOnVpnPackage()
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.
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.
Ulepszenia usługi drukowania
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 ustawić ikonę z identyfikatora zasobu, wywołując
setIconResourceId()
- Możesz wyświetlić ikonę sieci, dzwoniąc
setHasCustomPrinterIcon()
, i ustawić wywołanie zwrotne dotyczące żądania ikony za pomocąonRequestCustomPrinterIcon()
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.