В процессе внедрения Jetpack Compose в большой проект Асхар столкнулся с множеством нюансов, и с некоторыми из них удалось разобраться с помощью компиляторых плагинов Kotlin.
В ходе доклада спикер рассмотрит особенности работы Compose Compiler, расскажет, как вкатиться в разработку плагинов и поделится примерами решения проблем.
В продолжение разборов внутреннего устройства Compose Runtime Дмитрий расскажет о Композиции — ключевом механизме фреймворка, без которого Compose и вовсе был бы не Compose.
В докладе будет рассмотрено когда и где создается композиция, какие структуры данных используются для этого, а также как именно внесенные изменения обновляют дерево Composable-компонентов.
Вместе со спикером погрузимся в мир обмена данными в реальном времени с Flutter. Откроем для себя мощь веб-сокетов, узнаем, как получать актуальную информацию от серверов, и освоим продвинутые серверно-клиентские вызовы.
Улучшаем свои приложения на Flutter с помощью двунаправленной коммуникации и остаемся в тренде цифровой эры.
Евгений расскажет, как собрать актуальные метрики скорости запуска и отзывчивости приложения; что происходит на всех уровнях от момента нажатия на иконку сервиса до первого клика в приложении; какие тактики применить, чтобы ускорить старт и отзывчивость после запуска; какие возможности для оптимизации есть в iOS и насколько они эффективны – как старые, так и реализованные в свежих версиях SDK.
Есть хорошо работающий на мобильных устройствах 3D-движок, есть нативные мобильные приложения. И вроде бы возьми их и совмести – как в старом меме про Pen-Pineaple-Apple-Pen. Но не все так очевидно.
В ходе доклада спикер поделится практическим опытом реализации.
Cпикер расскажет, что есть внутри .ipa-файла, пройдется по самым часто встречающимся внутри файлам и покажет, что интересного можно из них достать и как файлы можно модифицировать без вреда для приложения; что интересно можно достать из исполняемого файла, не запуская и не используя дизассемблеры; как можно сравнить два приложения на схожесть, используя Hopper + BinDiff, и как сделать эти бинари отличающимися.
Спикер объяснит, почему Apple знает, как зовут вашего юзера на компьютере, когда вы собираете приложение. Также пофантазирует на тему того, как Apple использует статический и динамический анализ .ipa во время ревью приложений для стора.
Глубокое погружение в детали работы нового фреймворка SwiftData, сравнение с CoreData, метрики производительности и план по интеграции в проект. А в конце — вывод о необходимости миграции на новый фреймворк, возможных путях использования в версиях до iOS 17.
Спикер расскажет о Lottie: обсудим ограничения и посмотрим, как он работает под капотом, а именно – как работает механизм рендера.
Также обсудим новый инструмент от создателя Lottie – Rive. Евгений покажет, как Rive решает проблемы, с которыми не может справиться Lottie – в качестве примера рассмотрим подкоробочную интерактивность Rive. Реализуем интерактивный анимируемый элемент с помощью Rive и без кодинга.
Не спешите переходить на Swift Modern Concurrency или уже активно используете, но не понимаете ее плюсов, кроме приятного синтаксиса? Тогда вам будет полезно узнать, какая концепция лежит внутри новой модели конкурентной работы и в чем ее плюсы и минусы.
Спикер расскажет, как сочетаются разнообразные UDF-подходы и Swift Concurrency, о подписке на обновления без коллбэков, а также об инструментах для тестирования всего этого.
В команде развития BDUI в Маркете разработали собственный язык для описания шиммеров, научились его быстро парсить и внедрили в приложение и бэкенд. Спикер расскажет, почему решили разрабатывать свой язык, похожий на Lisp, и почему обычный JSON или бинарный формат не подошли, как они научились генерировать код под обе платформы (iOS, Android) с помощью Python и почему отказались от идеи использовать KMM.
Спикер расскажет про Swift Plugins: что это, как использовать и создавать свои плагины. И вишенка на торте – продемонстрирует оптимизацию затрат сборки с помощниками (SwiftFormat, SwiftGen, Sourcery, Needle, Prefire) с 1м 30с до 5с.
Алексей продолжит рассказывать об устройстве Jetpack Compose под капотом – подробно рассмотрит, что на самом деле скрывает State в Compose, почему он далеко не так прост, как кажется на первый взгляд и почему он является важнейшим механизмом в работе всего Compose.
Live Activity – функциональность iOS, предлагающая новый опыт пользовательского взаимодействия. Спикер поделится опытом интеграции с приложением Yandex Go: на что следует обращать внимание, с какими сложностями предстоит столкнуться, что делать и что не делать при поддержке Live Activity.
Валентин разберет Compose Multiplatform for iOS и ее преимущества. Погрузимся в архитектуру, выясним особенности работы skia/impeller/skiko, а также узнаем, как готовить shared UI.
В качестве живого примера спикер реализует нескольких экранов реального KMM-приложения, где iOS-часть написана на swiftUI, и продемонстрирует преимущества и сложности нового подхода. Также обсудим, зачем нужен Flutter при общем UI на KMM.
Навигация, пожалуй, одна из сложнейших частей SwiftUI. Набор инструментов сейчас сильно ограничен и содержит множество проблем – таких, как крэши и неопределенное поведение.
Спикер рассмотрит нюансы и внутренности текущего API, а также подход к работе с ним, включая UIKit-расширения для недостающих методов.
Поговорим об использовании моделей для распознавания объектов на мобильных платформах. Спикер расскажет о применении моделей YOLO и библиотеки TensorFlow на Android и о технических вызовах, которые преодолела команда.
Vision Pro – революционный девайс от корпорации Apple. Доклад про особенности разработки под visionOS и работу с пространством. Введение в разработку под Apple Vision Pro.
Все уже слышали о нейросетях и какую магию они могут творить. Но что было до нейросетей? Как программисты заставляли машину «видеть»? Поговорим о подходах к решению задач и обсудим, когда нейросети уступают другим подходам.
Глубокое погружение в детали работы нового фреймворка SwiftData, сравнение с CoreData, метрики производительности и план по интеграции в проект. А в конце — вывод о необходимости миграции на новый фреймворк, возможных путях использования в версиях до iOS 17.
Не спешите переходить на Swift Modern Concurrency или уже активно используете, но не понимаете ее плюсов, кроме приятного синтаксиса? Тогда вам будет полезно узнать, какая концепция лежит внутри новой модели конкурентной работы и в чем ее плюсы и минусы.
Для безопасного входа в приложение с чувствительными данными используется локальная аутентификация. Спикер расскажет, как ее можно реализовать на Flutter, почему они это делают и в чем преимущества такого решения.
Цель: подсветить проблемы, возникающие при работе с Compose в большой команде. Дать унифицированные подходы к оптимизации. Предложить иной взгляд на архитектуру UI-стейта.
Спикер расскажет о сложностях инди-разработки и правилах Google Play.
Инди – сам себе хозяин и, как в сериалах про бандитов, за всё отвечает сам. Специфику инди не описать двумя фразами, но из советов можно почерпнуть полезное для себя.
Времена пустого рынка мобильных приложений прошли, а бюджеты для разработки серьезных приложений не подъемны для обычных инди-разработчиков. Владимир затронет тему поиска ниш, которые крупные компании еще не заняли, или, возможно, не займут из-за экономических причин. Будет и серьезная теория, без которой тяжело в инди-разработке.
При устройстве на работу необходимо пройти собеседование, но что нас там ждет – всегда загадка. Дмитрий поделится опытом собеседований по обе стороны баррикад, даст советы на тему того, как лучше подготовиться к очередному этапу и разберет, какой уровень знаний требуется для каждого грейда.
Валентин разберет Compose Multiplatform for iOS и ее преимущества. Погрузимся в архитектуру, выясним особенности работы skia/impeller/skiko, а также узнаем, как готовить shared UI.
В качестве живого примера спикер реализует нескольких экранов реального KMM-приложения, где iOS-часть написана на swiftUI, и продемонстрирует преимущества и сложности нового подхода. Также обсудим, зачем нужен Flutter при общем UI на KMM.
В процессе внедрения Jetpack Compose в большой проект Асхар столкнулся с множеством нюансов, и с некоторыми из них удалось разобраться с помощью компиляторых плагинов Kotlin.
В ходе доклада спикер рассмотрит особенности работы Compose Compiler, расскажет, как вкатиться в разработку плагинов и поделится примерами решения проблем.
В продолжение разборов внутреннего устройства Compose Runtime Дмитрий расскажет о Композиции — ключевом механизме фреймворка, без которого Compose и вовсе был бы не Compose.
В докладе будет рассмотрено когда и где создается композиция, какие структуры данных используются для этого, а также как именно внесенные изменения обновляют дерево Composable-компонентов.
Спикер расскажет про путь, который прошла его UI-команда при реализации дизайн-системы на Jetpack Compose. Рассмотрим сложности, с которыми столкнулись при разработке и проведении дизайн-ревью, обсудим способы взаимодействия с Material и особое внимание уделим инструментам для реализации нестандартного UI, которые показали себя лучше всего.
Алексей продолжит рассказывать об устройстве Jetpack Compose под капотом – подробно рассмотрит, что на самом деле скрывает State в Compose, почему он далеко не так прост, как кажется на первый взгляд и почему он является важнейшим механизмом в работе всего Compose.
Цель: подсветить проблемы, возникающие при работе с Compose в большой команде. Дать унифицированные подходы к оптимизации. Предложить иной взгляд на архитектуру UI-стейта.
Рассмотрим способы взлома и защиты. Будем пытаться сначала атаковать приложение, а затем тут же защититься. А потом атаковать новую защиту, и так по кругу.
Сперва поговорим о банальных вещах – таких, как просмотр данных приложения через снифферы трафика или просмотр байт-кода. Далее о более сложном: поговорим об изменении поведения приложения через Frida и защите от этого с помощью C++. И в конце попытаемся взломать С++.
В VK Клипах Дмитрий с командой постоянно занимаются оптимизациями ленты: от рекомендаций и хранения до воспроизведения на клиенте. Спикер расскажет о том, что им помогает добиться моментального запуска видео. Также рассмотрим эффективное использование ExoPlayer, интеграцию видео в RecyclerView и подводные камни, которые могут встретиться на пути.
Зачем нужен Tracer, если есть Crashlytics, Sentry и App Center? Поговорим об отличиях, преимуществах, деталях реализации, а также о проблемах, с которыми вам, возможно, поможет только Tracer.
Интерактивный воркшоп, на котором мы вместе будем проектировать невизуальные интерфейсы:
включим TalkBack и VoiceOver и вспомним, как и зачем ими пользоваться;
по-честному взглянем на цифровой интерфейс и его представления: визуальное, аудиальное и даже тактильное;
проанализируем ключевые компоненты интерфейса и попробуем спроектировать решения с точки зрения их правильного представления вспомогательным технологиям.
Интерактивный воркшоп, на котором мы вместе будем проектировать невизуальные интерфейсы:
включим TalkBack и VoiceOver и вспомним, как и зачем ими пользоваться;
по-честному взглянем на цифровой интерфейс и его представления: визуальное, аудиальное и даже тактильное;
проанализируем ключевые компоненты интерфейса и попробуем спроектировать решения с точки зрения их правильного представления вспомогательным технологиям.
Для безопасного входа в приложение с чувствительными данными используется локальная аутентификация. Спикер расскажет, как ее можно реализовать на Flutter, почему они это делают и в чем преимущества такого решения.
Рассмотрим, как можно сократить размер приложения. Сделаем вывод, что одним из важнейших аспектов в этом процессе будет избавление от строк локализации и xcasset-каталогов. Спикер расскажет, как это можно сделать с минимальными вложениями и без широкомасштабного рефакторинга всего приложения.
Спикер расскажет об опыте внедрения code coverage-инструмента с поддержкой baseline на собственном Gradle plugin под impact analysis – конечно, с настройкой на CI.
Все мы читали десятки статей с лайфхаками об ускорении сборки Android-проекта. Но что делать, когда советы применены, оптимизации выполнены, проект давно перевалил за 1000 модулей и за время холодной сборки вы успеваете сходить на обед? Алёна расскажет, как платформенной команде Сбербанк Онлайн удалось в 3 раза сократить время локальной сборки проекта, используя индивидуальный подход и щепотку Gradle-магии.
Вместе со спикером вы разберетесь, почему же мультирепа и многомодульность – это круто, посмотрите на проблемы, которые она создает, и сразу их решите. Особый упор в докладе делается на синхронизацию изменений репозиториев, полное избавление от dependency hell и контроль над консистентностью большого проекта.
В мире бэкенда, API и баз данных хороший мониторинг давно является чем-то само собой разумеющимся. Даниэль поделится тем, как в Тинькофф подходят к observability (наблюдаемости) мобильного банка – основного приложения компании с ежедневной аудиторией свыше 10 млн. клиентов. Спикер также расскажет о том, как и за какими метриками следят и какие практики показали свою эффективность в этой теме.
Спикер расскажет о том, как выделение оперативной памяти влияет на время сборки. Разберем, сколько памяти действительно нужно для разработки Android-приложения и как определить ее дефицит или переизбыток.
Рассмотрим, как можно сократить размер приложения. Сделаем вывод, что одним из важнейших аспектов в этом процессе будет избавление от строк локализации и xcasset-каталогов. Спикер расскажет, как это можно сделать с минимальными вложениями и без широкомасштабного рефакторинга всего приложения.
Live Activity – функциональность iOS, предлагающая новый опыт пользовательского взаимодействия. Спикер поделится опытом интеграции с приложением Yandex Go: на что следует обращать внимание, с какими сложностями предстоит столкнуться, что делать и что не делать при поддержке Live Activity.
Спикер расскажет про путь, который прошла его UI-команда при реализации дизайн-системы на Jetpack Compose. Рассмотрим сложности, с которыми столкнулись при разработке и проведении дизайн-ревью, обсудим способы взаимодействия с Material и особое внимание уделим инструментам для реализации нестандартного UI, которые показали себя лучше всего.
Из доклада узнаем, в чем особенность дизайн-системы ОС Аврора и чем она отличается от других дизайн-систем; как правильно использовать компоненты и что надо учитывать при проектировании интерфейсов под ОС Аврора; какие поведенческие паттерны свойственны данной платформе; как правильно портировать приложение под ОС Аврора, чтобы оно не выглядело чужеродным, но в то же время сохраняло свою привлекательность для пользователей.
В ходе доклада узнаем об опыте команды Циан в разработке Backend-Driven UI. Спикер расскажет, почему решили создать свой инструмент, рассмотрит основные нюансы реализации и продемонстрирует, как она работает. Поговорим о том, какие трудности могут поджидать при разработке такого инструмента и обсудим область его применения.
Глубокое погружение в детали работы нового фреймворка SwiftData, сравнение с CoreData, метрики производительности и план по интеграции в проект. А в конце — вывод о необходимости миграции на новый фреймворк, возможных путях использования в версиях до iOS 17.
Не спешите переходить на Swift Modern Concurrency или уже активно используете, но не понимаете ее плюсов, кроме приятного синтаксиса? Тогда вам будет полезно узнать, какая концепция лежит внутри новой модели конкурентной работы и в чем ее плюсы и минусы.
Спикер расскажет, как сочетаются разнообразные UDF-подходы и Swift Concurrency, о подписке на обновления без коллбэков, а также об инструментах для тестирования всего этого.
Спикер расскажет про Swift Plugins: что это, как использовать и создавать свои плагины. И вишенка на торте – продемонстрирует оптимизацию затрат сборки с помощниками (SwiftFormat, SwiftGen, Sourcery, Needle, Prefire) с 1м 30с до 5с.
В команде развития BDUI в Маркете разработали собственный язык для описания шиммеров, научились его быстро парсить и внедрили в приложение и бэкенд. Спикер расскажет, почему решили разрабатывать свой язык, похожий на Lisp, и почему обычный JSON или бинарный формат не подошли, как они научились генерировать код под обе платформы (iOS, Android) с помощью Python и почему отказались от идеи использовать KMM.
В ходе доклада узнаем об опыте команды Циан в разработке Backend-Driven UI. Спикер расскажет, почему решили создать свой инструмент, рассмотрит основные нюансы реализации и продемонстрирует, как она работает. Поговорим о том, какие трудности могут поджидать при разработке такого инструмента и обсудим область его применения.
Live Activity – функциональность iOS, предлагающая новый опыт пользовательского взаимодействия. Спикер поделится опытом интеграции с приложением Yandex Go: на что следует обращать внимание, с какими сложностями предстоит столкнуться, что делать и что не делать при поддержке Live Activity.
Vision Pro – революционный девайс от корпорации Apple. Доклад про особенности разработки под visionOS и работу с пространством. Введение в разработку под Apple Vision Pro.
Рассмотрим, как сделать простую многофункциональную навигацию в декларативном стиле без роутеров и координаторов, опираясь на стандарты технологии SwiftUI. Конечное решение будет иметь поддержку iOS 14 и возможности NavigationStack, а также в нем будут отсутствовать недостатки и баги SDK.
Говорим о расписании, сессиях и делимся информацией. Приходите в зал или подключайтесь к онлайн-трансляции, чтобы узнать, что вас ждет в ближайшее время!
Быстрый рост команды и проекта привел к необходимости изменения многих процессов. Многие проблемы не решались: большое количество багов, разнородность кодовой базы, отсутствие должного обмена опытом между сотрудниками и многое другое. Эффективным решением для этих вопросов стал хорошо выстроенный процесс code review. Константин расскажет о том, как они победили токсичность и оздоровили внутреннюю конкуренцию между инженерами при ревью, какие этапы становления прошли как коллектив, и о том, как сегодня выглядит их процесс. Конечно, не обошлось без обширной автоматизации рутины. Была создана система, которая упрощает жизнь всем участникам процесса и легко подстраивается под изменения. О ней Константин также расскажет подробно.
Подводим итоги, вспоминаем яркие моменты и рассказываем о дальнейших планах. Приходите в зал или подключайтесь к онлайн-трансляции, чтобы ничего не пропустить!