Google I/O 2016 для разработчиков
Transcript of Google I/O 2016 для разработчиков
Google I/O 2016for developers
Новые инструменты
- поддержка JDK 8
- многопроцессорный WebView
- новый набор слоев Constrain Layout
- JIT компилятор
- набор инструментов Jack
- Android Studio 2.2
Что нового в Android
- поддержка многооконного режима
- изменения в производительности
- режим сна на ходу (Doze mode)
- оптимизация фоновых процессов
- экономия трафика
...
Поддержка 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.
Многопроцессорный WebView
JIT компилятор
Профильная динамическая/предварительная компиляция
- постоянное улучшение производительности во время работы приложения за счет динамического
JIT компилятора
- экономия потребления памяти
- профильная компиляция позволяет ART управлять JIT компиляцией каждого приложения в
соответствии с его фактическим использованием и характеристикам устройства
- для экономии заряда предварительная компиляция выполняется только тогда, когда устройство
не используется
Быстрый способ установки приложений
- благодаря JIT компилятору обновление приложений или их установка стала быстрее, время
сократилось с минут до считанных секунд
- обновление системы так же стало быстрее
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)
Android Studio 2.2
- Layout Editor даст возможность быстро
редактировать макеты
- Constraint Layout новый макет который
позволит строить более сложные
интерфейсы
- Layout Inspector отладит изображение
макета запущенного приложения,
проверит иерархию представлений и
соответствующих атрибутов
- FireBase плагин
- Обновленный анализатор кода
- Manifest Viewer диагностика манифеста
- APK анализатор
Constraint Layout
Новый ViewGroup позволяет описать сложные связи между
View без использования вложенных лейаутов. Удобное
визуальное редактирование в новой версии Android Studio.
https://codelabs.developers.google.com/codelabs/constraint-
layout/index.html#5
Редактор макетов - Layout Editor
Подробнее http://android-developers.blogspot.de/2016/05/android-studio-22-preview-new-ui.html
Многооконный режим
Уведомления
- мгновенный ответ
- группировка уведомлений,
сортировка в группе
- работает с версии API 21
- кастомизация представлений
Производительность
Чтобы устранить проблемы производительности, в
N Developer Preview применяются следующие
ограничения.
Приложения для версии Preview не получают
рассылок CONNECTIVITY_ACTION, если они
не зарегистрированы для получения рассылок
в манифесте. Приложения в активном режиме
по-прежнему могут прослушивать
CONNECTIVITY_CHANGE в главном потоке,
зарегистрировав BroadcastReceiverс помощью
метода Context.registerReceiver().
Приложения не могут отправлять или получать
широковещательные сообщения
ACTION_NEW_PICTURE и
ACTION_NEW_VIDEO. Эта оптимизация
затрагивает все приложения, а не только
предназначенные для версии Preview.
Doze mode
- переходит в данный режим при
блокировке экрана
- останавливает процессы
синхронизации и ограничивает сетевой
доступ
- выход из режима при разблокировке
или подключении к источнику питания
* Приложения, которые используют WiFi и
отслеживают место положение или
выполняют другие фоновые процессы
должны быть адаптированы под Doze mode.
https://developer.android.com/training/monitorin
g-device-state/doze-
standby.html#assessing_your_app
Проект Svelte: оптимизация фоновых процессов
- появилось ограничение на получение рассылок
CONNECTIVITY_ACTION- приложения по прежнему могут прослушивать в
основном потоке
CONNECTIVITY_CHANGE
- приложения не могут отправлять и получать
широковещательные сообщения ACTION_NEW_PICTURE,
ACTION_NEW_VIDEO- планирование сетевых заданий для безлимитных
подключений
- тригер на отслеживание URI контента
* Если ваше приложение использует эти рассылки, то
нужно от них отказаться в пользу:
- планировщик сетевых операций JobScheduler и
GcmNetworkManager
Экономия трафика
- отслеживание настроек ограничения трафика
через ConnectivityManager
- все приложения должны проверять включена ли
экономия трафика и пытаться их ограничивать в
фоновом и активном режиме.
API панель быстрых настроек
- Добавлено пространство для дополнительных плиток быстрых
настроек к которым можно обратиться с разбитой на страницы
области экрана, проведя пальцем влево или вправо. Пользователи
также могут контролировать состав и место отображения этих
элементов – их можно добавлять или двигать обычным
перетаскиванием.
- Для разработчиков Android N также предлагает новый API, который
позволяет определить собственные плитки быстрых настроек для
удобного доступа пользователей к основным элементам
управления и действиям вашего приложения.
- Плитки быстрых настроек резервируются для элементов
управления или действий, которые либо требуются срочно, либо
часто используются. Их не следует использовать в качестве
ярлыков для запуска приложений.
- После определения плитки можно показать пользователям,
которые смогут добавить их на панель быстрых настроек обычным
перетаскиванием.
Изменения разрешений
Изменены разрешения которые могут повлиять на
приложения:
- управление аккаунтами пользователя (устарело)
- запись данных в локальное хранилище (новое)
Улучшение специальных возможностей
Возможность масштабировать экран.
Может влиять на приложение:- если приложение предназначено для уровня API 23 или ниже, то
при изменении масштаба система автоматом завершает все его
фоновые процессы
- если для версии 23 и выше, то приложение продолжает работать
Важные моменты
- Вы должны протестировать свое приложение и убедиться, что оно
не будет работать подобным образом. Для этого можно вызвать
аналогичную ошибку, принудительно завершив процесс приложения
через DDMS
- Приложения для N и последующих версий Android не завершаются
автоматически при изменении плотности экрана, однако они могут
плохо реагировать на изменение конфигурации
- Приложения для Android N должны уметь корректно обрабатывать
изменения конфигурации и не должны завершаться с ошибкой при
последующих запусках. Вы можете проверить поведение
приложения, изменив размер шрифта (Setting > Display > Font
size) и перезапустив затем приложение с экрана последних задач
Блокировка номеров и фильтрация вызова
Платформа Android N теперь поддерживает блокировку номеров и предоставляет API-интерфейс платформы, который
позволяет поставщикам услуг вести список блокируемых номеров. Этот список доступен для чтения и записи
стандартным приложениям для СМС, звонков и приложениям поставщика. Для других приложений это список
недоступен.
Приложения получают следующие преимущества:
- Номера, блокируемые при вызовах, также блокируются в текстовых сообщениях.
- Заблокированные номера могут быть сохранены при переустановках и переносах на другие устройства с
помощью функции резервного копирования и восстановления.
- Разные приложения могут использовать один и тот же список блокируемых номеров.
Android N дает возможность стандартному приложению для звонков фильтровать входящие вызовы. Для этого в
приложении для звонков реализована новая служба CallScreeningService, которая позволяет приложению выполнять
ряд действий на основании Call.Details входящего вызова, например:
- отклонить входящий вызов;
- не регистрировать вызов в журнале вызовов;
- не показывать пользователю уведомление о вызове.
Режим Direct Boot
Режим Direct Boot:
- ускоряет загрузку устройства
- позволяет зарегистрированным приложениям
сохранить ограниченную функциональность
даже после непредвиденной перезагрузки
Список языков
- пользователь может задать
несколько языков
- приложение через API LocaList
может получать набор выбранных
языков
Обновление Google Play services 9.0
Ads
- новый нативный формат Native Ads Express
- теперь можно с помощью css задавать свой стиль рекламному блоку
- перерисовка рекламного блока без дополнительного запроса
Nearby
- обновилась работа с BLE маяками, любое приложение с ACCESS_FINE_LOCATION сможет сканировать
маяки без дополнительных разрешений
- изменилось условие использования в приложении местоположения пользователя, теперь после
подтверждения сразу включается GPS
Video API
- появится возможность стриминга видео
- моментальное добавления видео на YouTube
Расширение функционала Firebase
- аналитика
- монетизация через AdMob
- Notification и динамические ссылки
- система учета крашей
- FCM (back-end)
Instant Apps
- доступно с 16-й API
- для работы в режиме Instant Apps должно быть два файла
(артефакта)
- важно понимать что это дополнение (promo) основного
приложения, но не замена его
- на старых устройствах имеет место быть workaround
- добавление артефактов происходит через консоль загрузки
приложений
- чтобы получить документацию к API необходимо
зарегистрироваться
Приложение Developer Console
Android Wear 2.0
- Standalone Apps, Data Layer APIs
- расширили возможность Complication API
- Input methods, позволяет ввод с клавиатуры или
рукописный ввод
- улучшение платформы Google Fit
Спасибо за внимание!