Google I/O 2016 для разработчиков

28
Google I/O 2016 for developers

Transcript of Google I/O 2016 для разработчиков

Page 1: Google I/O 2016 для разработчиков

Google I/O 2016for developers

Page 2: Google I/O 2016 для разработчиков

Новые инструменты

- поддержка JDK 8

- многопроцессорный WebView

- новый набор слоев Constrain Layout

- JIT компилятор

- набор инструментов Jack

- Android Studio 2.2

Page 3: Google I/O 2016 для разработчиков

Что нового в Android

- поддержка многооконного режима

- изменения в производительности

- режим сна на ходу (Doze mode)

- оптимизация фоновых процессов

- экономия трафика

...

Page 4: Google I/O 2016 для разработчиков

Поддержка Java 8

Доступны новые функции:

- Default methods https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

- Lambda expressions https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

- Repeating anotations https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html

Кроме того, доступны следующие API-интерфейсы для реализации возможностей языка Java 8. API-интерфейсы

отражения и языковых функций:

- java.lang.FunctionalInterface;

- java.lang.annotation.Repeatable;

- java.lang.reflect.Method.isDefault();

- а также API-интерфейсы отражения, связанные с повторяющимися примечаниями, например,

AnnotatedElement.getAnnotationsByType(Class).

Для использования новых возможностей языка Java 8 необходимо также использовать новый набор инструментов

Jack. С его помощью Android компилирует языковой источник Java в считываемый Android байткод Dalvik Executable

(dex). В Jack предусмотрен собственный формат библиотеки .jack.

Page 5: Google I/O 2016 для разработчиков

Многопроцессорный WebView

Page 6: Google I/O 2016 для разработчиков

JIT компилятор

Профильная динамическая/предварительная компиляция

- постоянное улучшение производительности во время работы приложения за счет динамического

JIT компилятора

- экономия потребления памяти

- профильная компиляция позволяет ART управлять JIT компиляцией каждого приложения в

соответствии с его фактическим использованием и характеристикам устройства

- для экономии заряда предварительная компиляция выполняется только тогда, когда устройство

не используется

Быстрый способ установки приложений

- благодаря JIT компилятору обновление приложений или их установка стала быстрее, время

сократилось с минут до считанных секунд

- обновление системы так же стало быстрее

Page 7: Google I/O 2016 для разработчиков

JACK

Набор инструментов который необходим для работы с Java 8.

Старый набор инструментов javac:

- javac (.java --> .class) --> dx (.class --> .dex)

Новый набор инструментов Jack:

- Jack (.java --> .jack --> .dex)

Google says: you have Jack, but…- он не работает в режиме Instant Run

- он не работает с Lint

- не работает с другими библиотеками которым требуются файлы классов приложения такие как (Mockito,

JaCoCo)

Page 8: Google I/O 2016 для разработчиков

Android Studio 2.2

- Layout Editor даст возможность быстро

редактировать макеты

- Constraint Layout новый макет который

позволит строить более сложные

интерфейсы

- Layout Inspector отладит изображение

макета запущенного приложения,

проверит иерархию представлений и

соответствующих атрибутов

- FireBase плагин

- Обновленный анализатор кода

- Manifest Viewer диагностика манифеста

- APK анализатор

Page 9: Google I/O 2016 для разработчиков

Constraint Layout

Новый ViewGroup позволяет описать сложные связи между

View без использования вложенных лейаутов. Удобное

визуальное редактирование в новой версии Android Studio.

https://codelabs.developers.google.com/codelabs/constraint-

layout/index.html#5

Page 10: Google I/O 2016 для разработчиков

Редактор макетов - Layout Editor

Подробнее http://android-developers.blogspot.de/2016/05/android-studio-22-preview-new-ui.html

Page 11: Google I/O 2016 для разработчиков

Многооконный режим

Page 12: Google I/O 2016 для разработчиков

Уведомления

- мгновенный ответ

- группировка уведомлений,

сортировка в группе

- работает с версии API 21

- кастомизация представлений

Page 13: Google I/O 2016 для разработчиков

Производительность

Чтобы устранить проблемы производительности, в

N Developer Preview применяются следующие

ограничения.

Приложения для версии Preview не получают

рассылок CONNECTIVITY_ACTION, если они

не зарегистрированы для получения рассылок

в манифесте. Приложения в активном режиме

по-прежнему могут прослушивать

CONNECTIVITY_CHANGE в главном потоке,

зарегистрировав BroadcastReceiverс помощью

метода Context.registerReceiver().

Приложения не могут отправлять или получать

широковещательные сообщения

ACTION_NEW_PICTURE и

ACTION_NEW_VIDEO. Эта оптимизация

затрагивает все приложения, а не только

предназначенные для версии Preview.

Page 14: Google I/O 2016 для разработчиков

Doze mode

- переходит в данный режим при

блокировке экрана

- останавливает процессы

синхронизации и ограничивает сетевой

доступ

- выход из режима при разблокировке

или подключении к источнику питания

* Приложения, которые используют WiFi и

отслеживают место положение или

выполняют другие фоновые процессы

должны быть адаптированы под Doze mode.

https://developer.android.com/training/monitorin

g-device-state/doze-

standby.html#assessing_your_app

Page 15: Google I/O 2016 для разработчиков

Проект Svelte: оптимизация фоновых процессов

- появилось ограничение на получение рассылок

CONNECTIVITY_ACTION- приложения по прежнему могут прослушивать в

основном потоке

CONNECTIVITY_CHANGE

- приложения не могут отправлять и получать

широковещательные сообщения ACTION_NEW_PICTURE,

ACTION_NEW_VIDEO- планирование сетевых заданий для безлимитных

подключений

- тригер на отслеживание URI контента

* Если ваше приложение использует эти рассылки, то

нужно от них отказаться в пользу:

- планировщик сетевых операций JobScheduler и

GcmNetworkManager

Page 16: Google I/O 2016 для разработчиков

Экономия трафика

- отслеживание настроек ограничения трафика

через ConnectivityManager

- все приложения должны проверять включена ли

экономия трафика и пытаться их ограничивать в

фоновом и активном режиме.

Page 17: Google I/O 2016 для разработчиков

API панель быстрых настроек

- Добавлено пространство для дополнительных плиток быстрых

настроек к которым можно обратиться с разбитой на страницы

области экрана, проведя пальцем влево или вправо. Пользователи

также могут контролировать состав и место отображения этих

элементов – их можно добавлять или двигать обычным

перетаскиванием.

- Для разработчиков Android N также предлагает новый API, который

позволяет определить собственные плитки быстрых настроек для

удобного доступа пользователей к основным элементам

управления и действиям вашего приложения.

- Плитки быстрых настроек резервируются для элементов

управления или действий, которые либо требуются срочно, либо

часто используются. Их не следует использовать в качестве

ярлыков для запуска приложений.

- После определения плитки можно показать пользователям,

которые смогут добавить их на панель быстрых настроек обычным

перетаскиванием.

Page 18: Google I/O 2016 для разработчиков

Изменения разрешений

Изменены разрешения которые могут повлиять на

приложения:

- управление аккаунтами пользователя (устарело)

- запись данных в локальное хранилище (новое)

Page 19: Google I/O 2016 для разработчиков

Улучшение специальных возможностей

Возможность масштабировать экран.

Может влиять на приложение:- если приложение предназначено для уровня API 23 или ниже, то

при изменении масштаба система автоматом завершает все его

фоновые процессы

- если для версии 23 и выше, то приложение продолжает работать

Важные моменты

- Вы должны протестировать свое приложение и убедиться, что оно

не будет работать подобным образом. Для этого можно вызвать

аналогичную ошибку, принудительно завершив процесс приложения

через DDMS

- Приложения для N и последующих версий Android не завершаются

автоматически при изменении плотности экрана, однако они могут

плохо реагировать на изменение конфигурации

- Приложения для Android N должны уметь корректно обрабатывать

изменения конфигурации и не должны завершаться с ошибкой при

последующих запусках. Вы можете проверить поведение

приложения, изменив размер шрифта (Setting > Display > Font

size) и перезапустив затем приложение с экрана последних задач

Page 20: Google I/O 2016 для разработчиков

Блокировка номеров и фильтрация вызова

Платформа Android N теперь поддерживает блокировку номеров и предоставляет API-интерфейс платформы, который

позволяет поставщикам услуг вести список блокируемых номеров. Этот список доступен для чтения и записи

стандартным приложениям для СМС, звонков и приложениям поставщика. Для других приложений это список

недоступен.

Приложения получают следующие преимущества:

- Номера, блокируемые при вызовах, также блокируются в текстовых сообщениях.

- Заблокированные номера могут быть сохранены при переустановках и переносах на другие устройства с

помощью функции резервного копирования и восстановления.

- Разные приложения могут использовать один и тот же список блокируемых номеров.

Android N дает возможность стандартному приложению для звонков фильтровать входящие вызовы. Для этого в

приложении для звонков реализована новая служба CallScreeningService, которая позволяет приложению выполнять

ряд действий на основании Call.Details входящего вызова, например:

- отклонить входящий вызов;

- не регистрировать вызов в журнале вызовов;

- не показывать пользователю уведомление о вызове.

Page 21: Google I/O 2016 для разработчиков

Режим Direct Boot

Режим Direct Boot:

- ускоряет загрузку устройства

- позволяет зарегистрированным приложениям

сохранить ограниченную функциональность

даже после непредвиденной перезагрузки

Page 22: Google I/O 2016 для разработчиков

Список языков

- пользователь может задать

несколько языков

- приложение через API LocaList

может получать набор выбранных

языков

Page 23: Google I/O 2016 для разработчиков

Обновление Google Play services 9.0

Ads

- новый нативный формат Native Ads Express

- теперь можно с помощью css задавать свой стиль рекламному блоку

- перерисовка рекламного блока без дополнительного запроса

Nearby

- обновилась работа с BLE маяками, любое приложение с ACCESS_FINE_LOCATION сможет сканировать

маяки без дополнительных разрешений

- изменилось условие использования в приложении местоположения пользователя, теперь после

подтверждения сразу включается GPS

Video API

- появится возможность стриминга видео

- моментальное добавления видео на YouTube

Page 24: Google I/O 2016 для разработчиков

Расширение функционала Firebase

- аналитика

- монетизация через AdMob

- Notification и динамические ссылки

- система учета крашей

- FCM (back-end)

Page 25: Google I/O 2016 для разработчиков

Instant Apps

- доступно с 16-й API

- для работы в режиме Instant Apps должно быть два файла

(артефакта)

- важно понимать что это дополнение (promo) основного

приложения, но не замена его

- на старых устройствах имеет место быть workaround

- добавление артефактов происходит через консоль загрузки

приложений

- чтобы получить документацию к API необходимо

зарегистрироваться

Page 26: Google I/O 2016 для разработчиков

Приложение Developer Console

Page 27: Google I/O 2016 для разработчиков

Android Wear 2.0

- Standalone Apps, Data Layer APIs

- расширили возможность Complication API

- Input methods, позволяет ввод с клавиатуры или

рукописный ввод

- улучшение платформы Google Fit

Page 28: Google I/O 2016 для разработчиков

Спасибо за внимание!