Близится очередная конференция Mobius, и пришло время представить Хабру её программу.
Суть прежняя: тут есть доклады и по iOS-разработке, и по Android, и по кроссплатформенным технологиям вроде Flutter. И про свежие тренды (вплоть до шлема Apple Vision Pro), и про более фундаментальные вопросы вроде архитектурных.
А что конкретно будет? Собрали под катом описания всех докладов, разделив их на тематические блоки.
Содержание
Compose
? Как мы создавали дизайн-систему на Jetpack Compose
Михаил Стручков
Тинькофф
В современном мире мобильной разработки каждому развивающемуся приложению нужна удобная дизайн-система.
Спикер расскажет про путь, который прошла его UI-команда при реализации дизайн-системы на Jetpack Compose. Рассмотрим сложности, с которыми столкнулись при разработке и проведении дизайн-ревью, обсудим способы взаимодействия с Material и особое внимание уделим инструментам для реализации нестандартного UI, которые показали себя лучше всего.
? Оптимизация Compose: проблемы, опыт, тактика, стратегия
Сергей Чумиков
VK / RuStore
Уже прошло более трех лет со дня появления стабильной версии Compose, однако до сих пор остаются вопросы в области оптимизации, унифицированности подходов и достаточной квалификации разработчиков.
Сергей предлагает рассмотреть краеугольные случаи, с которыми они столкнулись в разработке, а также способы решения этих проблем. Считает, что пора нам, как сообществу, выработать типовой подход как к разработке, так и к архитектуре, чтобы дать новым разработчикам ориентиры в своем развитии в Compose.
Будет сделан акцент на мониторинге как на одном из самых недооцененных инструментов разработчика. Благодаря ему станет понятно, в каких местах находятся самые серьезные проблемы.
Исходя из выявленных проблем, Сергей представит свой вариант типовых оптимизаций, что позволит с одной стороны улучшить производительность, а с другой – дать ориентир в квалификации разработчика.
Также разберем случай с часто изменяемыми состояниями, где одним из решений будет частично мутабельный стейт.
В заключение спикер поделится мнением об онбординге в Compose.
Дмитрий Григорьев
Mobile Compose
Алексей Панов
Контур
На сессии вас ждет увлекательная и познавательная квиз-игра с серией вопросов от ведущих по самым важным аспектам работы с Jetpack Compose.
Ну а тот, кто даст больше всех правильных ответов, помимо бесценного опыта получит интересные призы.
? Что скрывает State в Compose
Алексей Панов
Контур
Алексей продолжит рассказывать об устройстве Jetpack Compose под капотом: подробно рассмотрит, что на самом деле скрывает State в Compose, почему он далеко не так прост, как кажется на первый взгляд, и почему он является важнейшим механизмом в работе всего Compose.
Мы все знаем, что рекомпозиция в Composable-функции происходит при изменении стейта, но как именно это происходит? Как стейт уведомляет о том, что он изменился? Можем ли мы безопасно работать со стейтом в многопоточной среде, и как здесь замешано устройство транзакций в базах данных? Обо всем этом и пойдет речь в докладе.
? Путешествие к центру Композиции
Дмитрий Григорьев
Mobile Compose
В продолжение разборов внутреннего устройства Compose Runtime Дмитрий расскажет о Композиции — ключевом механизме фреймворка, без которого Compose и вовсе был бы не Compose.
В докладе будет рассмотрено, когда и где создается композиция, какие структуры данных используются для этого, а также как именно внесенные изменения обновляют дерево Composable-компонентов.
? Компиляторные плагины: модификация и анализ Сompose
Асхар Айдаров
VK / ВКонтакте
В процессе внедрения Jetpack Compose в большой проект Асхар столкнулся с множеством нюансов, но про многое уже написано и рассказано. В докладе он расскажет, как в команде использовали компиляторные плагины Kotlin для улучшения опыта работы с Compose.
Спикер рассмотрит устройство Kotlin Compiler, особенности работы Compose Compiler и Jetpack Compose, расскажет о самом быстром способе вкатиться в разработку плагинов, а также о том, какие задачи решали с их помощью и как.
Приходите, чтобы разобраться в особенностях компиляторных плагинов и узнать больше об их практическом применении.
♾️ Как Compose Multiplatform for iOS может убить Flutter?
Валентин Телегин
Ростелеком ИТ
Валентин разберет Compose Multiplatform for iOS и ее преимущества. Погрузимся в архитектуру, выясним особенности работы Skia/Impeller/Skiko, а также узнаем, как готовить shared UI.
В качестве живого примера спикер реализует нескольких экранов реального KMM-приложения, где iOS-часть написана на SwiftUI, и продемонстрирует преимущества и сложности нового подхода. Также обсудим, зачем нужен Flutter при общем UI на KMM.
SwiftUI
? Как не наломать дров с Live Activity
Михаил Шкутков
Яндекс Go
Разбираем в деталях Live Activity — функциональность iOS, предлагающую новый опыт пользовательского взаимодействия.
Михаил поделится опытом интеграции с приложением Yandex Gо: почему решили поддерживать, какой путь при интеграции прошли и какие в итоге получили результаты. Расскажет, на что следует обратить внимание при поддержке Live Activity, какие есть особенности и нюансы и, конечно, упомянет проблемы и сложности, с которыми команда столкнулась в процессе реализации.
? SwiftUI-навигация: просто, нативно и декларативно
Сергей Балалаев
Ozon
Стартуя проект на SwiftUI 2.0 в конце 2021 года, Сергей с командой избрали тактику минимального использования UIKit, в том числе в вопросах навигации. Кроме того, они не стали создавать собственный NavigationView, а использовали тот механизм, который предоставил Apple, немного обернув его в решение, схожее с концепцией отображения модальных окон.
Изначально навигация была простой: TabBarView + NavigationView, поддержка с iOS 14, и все были счастливы. Затем дизайнеры и бизнес начали усложнять пути переходов экранов, создавая целые графы межэкранных прыжков, и команда столкнулась с техническими препятствиями и багами SwiftUI. Но они не свернули на UIKit, как это сделали те, кто вкусил SwiftUI до поддержки с iOS 16. Есть единицы, которые пошли по пути команды, и у них есть неплохие идеи. Однако их реализацию предстоит «доводить до ума».
Сергей поделится наработками команды, чтобы можно было безбоязненно идти в мир SwiftUI 2.0 с backports. Конечно же, есть готовые фреймворки, но они усложняют разработку и сводят на нет красоту декларативного подхода SwiftUI.
? Введение в разработку под Apple Vision Pro
Максим Нечаев
Snoonu
Доклад о новом девайсе от Apple — Vision Pro. Максим исследует эту технологию с момента ее появления в общем доступе: прочитал большое количество материалов на английском, создал свое первое приложение для visionOS и продолжает копать вглубь технологии.
Появление новых направлений, а тем более новых девайсов от Apple — это всегда туманные пустоши. Все видят их, но не понимают, куда и как двигаться. Спикер развеет туман и покажет специалистам, что собой представляет разработка под visionOS.
Дмитрий Куркин
Spark Networks
Навигация, пожалуй, одна из сложнейших частей SwiftUI. Набор инструментов сейчас сильно ограничен и содержит множество проблем – таких, как крэши и неопределенное поведение.
Спикер рассмотрит нюансы и внутренности текущего API, а также подход к работе с ним, включая UIKit-расширения для недостающих методов.
Партнерский доклад: спикеры из VK рассуждают на тему перехода к декларативно-реактивным фреймворкам, делятся болями и способами решения различных проблем.
Записи не будет – подключайтесь к живому обсуждению!
Swift
? Макросы Swift: проще, чище, быстрее
Анна Жаркова
Usetech
Арсенал продвинутых разработчиков включает в себя множество средств для решения проблем избыточного и повторяющегося кода, упрощения и ускорения создания стабильного и эффективного приложения. Среди них – макросы Swift 5.9, представленные Apple на WWDC 2023. Этот инструмент позволяет расширить функциональность компилятора прямо во время компиляции, анализировать и генерировать новый код на лету.
Анна расскажет, как можно использовать эту технологию на практике, ускорить и оптимизировать разработку, а также упростить жизнь разработчикам.
? Swift Plugins: ускоряем сборку проекта
Максим Гришутин
Ozon
Максим расскажет о том, как с помощью Swift Plugins можно оптимизировать сборку проекта. Подробно разберем, что такое Swift Plugins и какие они бывают. Посмотрим, как при запуске билда с помощниками (SwiftFormat, SwiftGen, Sourcery, Needle, Prefire) можно уменьшить время прогона с полутора минут до пяти секунд. И все это с помощью инструмента, представленного в 2022 году – Swift Package plugins.
P. S.: Плагины можно использовать как для Swift Package Manager, так и для Xcode 14.
? Объединяем Combine и Swift Concurrency
Александр Даровских
Тинькофф
Современные приложения часто сочетают в себе множество компонентов, имеющих сложную логику и взаимодействующих между собой. По мере разрастания приложения сложность системы растёт взрывообразно и часто выходит из-под контроля. Чтобы как-то сгладить этот эффект, применяются различные паттерны дизайна приложения. Один из таких паттернов — UDF, Unidirectional Data Flow.
Рассмотрим типичную задачу, с которой сталкивается практически каждый мобильный разработчик. Далее разберем, какие технологии уже есть в нашем распоряжении, и создадим несколько инструментов, чтобы склеить их между собой – в частности, узнаем, как можно связать механизм Backpressure в Combine с Continuations в Swift Concurrency и как нам это поможет в тестировании многопоточного кода.
? А так ли нужна Swift Modern Concurrency?
Василий Усов
VK / VK Карты
В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному программированию – механизмы Task, async/await и акторы. Но, к большому удивлению спикера, многие разработчики не хотят использовать новые концепции, переводить на них существующие проекты или начинать новые. И, казалось бы, действительно зачем, если у нас «старые добрые очереди и потоки».
Но новая модель конкурентности — это не просто синтаксис, а совершенно новая для Swift концепция, которая лежит глубоко под фасадом async/await. Придумана и реализована она была еще в 60-х годах, а спустя 60 лет добралась и до Swift.
Василий расскажет об истории этой концепции, а также о том, как она на самом деле используется в Swift и почему нам обязательно нужно переходить на нее.
? SwiftData как замена CoreData. Глубокое погружение
Андрей Зонов
Тинькофф
Глубокое погружение в детали работы нового фреймворка SwiftData, сравнение с CoreData, метрики производительности и план по интеграции в проект. А в конце — вывод о необходимости миграции на новый фреймворк, возможных путях использования в версиях до iOS 17.
Flutter
♾️ Я (не) робот
Федор Благодырь
Yappy
Рассмотрим подход к созданию капчи на Flutter.
Любой виджет можно передать в качестве источника и раздробить на заданное количество частей с рандомными позициями и углами. Созданные части, в свою очередь, можно менять между собой местами и крутить по своей оси. Детально разберем работу с Draggable/DragTarget, RenderObject, CustomClipper, CustomPainter, ChangeNotifier, Positioned, Implicit Animations и выясним, как все это подружить так, чтобы получилась капча.
Целевая аудитория – как новички, так и опытные разработчики. Новичкам будет интересно увидеть, как можно работать с тем, что уже предоставляет Flutter из коробки, а опытным – оценить нестандартные подходы к решению нестандартной задачи.
? Best practices локальной аутентификации на Flutter
Павел Гершевич
Аспирити
Для безопасного входа в приложение с чувствительными данными используется локальная аутентификация. Спикер расскажет, как ее можно реализовать на Flutter, почему они это делают и в чем преимущества такого решения.
Доклад будет полезен всем Flutter-разработчикам. Павел также разберет алгоритмы, которые могут пригодиться разработчикам с другим стеком и архитекторам.
? Полнодуплексное соединение во Flutter
Михаил Матюнин
Вместе со спикером погрузимся в мир обмена данными в реальном времени с Flutter. Откроем для себя мощь веб-сокетов, узнаем, как получать актуальную информацию от серверов, и освоим продвинутые серверно-клиентские вызовы.
Улучшаем свои приложения на Flutter с помощью двунаправленной коммуникации и остаемся в тренде цифровой эры.
BDUI / SDUI
Дмитрий Жердев
Циан
Backend-Driven UI (BDUI) – концепция, при которой сервер управляет не только данными в приложении, но и его версткой, то есть формирует экраны и переходы. Этот подход на слуху уже несколько лет.
Дмитрий поделится опытом команды Циан – расскажет, почему решили создать свой инструмент, рассмотрит основные нюансы реализации и продемонстрирует, как она работает. Поговорим о том, какие трудности могут поджидать при разработке такого инструмента и обсудим область его применения.
Доклад будет полезен разработчикам и командам, перед которыми стоит задача снизить TTM, упростить A/B-тестирование или поставлять изменения без обновления приложения. А также всем, кто хотел бы узнать об опыте другой компании.
♾️ BDUI на 100%: управляем шиммерами с бэкенда
Михаил Бесхитров
Яндекс Маркет
В команде развития BDUI в Маркете разработали собственный язык для описания шиммеров, научились его быстро парсить и внедрили в приложение и бэкенд. Михаил расскажет, почему решили разрабатывать свой язык, похожий на Lisp, и почему обычный JSON или бинарный формат не подошли, как они научились генерировать код под обе платформы (iOS, Android) с помощью Python и почему отказались от идеи использовать KMM.
♾️ BDUI vs SDUI
Участники обсудят, уменьшает ли BDUI time to market, сколько счастья приносит разработчикам и пользователям, а также можно ли стать настоящим senior-бэкендером.
HR и карьера
? Cracking the Android Interview
Дмитрий Мовчан
Дзен
При устройстве на работу необходимо пройти собеседование, но что нас там ждет – всегда загадка. Дмитрий поделится опытом собеседований по обе стороны баррикад, даст советы на тему того, как лучше подготовиться к очередному этапу, и разберет, какой уровень знаний требуется для каждого грейда.
♾️ Как разработчику повысить свою эффективность
Александр Попов
VK
Из доклада узнаем, какие нетехнические навыки делают разработчика более эффективным. Александр расскажет, как разработчику расти как специалисту, становясь более ценным сотрудником для своей компании.
Будет интересно junior- и middle-разработчикам.
Как собеседовать мобильных инженеров? Системный дизайн спешит на помощь!
Вячеслав Таранников
VK / RuStore
Решаем проблему найма кандидатов middle+ и выше. Спикер рассмотрит системный дизайн в контексте собеседований мобильных разработчиков. Сравнит с другими видами интервью, объяснит плюсы и минусы, расскажет, как подготовиться со стороны интервьюера и какие наиболее популярные маркеры встречаются у кандидатов.
Материал преимущественно нацелен на Senior-инженеров и менеджеров, которые хотят поменять или улучшить процесс найма в своей компании. Но также будет полезен тем, кто ходит по собеседованиям и хочет подготовиться к собеседованию в топ-компании.
Процессы и инфраструктура
? Как я code coverage внедрял да Gradle plugin для baseline писал
Роман Аймалетдинов
Global
Спикер расскажет об опыте внедрения code coverage-инструмента с поддержкой baseline и impact analysis.
Поддержку baseline пришлось писать самостоятельно.
Узнаем:
как быстро внедрить code coverage;
как поддержать coverage baseline с помощью custom Gradle plugin;
как запускать новые команды эффективно под impact analysis;
как настроить CI (GitHub) на блокирование PR, не прошедших проверку на coverage percent.
♾️ Мы решили все проблемы работы в модульном проекте. Хотите так же?
Миша Харитончик
Сбер
Вы наверняка знакомы с преимуществами монорепозитория, видели как устроена Яндекс Аркадия, читали блог о монорепе от Uber, восхищались кастомным SCM от Facebook и Microsoft, возможно, даже трогали Bazel. Миша перевернет ваше представление о хороших практиках: он покажет, как делать принято, а как – оптимально.
Вы разберетесь, почему же мультирепа и многомодульность – это круто, посмотрите на проблемы, которые она создает, и сразу их решите. Особый упор в докладе делается на синхронизацию изменений репозиториев, полное избавление от dependency hell и контроль над консистентностью большого проекта.
Цель спикера – показать задачи, из-за которых вы захотите модульность и мультирепозиторий, выявить проблемы, предложить решения и показать их в деле.
♾️ «А у нас сейчас все норм работает?», или Что такое observability мобильного приложения
Даниэль Халиулин
Тинькофф
В мире бэкенда, API и баз данных хороший мониторинг давно является чем-то само собой разумеющимся. Вопрос мониторинга серверных приложений давно оброс большим количеством практик, подходов и идей, которые зарекомендовали себя «в бою». Однако в случае с мобильными приложениями и по сей день можно встретить истории, когда во время сбоя единственный способ понять «а норм ли работает наше приложение» – это запустить его и потыкать своими руками.
Даниэль расскажет, чем плох подход «запустить и потыкать руками» и поделится тем, как в Тинькофф подходят к observability (наблюдаемости) мобильного банка – основного приложения компании с ежедневной аудиторией свыше 10 млн клиентов. Спикер также расскажет о том, как и за какими метриками следят и какие практики показали свою эффективность в этой теме.
Константин Петров
БКС
Быстрый рост команды и проекта привел к необходимости изменения многих процессов. Многие проблемы не решались: большое количество багов, разнородность кодовой базы, отсутствие должного обмена опытом между сотрудниками и многое другое. Эффективным решением для этих вопросов стал хорошо выстроенный процесс code review. Константин расскажет о том, как они победили токсичность и оздоровили внутреннюю конкуренцию между инженерами при ревью, какие этапы становления прошли как коллектив, и о том, как сегодня выглядит их процесс. Конечно, не обошлось без обширной автоматизации рутины. Была создана система, которая упрощает жизнь всем участникам процесса и легко подстраивается под изменения. О ней Константин также расскажет подробно.
Собираем проекты
? Баланс между скоростью и надежностью: переиспользовать нельзя перепроверять
Вероника Макаровская
Сбер
Вероника расскажет, как они в Сбербанк Онлайн нашли золотую середину между скоростью сборки и надежностью после вливания кода pull request'а.
Вместе со спикером посмотрим на импакт-анализ с другой стороны. Ответим на вопросы, нужен ли он проекту и как его можно использовать для уменьшения времени сборки, а не только для выбора нужных для прогона unit- и UI-тестов. Вероника также поделится результатами ускорения сборки build cache, и как они смогли это осуществить.
Доклад в основном об iOS-приложении, но будет полезен и Android community, а также тем, кто посмотрел доклад SBOL iOS Story Владимира Озерова на Mobius 2023 Spring и интересуется техническими деталями текущей эпохи проекта Сбербанк Онлайн.
? Сколько памяти нужно для сборки? Android-разработчикам о JVM
Юрий Анисимов
Тинькофф
Юрий рассмотрит одну из характеристик компьютера, которая влияет на время сборки – оперативную память.
Переизбыток или дефицит выделенной памяти для Gradle могут замедлить сборку. В отдельных случаях время сборки вообще начинает уходить в бесконечность. Разберем, сколько памяти действительно нужно для разработки Android-приложения и каким образом определить ее дефицит или переизбыток. Вместе со спикером оценим, достаточно ли иметь 16 ГБ на компьютере Android-разработчика в 2023 году.
Доклад будет полезен Android-разработчикам уровня middle и выше – в особенности тем, кто интересуется настройкой и оптимизацией сборки.
? Как перестать собирать проект и начать работать
Алёна Тарасова
Сбер
Все мы читали десятки статей с лайфхаками об ускорении сборки Android-проекта. Но что делать, когда советы применены, оптимизации выполнены, проект давно перевалил за 1000 модулей и за время холодной сборки вы успеваете сходить на обед?
Алёна расскажет, как платформенной команде Сбербанк Онлайн удалось в 3 раза сократить время локальной сборки проекта, используя индивидуальный подход и щепотку Gradle-магии.
ОС Аврора
♾️ GameDev и ОС Аврора. Портирование игры
Ярослав Андреев
ОМП
Ярослав расскажет, какой путь он прошел, чтобы поиграть на смартфоне с ОС Аврора в любимый шутер детства.
Узнаем, с чем могут столкнуться разработчики не только игр, которые захотят портировать свой проект на ОС Аврора. Ярослав опишет проблемы и нюансы, а также пути решения.
Доклад будет интересен тем, кто пишет свои приложения, используя собственный графический UI или бэкенд, отличный от Qt QML. Например, приложения на SDL2, GLFW, librw, Wayland EGL и прочие.
♾️ Адаптация интерфейсов под ОС Аврора: от компонентов до паттернов
Алексей Корюкин
ОМП
Алексей расскажет о процессе и особенностях адаптации интерфейсов мобильных приложений под ОС Аврора.
Дизайн-система ОС Аврора достаточно молодая, но активно развивается. В чем ее особенность и чем она отличается от других дизайн-систем? Как правильно использовать компоненты и что надо учитывать при проектировании интерфейсов под ОС Аврора? Какие поведенческие паттерны свойственны данной платформе? Как правильно портировать приложение под ОС Аврора, чтобы оно не выглядело чужеродным, но в то же время сохраняло свою привлекательность для пользователей? Узнаем во время доклада.
Компьютерное зрение
? Неожиданное путешествие в мир компьютерного зрения и распознавания образов, или Туда и обратно
Антон Хаванский
Антон и команда разработали карту с отображением дорожных событий в режиме реального времени, используя анализ видеоданных с видеорегистраторов. Один из ключевых вызовов заключался в создании и внедрении новых, более эффективных моделей для обнаружения объектов на видео.
Спикер представит основы компьютерного зрения, рассмотрит доступные фреймворки для создания и обучения моделей для обнаружения объектов, а также выделит преимущества подхода команды — в частности, использование моделей YOLO и библиотеки TensorFlow на Android. Также поделится реальными испытаниями: от трудностей до неожиданных ошибок, которые возникли на пути.
За пределами покраски кнопок. Методы компьютерного зрения
Александр Гращенков
RoadAR
Все уже слышали о нейросетях и какую магию они могут творить. Но что было до нейросетей? Как программисты заставляли машину «видеть»? Поговорим о подходах к решению задач и обсудим, когда нейросети уступают другим подходам.
Под капотом
♾️ Убиваем Lottie? Тащим Rive?
Евгений Прокопьев
СберМаркет
Спикер расскажет о Lottie: обсудим ограничения и посмотрим, как он работает под капотом, а именно – как работает механизм рендера.
Также обсудим новый инструмент от создателя Lottie – Rive. Евгений покажет, как Rive решает проблемы, с которыми не может справиться Lottie – в качестве примера рассмотрим подкоробочную интерактивность Rive. Реализуем интерактивный анимируемый элемент с помощью Rive и без кодинга.
♾️ Встраиваем Unity в мобильное приложение. Боль и костыли
Анатолий Пешков
Mad Brains
Есть хорошо работающий на мобильных устройствах 3D-движок, есть нативные мобильные приложения. И вроде бы возьми их и совмести – как в старом меме про Pen-Pineaple-Apple-Pen. Но не все так очевидно.
В ходе доклада Анатолий поделится практическим опытом реализации.
? Как сделать, чтобы не тормозило, пожалуйста
Евгений Шаповалов
VK / ВКонтакте
Быстрый запуск и отзывчивость приложения — это счастливые пользователи, хорошее вовлечение и пятерки в App Store.
Чтобы этого добиться, Евгений с командой ВКонтакте пробовали разные методы и подходы: что-то сработало, что-то не сработало, а что-то оказалось совсем не очевидным и контринтуитивным.
На практических примерах попробуем разобраться:
как собрать актуальные метрики скорости запуска и отзывчивости приложения;
что происходит на всех уровнях от момента нажатия на иконку сервиса до первого клика в приложении;
какие тактики применить, чтобы ускорить старт и отзывчивость после запуска;
какие возможности для оптимизации есть в iOS и насколько они эффективны – как старые, так и реализованные в свежих версиях SDK.
? Удивительный мир внутри .ipa
Никита Краснов
Альфа-Банк
В формате краткого воркшопа Никита расскажет, что есть внутри .ipa-файла, пройдется по самым часто встречающимся внутри файлам и покажет, что интересного можно из них достать и как файлы можно модифицировать без вреда для приложения. Подробнее остановимся на самом исполняемом файле и увидим, что можно из него достать без дизассемблера.
Узнаем, как можно сравнить два приложения на схожесть, используя Hopper + BinDiff, и как сделать их отличающимися. Доклад будет интересен разработчикам, которые создают White Label-приложения, а также всем, кто хорошо знает Swift, но при этом не знает, как приложение собирается и во что превращается на выходе.
? Core Motion framework в финансовых приложениях
Всеволод Мигдисов
Газпромбанк
В докладе обсудим, какие датчики движения есть в iPhone, как они работают и какие возможности получения и обработки показаний этих датчиков предоставляет фреймворк Core Motion. Научимся по последовательности чисел с датчиков восстанавливать сложные жесты пользователя.
Традиционно работу с датчиками движения ассоциируют с приложениями для спорта и игр, но мы увидим, как данные этих датчиков можно использовать в более консервативных сферах на примере работы с финансами. В заключение обсудим перспективы и альтернативные идеи использования информации от датчиков движения.
Работаем с видео: архитектура
? Интеграция MediaPipe в Android-приложение видеоконференцсвязи
Ильяс Ахмеров
DION
Процесс перехода на ML-фреймворк MediaPipe с более высокоуровневых инструментов (ML Kit и OpenCV), которые использовались для обработки видеопотока между камерой устройства и видеоконференцией, основанной на WebRTC.
Отказ от существующего решения позволит решить проблему высокой нагрузки, снизит размер приложения и позволит достичь большей гибкости процесса обработки кадров.
Основная задача при переходе на MediaPipe — разработка архитектуры взаимодействия с фреймворком, позволяющей переключать режимы работы в реальном времени, а также отдавать параллельно видеопоток нескольким потребителям.
В процессе перехода дополнительно производится адаптация MediaPipe под особенности платформы и приложения: доработка JNI-слоя, создание калькуляторов, реализация кастомных графов.
♾️ Рецепт приготовления кроссплатформенного мобильного видеоредактора
Дмитрий Кузнецов
Movavi
Первым делом познакомимся с продуктовой задачей, то есть что нужно сделать: «мобильное приложение-суперапп для обработки мультимедиа». Рассмотрим в деталях ингредиенты: что будем использовать для реализации.
Далее подробно остановимся на ключевых моментах: C++ для работы с мультимедиа, Kotlin Multiplatform для бизнес-логики, Swift для реализации специфичных для iOS-платформы задач, в первую очередь – верстка экранов.
Отдельно рассмотрим моменты стыковки C++, KMM и iOS-платформы вместе: что такое биндинги и кто отвечает за время жизни объектов – особенно когда они перемещаются между компонентами и оказываются в разных системах управления памятью.
Уделим внимание архитектуре приложения – важно спроектировать ее так, чтобы как можно больше кода было общим для нескольких платформ и только специфичные вещи, например, верстка экранов, оставались привязанными к конкретной платформе.
В финале доклада Дмитрий расскажет о технических сложностях, с которыми столкнулись при работе с KMM и о том, как их решили – это и будет «рецептом приготовления кроссплатформенного мобильного приложения».
Публикации в сторах
Владимир Тимофеев
Android Tools
Спикер расскажет о сложностях инди-разработки и правилах Google Play.
Инди – сам себе хозяин и, как в сериалах про бандитов, за всё отвечает сам. Специфику инди не описать двумя фразами, но из советов можно почерпнуть полезное для себя.
Времена пустого рынка мобильных приложений прошли, а бюджеты для разработки серьезных приложений неподъемны для обычных инди-разработчиков. Владимир затронет тему поиска ниш, которые крупные компании еще не заняли, или, возможно, не займут из-за экономических причин. Будет и серьезная теория, без которой тяжело в инди-разработке.
? Мгновенный фидбэк: как оперативно получать отзывы о приложении в App Store
Игорь Клюжев
VK / Дзен
Техтолк на тему разработки Telegram-бота для оперативного получения и последующей обработки отзывов о мобильном приложении из AppStore. Игорь расскажет, как разобраться с недостатком инструментов в админ-панели App Store Connect и невозможностью оперативно получать новые отзывы, появившиеся в App Store. В докладе обсуждаются Python, создание Telegram-бота и получение данных о приложении из App Store Connect API. Доклад расширит ваше видение решений проблемы с помощью технологий автоматизации.
Будет интересно разработчикам мобильных приложений и людям, косвенно задействованным в процессе создания мобильного приложения: продактам, саппорту, тестировщикам.
Качество, доступность, безопасность
? Проектирование невизуальных интерфейсов: основа, смыслы, примеры
Анатолий Попко
Валерия Курмак
Интерактивный воркшоп, на котором мы вместе будем проектировать невизуальные интерфейсы:
включим TalkBack и VoiceOver и вспомним, как и зачем ими пользоваться;
по-честному взглянем на цифровой интерфейс и его представления: визуальное, аудиальное и даже тактильное;
проанализируем ключевые компоненты интерфейса и попробуем спроектировать решения с точки зрения их правильного представления вспомогательным технологиям.
? Как быстро сократить вес приложения: переносим картинки и строки локализации на сервер
Александр Евтухов
Банк Открытие
Рассмотрим, как можно сократить размер приложения. Сделаем вывод, что одним из важнейших аспектов в этом процессе будет избавление от строк локализации и XCAsset-каталогов. Спикер расскажет, как это можно сделать с минимальными вложениями и без широкомасштабного рефакторинга всего приложения.
♾️ Tracer – альтернатива Crashlytics, или Другой взгляд на аналитику ошибок в приложениях
Кирилл Попов
VK / Одноклассники
Tracer – система аналитики ошибок от команды OK.Tech. Эту систему используют почти все крупные бизнес-юниты VK – такие, как Одноклассники, ВКонтакте, Дзен, Юла, Почта, RuStore. По мнению команды, получилось хорошо, поэтому решили выйти в public и поделиться сервисом со всеми, он бесплатный.
Спикер расскажет про отличия Tracer от Crashlytics в части работы с крэшами и зависаниями (ANR) и покажет их на реальных примерах. Продемонстрирует работу и других инструментов команды: профайлеров, мониторинга утечек памяти и мониторинга утечек файлов на диске. Также Кирилл поделится деталями, как это всё реализовано на бэкенде. Сейчас публичный сервис работает для Android и iOS.
Кстати, про один из профайлеров спикер уже рассказывал на Mobius в 2020 году.
? Взлом и защита Android-приложений
Данил Перевалов
Циан
Рассмотрим способы взлома и защиты. Будем пытаться сначала атаковать приложение, а затем тут же защититься. А потом атаковать новую защиту, и так по кругу.
Сперва поговорим о банальных вещах – таких, как просмотр данных приложения через снифферы трафика или просмотр байт-кода. Далее о более сложном: поговорим об изменении поведения приложения через Frida и защите от этого с помощью C++. И в конце попытаемся взломать С++.
? Моментальный запуск: как VK Клипы работают с плейбэком видео на Android
Дмитрий Рычагов
VK Клипы
В VK Клипах Дмитрий с командой постоянно занимается оптимизациями ленты: от рекомендаций и хранения до воспроизведения на клиенте. Спикер расскажет о том, что им помогает добиться моментального запуска видео. Также рассмотрим эффективное использование ExoPlayer, интеграцию видео в RecyclerView и подводные камни, которые могут встретиться на пути.
♾️ Как мы сделали ставку на KMP
Павел Новиков
МойОфис
История о внедрении KMP в приложение. Павел расскажет, какие были предпосылки, почему сделали ставку на эту технологию, как принимали решение, где находятся сегодня и куда идут.
Заключение
Напомним, что в этот раз конференция проходит так: сначала два онлайновых дня (1-2 ноября), а затем два дня в Санкт-Петербурге (9-10 ноября).
Те, кто не готов добраться до Питера, смогут и ко второй части подключиться удалённо, так что не пропустят ни одного доклада и смогут вместе со всеми расспрашивать спикеров. Но если добраться лично, то получаешь далеко не только доклады: можно будет и как следует наобщаться в офлайне, и участвовать в активностях на стендах партнёров.
И напоследок напомним ссылку на сайт Mobius: вся остальная информация там, билеты тоже.