- PVSM.RU - https://www.pvsm.ru -
В этой статье я расскажу о своих впечатлениях от конференции Google I/O 2019, на которой мы с коллегами побывали на днях (и даже “засветились” с нашим приложением в одной из презентаций). Она поможет вам проникнуться атмосферой и, возможно, побудит посмотреть несколько докладов, выложенных на канале Google Developers [1].
Разработчики Badoo на Google I/O 2019
Чтобы попасть на конференцию, нужно выиграть в лотерее, которая стартует в феврале на сайте Google I/O [2] (обычно об этом становится известно из новостей). Но победа не предусматривает получение билета, а лишь даёт возможность выкупить его за 1150 долларов. Есть и другие программы, которые позволяют получить билет с большой скидкой или бесплатно, например Code Jam [3]. Студенты и работники вузов могут купить билет значительно дешевле — за 375 долларов.
Перед конференцией IT-компании устраивали вечеринки для участников. Я узнал о них из чата в Telegram, в котором собралось более 150 русскоговорящих пользователей. Обычно в подобные чаты можно попасть по приглашениям из профильных Android-сообществ в Telegram. Такие вечеринки — хорошая возможность познакомиться с другими участниками конференции в неформальной обстановке. Например, мы встретили там организатора Mobius и команду разработчиков, которые делают приложение для авиапутешественников App in the Air.
Конференция проходила под лозунгом «No parking». Google организовала бесплатные автобусы от и до самых популярных отелей в окрестностях, а также выделила промокоды на сервис такси Lyft (американский конкурент Uber).
Из Badoo нас было пять разработчиков. Поехали все, кто выиграл возможность купить билет. Доклады шли в шесть—десять потоков, и часто мы разделялись, чтобы охватить больше интересных тем.
Первый день конференции открывают так называемые keynotes — общие презентации. Первая — для всех, вторая — для разработчиков.
Перед keynote человек-DJ и AI-DJ работают вместе
На первой keynote презентации рассказывали о разных проектах Google. Вот некоторые новости:
В Android 10 появятся:
На презентации для разработчиков объявили, что Kotlin теперь является основным языком программирования для Android-разработки. Google представила новую библиотеку для камеры Camera X, новый декларативный UI Jetpack Compose (судя по всему, он ещё достаточно сырой, но очень многообещающий), новые возможности для обновления приложения: разработчик сможет запрашивать обновление самостоятельно в интерфейсе приложения.
Во время каждого доклада субтитры генерируются в режиме реального времени
О складывающихся устройствах в последнее время не говорят только ленивые. Хотя сейчас они и занимают мизерную долю рынка, приложения на них должны как-то работать.
Представители Google заверили, что если следовать лучшим практикам, например правильно обрабатывать переворот экрана, то всё будет работать «из коробки». Для поддержки складывающихся устройств используется тот же механизм, что и для мультиоконности на планшетах и Chrome OS. В дополнение к уже существующему android:maxAspectRatio появится android:minAspectRatio, призванный добавить ограничения на соотношения поддерживаемых сторон в приложении. Google уверяет, что 2 дюйма (5,08 см) станет минимальной шириной экрана Android-устройств начиная с Android Q.
Несколько вещей, которые стоит проверить, если вы реализуете поддержку складывающихся устройств у себя в приложении, при сгибании и разгибании устройства:
Если вы не хотите, чтобы Activity изменяла размер, то флаг android:resizeableActivity=false не всегда может помочь в этом, так как система всё равно может изменить размер Activity или поместить его в режим совместимости:
Режим совместимости
Кажется, что сейчас пользователей со складывающимися устройствами совсем мало, но стоимость таких гаджетов достаточно высока и проверить, как на них работает приложение, обязательно нужно.
На конференции много внимания уделялось модульности. Основные плюсы многомодульности:
Также многомодульность хорошо масштабируется под большое количество разработчиков, что является существенным преимуществом для больших и быстрорастущих команд.
У многомодульности есть и проблемы. Например, непонятно, как создавать базу данных. Есть три подхода:
Все подходы имеют свои недостатки, но ребята из Google обещают светлое будущее с Room, где они хотят сохранить изоляцию модулей и поддержать кроссмодульные запросы, а также модули с динамическими функциями. К сожалению, пока это недоступно.
У нас в приложении Badoo более 170 модулей, мы пока не используем dynamic feature, но получаем другие преимущества и недостатки многомодульности.
Второй день конференции был самым насыщенным. Первый доклад начался в 8:30, а последний закончился в 20:00. В общей сложности было представлено 90 докладов.
Такая аудитория полностью наполняется людьми примерно за десять минут
Системе Android уже десять лет, текущий UI морально устарел. Старый UI достаточно сложно поддерживать. Например, класс View имеет 29 188 строк кода, включая комментарии, AppCompat-версия обросла множеством хаков для разных версий Android. Посмотрев на эту картину, разработчики Google решили сделать UI-фреймворк, который будет поставляться вместе с приложением и станет полностью отвязанным от Android. Рабочее название фреймворка — Jetpack Compose.
Flutter, React, Litho и Vue.js служили источниками вдохновения для разработчиков, поэтому новый фреймворк многим покажется знакомым. Основная идея в обеспечении реагирования UI на изменения модели, при этом логики в UI нет.
Иерархия View представляется в виде функций, помеченных аннотацией @Composable. Фреймворк использует Compiler Plugin для перехвата вызовов к composable функциям.
Команда Google обещает поддержку нового фреймворка в старых иерархиях View (с помощью аннотаций @GenerateView), а также предпросмотр прямо в Android Studio и поддержку анимаций.
Jetpack Compose пока ещё достаточно сырой и не готов к использованию в реальных приложениях, но изучить принципы его работы стоит уже сейчас, чтобы понимать, куда движется Android-разработка.
Google подготовила советы по проектированию AR-приложений.
Более подробную информацию о том, как проектировать AR-элементы в приложении, можно найти в видео с конференции [5].
В этом докладе говорится о лучших практиках работы с текстом и о некоторых изменениях в новой версии Android.
И еще одна небольшая новость. В докладе GIFs and More: Integrating Expression Search in Your App [6] Google презентовали свой API для работы с GIF — Tenor [7], альтернативу давно известному Giphy. Мы одни из первых стали использовать его в своём приложении Badoo, благодаря чему попали на слайд к спикеру — в качестве примера использования. Мелочь, а приятно!
Наше приложение “засветилось” в презентации Tenor
В конце второго дня Google устроила концерт, на котором выступала группа The Flaming Lips. Если честно, раньше я о ней не слышал, но, судя по всему, в США она довольно популярна. В интернете доступен небольшой фрагмент выступления [8].
Перед концертом
Третий день был коротким. Уже к 16:30 все доклады были представлены, а с окончанием докладов закончилась и конференция. В основном в этот день я общался с другими участниками, но расскажу о паре докладов, на которые стоит обратить внимание.
На конференции есть зоны для общения, где не рекомендуется использовать технику
В своём докладе Nik Butcher [9] рассказал о том, как в эру реактивности реализовывать анимации для улучшения пользовательского опыта. Проблема заключается в том, что в реактивном приложении объекты View не имеют состояния, а анимации, напротив, обладают состоянием.
Хорошие анимации должны отвечать трём критериям:
Как этого добиться:
Но лучше один раз увидеть, чем сто раз услышать прочитать, поэтому вот видео [12] с докладом.
Библиотека для измерения производительности приложения сейчас находится в состоянии альфа-версии в составе Jetpack. Она позволяет делать замеры производительности кода и избегает множества ошибок замеров, также есть интеграция с Android Studio.
О чём стоит помнить при написании и запуске тестов производительности с помощью Jetpack Benchmark Library [13]:
Команда Badoo и разработчик Google
Google I/O посетить определённо стоит. В такой атмосфере за чашкой чая можно услышать много интересных историй и узнать об интересных инженерных решениях. Например, о том, как ребята из ВКонтакте придумали сделать тёмную тему и раскатить её на пользователей, которые спрашивали: «Где тёмная тема?», как на другом конце Земли разработчики из Tinder борются со спамом и порноконтентом и как команда App in the Air реализовывала авторегистрацию на авиаперелёты. Также можно поймать представителей Google, создающих инструменты, которыми мы пользуемся, и задать интересующие вопросы.
В общем, конференция такого уровня — это не только куча докладов, но и много интересных людей, с которыми можно обменяться опытом.
Автор: Link20
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/318187
Ссылки в тексте:
[1] канале Google Developers: https://www.youtube.com/user/GoogleDevelopers/videos
[2] на сайте Google I/O: https://events.google.com/io/
[3] Code Jam: https://codingcompetitions.withgoogle.com/codejamio
[4] в докладе на MBLT DEV: https://youtu.be/QQeJLbfayTE?list=PL3xVZC4USRNSq0J1GOSfUKWEv90rR_9AH
[5] видео с конференции: https://www.youtube.com/watch?v=BlM2T1beKbg
[6] GIFs and More: Integrating Expression Search in Your App: https://www.youtube.com/watch?v=FtwtC1Ic9ps&list=PLOU2XLYxmsILVTiOlMJdo7RQS55jYhsMi&index=99&t=0s&fbclid=IwAR3p3Hc35yqJKjL9uEYRcQLCbLy4bbsPsrPrhNCHaZzsNCyK62zqhnP3Kp0
[7] Tenor: https://tenor.com/
[8] небольшой фрагмент выступления: https://www.youtube.com/watch?v=OXrLr_1x_Fk
[9] Nik Butcher: https://twitter.com/crafty
[10] Spring Animation: https://developer.android.com/guide/topics/graphics/spring-animation
[11] <animated-selector>: https://developer.android.com/reference/android/graphics/drawable/AnimatedStateListDrawable
[12] видео: https://www.youtube.com/watch?v=f3Lm8iOr4mE
[13] Jetpack Benchmark Library: https://developer.android.com/jetpack/androidx/releases/benchmark
[14] Источник: https://habr.com/ru/post/452618/?utm_source=habrahabr&utm_medium=rss&utm_campaign=452618
Нажмите здесь для печати.