![](https://habrastorage.org/r/w780/getpro/habr/upload_files/abd/a50/fa2/abda50fa2e63d7ab62dea5f8914e000e.jpg)
Близится очередная конференция Mobius, и пришло время представить Хабру её программу.
Суть прежняя: тут есть доклады и по iOS-разработке, и по Android, и по кроссплатформенным технологиям вроде Flutter. И про свежие тренды (вплоть до шлема Apple Vision Pro), и про более фундаментальные вопросы вроде архитектурных.
А что конкретно будет? Собрали под катом описания всех докладов, разделив их на тематические блоки.
Содержание
Compose
???? Как мы создавали дизайн-систему на Jetpack Compose
![](https://habrastorage.org/webt/97/xu/pw/97xupwzc0oiut5xxoyq-ec5e3yq.jpeg)
Михаил Стручков
Тинькофф
В современном мире мобильной разработки каждому развивающемуся приложению нужна удобная дизайн-система.
Спикер расскажет про путь, который прошла его UI-команда при реализации дизайн-системы на Jetpack Compose. Рассмотрим сложности, с которыми столкнулись при разработке и проведении дизайн-ревью, обсудим способы взаимодействия с Material и особое внимание уделим инструментам для реализации нестандартного UI, которые показали себя лучше всего.
???? Оптимизация Compose: проблемы, опыт, тактика, стратегия
![](https://habrastorage.org/webt/gk/st/ah/gkstahm2tatvqv1loq2yzjqbxnk.png)
Сергей Чумиков
VK / RuStore
Уже прошло более трех лет со дня появления стабильной версии Compose, однако до сих пор остаются вопросы в области оптимизации, унифицированности подходов и достаточной квалификации разработчиков.
Сергей предлагает рассмотреть краеугольные случаи, с которыми они столкнулись в разработке, а также способы решения этих проблем. Считает, что пора нам, как сообществу, выработать типовой подход как к разработке, так и к архитектуре, чтобы дать новым разработчикам ориентиры в своем развитии в Compose.
Будет сделан акцент на мониторинге как на одном из самых недооцененных инструментов разработчика. Благодаря ему станет понятно, в каких местах находятся самые серьезные проблемы.
Исходя из выявленных проблем, Сергей представит свой вариант типовых оптимизаций, что позволит с одной стороны улучшить производительность, а с другой – дать ориентир в квалификации разработчика.
Также разберем случай с часто изменяемыми состояниями, где одним из решений будет частично мутабельный стейт.
В заключение спикер поделится мнением об онбординге в Compose.
???? Compose Quiz
![](https://habrastorage.org/webt/pq/rr/g7/pqrrg7x8ao5xvhyfa1vfaileb4q.png)
Дмитрий Григорьев
Mobile Compose
![](https://habrastorage.org/webt/i6/fx/a6/i6fxa6ppvipxagotvzusldgoi8i.png)
Алексей Панов
Контур
На сессии вас ждет увлекательная и познавательная квиз-игра с серией вопросов от ведущих по самым важным аспектам работы с Jetpack Compose.
Ну а тот, кто даст больше всех правильных ответов, помимо бесценного опыта получит интересные призы.
???? Что скрывает State в Compose
![](https://habrastorage.org/webt/i6/fx/a6/i6fxa6ppvipxagotvzusldgoi8i.png)
Алексей Панов
Контур
Алексей продолжит рассказывать об устройстве Jetpack Compose под капотом: подробно рассмотрит, что на самом деле скрывает State в Compose, почему он далеко не так прост, как кажется на первый взгляд, и почему он является важнейшим механизмом в работе всего Compose.
Мы все знаем, что рекомпозиция в Composable-функции происходит при изменении стейта, но как именно это происходит? Как стейт уведомляет о том, что он изменился? Можем ли мы безопасно работать со стейтом в многопоточной среде, и как здесь замешано устройство транзакций в базах данных? Обо всем этом и пойдет речь в докладе.
???? Путешествие к центру Композиции
![](https://habrastorage.org/webt/pq/rr/g7/pqrrg7x8ao5xvhyfa1vfaileb4q.png)
Дмитрий Григорьев
Mobile Compose
В продолжение разборов внутреннего устройства Compose Runtime Дмитрий расскажет о Композиции — ключевом механизме фреймворка, без которого Compose и вовсе был бы не Compose.
В докладе будет рассмотрено, когда и где создается композиция, какие структуры данных используются для этого, а также как именно внесенные изменения обновляют дерево Composable-компонентов.
???? Компиляторные плагины: модификация и анализ Сompose
![](https://habrastorage.org/webt/hj/yt/yf/hjytyfhniaookkwufkawzcyn2lm.png)
Асхар Айдаров
VK / ВКонтакте
В процессе внедрения Jetpack Compose в большой проект Асхар столкнулся с множеством нюансов, но про многое уже написано и рассказано. В докладе он расскажет, как в команде использовали компиляторные плагины Kotlin для улучшения опыта работы с Compose.
Спикер рассмотрит устройство Kotlin Compiler, особенности работы Compose Compiler и Jetpack Compose, расскажет о самом быстром способе вкатиться в разработку плагинов, а также о том, какие задачи решали с их помощью и как.
Приходите, чтобы разобраться в особенностях компиляторных плагинов и узнать больше об их практическом применении.
♾️ Как Compose Multiplatform for iOS может убить Flutter?
![](https://habrastorage.org/webt/tz/ln/cw/tzlncwcxelc6xvorpr0xkehbnv8.jpeg)
Валентин Телегин
Ростелеком ИТ
Валентин разберет Compose Multiplatform for iOS и ее преимущества. Погрузимся в архитектуру, выясним особенности работы Skia/Impeller/Skiko, а также узнаем, как готовить shared UI.
В качестве живого примера спикер реализует нескольких экранов реального KMM-приложения, где iOS-часть написана на SwiftUI, и продемонстрирует преимущества и сложности нового подхода. Также обсудим, зачем нужен Flutter при общем UI на KMM.
SwiftUI
???? Как не наломать дров с Live Activity
![](https://habrastorage.org/webt/m0/md/gl/m0mdgl-b0qiqdgai0ksaeurtaz4.png)
Михаил Шкутков
Яндекс Go
Разбираем в деталях Live Activity — функциональность iOS, предлагающую новый опыт пользовательского взаимодействия.
Михаил поделится опытом интеграции с приложением Yandex Gо: почему решили поддерживать, какой путь при интеграции прошли и какие в итоге получили результаты. Расскажет, на что следует обратить внимание при поддержке Live Activity, какие есть особенности и нюансы и, конечно, упомянет проблемы и сложности, с которыми команда столкнулась в процессе реализации.
???? SwiftUI-навигация: просто, нативно и декларативно
![](https://habrastorage.org/webt/wf/xc/ud/wfxcud6ejg9hy6dbxvcad4z2ac4.png)
Сергей Балалаев
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
![](https://habrastorage.org/webt/wt/ac/4f/wtac4ffcn2p0gdet6z29z6sy2oy.png)
Максим Нечаев
Snoonu
Доклад о новом девайсе от Apple — Vision Pro. Максим исследует эту технологию с момента ее появления в общем доступе: прочитал большое количество материалов на английском, создал свое первое приложение для visionOS и продолжает копать вглубь технологии.
Появление новых направлений, а тем более новых девайсов от Apple — это всегда туманные пустоши. Все видят их, но не понимают, куда и как двигаться. Спикер развеет туман и покажет специалистам, что собой представляет разработка под visionOS.
???? Навигация в SwiftUI
![](https://habrastorage.org/webt/eu/8h/15/eu8h15evkczosipeorqxlng-dt8.jpeg)
Дмитрий Куркин
Spark Networks
Навигация, пожалуй, одна из сложнейших частей SwiftUI. Набор инструментов сейчас сильно ограничен и содержит множество проблем – таких, как крэши и неопределенное поведение.
Спикер рассмотрит нюансы и внутренности текущего API, а также подход к работе с ним, включая UIKit-расширения для недостающих методов.
Партнерский доклад: спикеры из VK рассуждают на тему перехода к декларативно-реактивным фреймворкам, делятся болями и способами решения различных проблем.
Записи не будет – подключайтесь к живому обсуждению!
Swift
???? Макросы Swift: проще, чище, быстрее
![](https://habrastorage.org/webt/fk/6v/hw/fk6vhwmgdsyded0dejayua7cw4y.png)
Анна Жаркова
Usetech
Арсенал продвинутых разработчиков включает в себя множество средств для решения проблем избыточного и повторяющегося кода, упрощения и ускорения создания стабильного и эффективного приложения. Среди них – макросы Swift 5.9, представленные Apple на WWDC 2023. Этот инструмент позволяет расширить функциональность компилятора прямо во время компиляции, анализировать и генерировать новый код на лету.
Анна расскажет, как можно использовать эту технологию на практике, ускорить и оптимизировать разработку, а также упростить жизнь разработчикам.
???? Swift Plugins: ускоряем сборку проекта
![](https://habrastorage.org/webt/ll/6a/m-/ll6am-_-e6ooqedua6kol_i7tio.png)
Максим Гришутин
Ozon
Максим расскажет о том, как с помощью Swift Plugins можно оптимизировать сборку проекта. Подробно разберем, что такое Swift Plugins и какие они бывают. Посмотрим, как при запуске билда с помощниками (SwiftFormat, SwiftGen, Sourcery, Needle, Prefire) можно уменьшить время прогона с полутора минут до пяти секунд. И все это с помощью инструмента, представленного в 2022 году – Swift Package plugins.
P. S.: Плагины можно использовать как для Swift Package Manager, так и для Xcode 14.
???? Объединяем Combine и Swift Concurrency
![](https://habrastorage.org/webt/z0/pj/dt/z0pjdt8szrukgamlgfccbk2tt50.jpeg)
Александр Даровских
Тинькофф
Современные приложения часто сочетают в себе множество компонентов, имеющих сложную логику и взаимодействующих между собой. По мере разрастания приложения сложность системы растёт взрывообразно и часто выходит из-под контроля. Чтобы как-то сгладить этот эффект, применяются различные паттерны дизайна приложения. Один из таких паттернов — UDF, Unidirectional Data Flow.
Рассмотрим типичную задачу, с которой сталкивается практически каждый мобильный разработчик. Далее разберем, какие технологии уже есть в нашем распоряжении, и создадим несколько инструментов, чтобы склеить их между собой – в частности, узнаем, как можно связать механизм Backpressure в Combine с Continuations в Swift Concurrency и как нам это поможет в тестировании многопоточного кода.
???? А так ли нужна Swift Modern Concurrency?
![](https://habrastorage.org/webt/7i/oi/ka/7ioika85qhqjtrqb82zqzslwhpm.jpeg)
Василий Усов
VK / VK Карты
В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному программированию – механизмы Task, async/await и акторы. Но, к большому удивлению спикера, многие разработчики не хотят использовать новые концепции, переводить на них существующие проекты или начинать новые. И, казалось бы, действительно зачем, если у нас «старые добрые очереди и потоки».
Но новая модель конкурентности — это не просто синтаксис, а совершенно новая для Swift концепция, которая лежит глубоко под фасадом async/await. Придумана и реализована она была еще в 60-х годах, а спустя 60 лет добралась и до Swift.
Василий расскажет об истории этой концепции, а также о том, как она на самом деле используется в Swift и почему нам обязательно нужно переходить на нее.
???? SwiftData как замена CoreData. Глубокое погружение
![](https://habrastorage.org/webt/hx/dr/1l/hxdr1lmth9tio1ymlpsdhtaq1oq.png)
Андрей Зонов
Тинькофф
Глубокое погружение в детали работы нового фреймворка SwiftData, сравнение с CoreData, метрики производительности и план по интеграции в проект. А в конце — вывод о необходимости миграции на новый фреймворк, возможных путях использования в версиях до iOS 17.
Flutter
♾️ Я (не) робот
![](https://habrastorage.org/webt/oo/hv/xx/oohvxxriwnbf9gqgpzspiiqcpqm.png)
Федор Благодырь
Yappy
Рассмотрим подход к созданию капчи на Flutter.
Любой виджет можно передать в качестве источника и раздробить на заданное количество частей с рандомными позициями и углами. Созданные части, в свою очередь, можно менять между собой местами и крутить по своей оси. Детально разберем работу с Draggable/DragTarget, RenderObject, CustomClipper, CustomPainter, ChangeNotifier, Positioned, Implicit Animations и выясним, как все это подружить так, чтобы получилась капча.
Целевая аудитория – как новички, так и опытные разработчики. Новичкам будет интересно увидеть, как можно работать с тем, что уже предоставляет Flutter из коробки, а опытным – оценить нестандартные подходы к решению нестандартной задачи.
???? Best practices локальной аутентификации на Flutter
![](https://habrastorage.org/webt/eq/qp/h4/eqqph47rj1lkx5xiphxbkt1ffak.png)
Павел Гершевич
Аспирити
Для безопасного входа в приложение с чувствительными данными используется локальная аутентификация. Спикер расскажет, как ее можно реализовать на Flutter, почему они это делают и в чем преимущества такого решения.
Доклад будет полезен всем Flutter-разработчикам. Павел также разберет алгоритмы, которые могут пригодиться разработчикам с другим стеком и архитекторам.
???? Полнодуплексное соединение во Flutter
![](https://habrastorage.org/webt/ko/cz/iy/kocziyjiyybv8vn4tmlfgifpou0.png)
Михаил Матюнин
Вместе со спикером погрузимся в мир обмена данными в реальном времени с Flutter. Откроем для себя мощь веб-сокетов, узнаем, как получать актуальную информацию от серверов, и освоим продвинутые серверно-клиентские вызовы.
Улучшаем свои приложения на Flutter с помощью двунаправленной коммуникации и остаемся в тренде цифровой эры.
BDUI / SDUI
![](https://habrastorage.org/webt/p8/nd/kz/p8ndkzaa5svf5maeriai3emfffi.png)
Дмитрий Жердев
Циан
Backend-Driven UI (BDUI) – концепция, при которой сервер управляет не только данными в приложении, но и его версткой, то есть формирует экраны и переходы. Этот подход на слуху уже несколько лет.
Дмитрий поделится опытом команды Циан – расскажет, почему решили создать свой инструмент, рассмотрит основные нюансы реализации и продемонстрирует, как она работает. Поговорим о том, какие трудности могут поджидать при разработке такого инструмента и обсудим область его применения.
Доклад будет полезен разработчикам и командам, перед которыми стоит задача снизить TTM, упростить A/B-тестирование или поставлять изменения без обновления приложения. А также всем, кто хотел бы узнать об опыте другой компании.
♾️ BDUI на 100%: управляем шиммерами с бэкенда
![](https://habrastorage.org/webt/bo/v8/zk/bov8zkmwtasho7jkvicpe7jlk1s.png)
Михаил Бесхитров
Яндекс Маркет
В команде развития BDUI в Маркете разработали собственный язык для описания шиммеров, научились его быстро парсить и внедрили в приложение и бэкенд. Михаил расскажет, почему решили разрабатывать свой язык, похожий на Lisp, и почему обычный JSON или бинарный формат не подошли, как они научились генерировать код под обе платформы (iOS, Android) с помощью Python и почему отказались от идеи использовать KMM.
♾️ BDUI vs SDUI
Участники обсудят, уменьшает ли BDUI time to market, сколько счастья приносит разработчикам и пользователям, а также можно ли стать настоящим senior-бэкендером.
HR и карьера
???? Cracking the Android Interview
![](https://habrastorage.org/webt/_j/rs/jd/_jrsjd9sswtjetuksbmklk5cpli.png)
Дмитрий Мовчан
Дзен
При устройстве на работу необходимо пройти собеседование, но что нас там ждет – всегда загадка. Дмитрий поделится опытом собеседований по обе стороны баррикад, даст советы на тему того, как лучше подготовиться к очередному этапу, и разберет, какой уровень знаний требуется для каждого грейда.
♾️ Как разработчику повысить свою эффективность
![](https://habrastorage.org/webt/xn/dh/j7/xndhj7jfdwbzinuzdezotzydx-q.jpeg)
Александр Попов
VK
Из доклада узнаем, какие нетехнические навыки делают разработчика более эффективным. Александр расскажет, как разработчику расти как специалисту, становясь более ценным сотрудником для своей компании.
Будет интересно junior- и middle-разработчикам.
Как собеседовать мобильных инженеров? Системный дизайн спешит на помощь!
![](https://habrastorage.org/webt/tg/hx/fr/tghxfr5vblo1d3lsnjhhyguuan4.jpeg)
Вячеслав Таранников
VK / RuStore
Решаем проблему найма кандидатов middle+ и выше. Спикер рассмотрит системный дизайн в контексте собеседований мобильных разработчиков. Сравнит с другими видами интервью, объяснит плюсы и минусы, расскажет, как подготовиться со стороны интервьюера и какие наиболее популярные маркеры встречаются у кандидатов.
Материал преимущественно нацелен на Senior-инженеров и менеджеров, которые хотят поменять или улучшить процесс найма в своей компании. Но также будет полезен тем, кто ходит по собеседованиям и хочет подготовиться к собеседованию в топ-компании.
Процессы и инфраструктура
???? Как я code coverage внедрял да Gradle plugin для baseline писал
![](https://habrastorage.org/webt/yn/xp/at/ynxpatpjkvnefwa-fxhygm4pmry.png)
Роман Аймалетдинов
Global
Спикер расскажет об опыте внедрения code coverage-инструмента с поддержкой baseline и impact analysis.
Поддержку baseline пришлось писать самостоятельно.
Узнаем:
как быстро внедрить code coverage;
как поддержать coverage baseline с помощью custom Gradle plugin;
как запускать новые команды эффективно под impact analysis;
как настроить CI (GitHub) на блокирование PR, не прошедших проверку на coverage percent.
♾️ Мы решили все проблемы работы в модульном проекте. Хотите так же?
![](https://habrastorage.org/webt/8l/s-/li/8ls-li6wsf9pumhvrrf7fru5dxe.jpeg)
Миша Харитончик
Сбер
Вы наверняка знакомы с преимуществами монорепозитория, видели как устроена Яндекс Аркадия, читали блог о монорепе от Uber, восхищались кастомным SCM от Facebook и Microsoft, возможно, даже трогали Bazel. Миша перевернет ваше представление о хороших практиках: он покажет, как делать принято, а как – оптимально.
Вы разберетесь, почему же мультирепа и многомодульность – это круто, посмотрите на проблемы, которые она создает, и сразу их решите. Особый упор в докладе делается на синхронизацию изменений репозиториев, полное избавление от dependency hell и контроль над консистентностью большого проекта.
Цель спикера – показать задачи, из-за которых вы захотите модульность и мультирепозиторий, выявить проблемы, предложить решения и показать их в деле.
♾️ «А у нас сейчас все норм работает?», или Что такое observability мобильного приложения
![](https://habrastorage.org/webt/uy/h8/gr/uyh8grfrve1znjhxvnirprfy0eg.png)
Даниэль Халиулин
Тинькофф
В мире бэкенда, API и баз данных хороший мониторинг давно является чем-то само собой разумеющимся. Вопрос мониторинга серверных приложений давно оброс большим количеством практик, подходов и идей, которые зарекомендовали себя «в бою». Однако в случае с мобильными приложениями и по сей день можно встретить истории, когда во время сбоя единственный способ понять «а норм ли работает наше приложение» – это запустить его и потыкать своими руками.
Даниэль расскажет, чем плох подход «запустить и потыкать руками» и поделится тем, как в Тинькофф подходят к observability (наблюдаемости) мобильного банка – основного приложения компании с ежедневной аудиторией свыше 10 млн клиентов. Спикер также расскажет о том, как и за какими метриками следят и какие практики показали свою эффективность в этой теме.
![](https://habrastorage.org/webt/ax/8k/3x/ax8k3xi2y3a5awhisgxe6dqw8pa.png)
Константин Петров
БКС
Быстрый рост команды и проекта привел к необходимости изменения многих процессов. Многие проблемы не решались: большое количество багов, разнородность кодовой базы, отсутствие должного обмена опытом между сотрудниками и многое другое. Эффективным решением для этих вопросов стал хорошо выстроенный процесс code review. Константин расскажет о том, как они победили токсичность и оздоровили внутреннюю конкуренцию между инженерами при ревью, какие этапы становления прошли как коллектив, и о том, как сегодня выглядит их процесс. Конечно, не обошлось без обширной автоматизации рутины. Была создана система, которая упрощает жизнь всем участникам процесса и легко подстраивается под изменения. О ней Константин также расскажет подробно.
Собираем проекты
???? Баланс между скоростью и надежностью: переиспользовать нельзя перепроверять
![](https://habrastorage.org/webt/qm/vz/ue/qmvzueqsi_ey2cdk2jpwqr5jjlo.png)
Вероника Макаровская
Сбер
Вероника расскажет, как они в Сбербанк Онлайн нашли золотую середину между скоростью сборки и надежностью после вливания кода pull request'а.
Вместе со спикером посмотрим на импакт-анализ с другой стороны. Ответим на вопросы, нужен ли он проекту и как его можно использовать для уменьшения времени сборки, а не только для выбора нужных для прогона unit- и UI-тестов. Вероника также поделится результатами ускорения сборки build cache, и как они смогли это осуществить.
Доклад в основном об iOS-приложении, но будет полезен и Android community, а также тем, кто посмотрел доклад SBOL iOS Story Владимира Озерова на Mobius 2023 Spring и интересуется техническими деталями текущей эпохи проекта Сбербанк Онлайн.
???? Сколько памяти нужно для сборки? Android-разработчикам о JVM
![](https://habrastorage.org/webt/no/i3/of/noi3ofyuoe9r8mxr8g2ud0fmstg.png)
Юрий Анисимов
Тинькофф
Юрий рассмотрит одну из характеристик компьютера, которая влияет на время сборки – оперативную память.
Переизбыток или дефицит выделенной памяти для Gradle могут замедлить сборку. В отдельных случаях время сборки вообще начинает уходить в бесконечность. Разберем, сколько памяти действительно нужно для разработки Android-приложения и каким образом определить ее дефицит или переизбыток. Вместе со спикером оценим, достаточно ли иметь 16 ГБ на компьютере Android-разработчика в 2023 году.
Доклад будет полезен Android-разработчикам уровня middle и выше – в особенности тем, кто интересуется настройкой и оптимизацией сборки.
???? Как перестать собирать проект и начать работать
![](https://habrastorage.org/webt/9e/-p/sm/9e-psm-an1qiha2v_3pdwycvtmo.png)
Алёна Тарасова
Сбер
Все мы читали десятки статей с лайфхаками об ускорении сборки Android-проекта. Но что делать, когда советы применены, оптимизации выполнены, проект давно перевалил за 1000 модулей и за время холодной сборки вы успеваете сходить на обед?
Алёна расскажет, как платформенной команде Сбербанк Онлайн удалось в 3 раза сократить время локальной сборки проекта, используя индивидуальный подход и щепотку Gradle-магии.
ОС Аврора
♾️ GameDev и ОС Аврора. Портирование игры
![](https://habrastorage.org/webt/sr/sv/aq/srsvaq3fjhzqqx2ebosrmqwbcca.png)
Ярослав Андреев
ОМП
Ярослав расскажет, какой путь он прошел, чтобы поиграть на смартфоне с ОС Аврора в любимый шутер детства.
Узнаем, с чем могут столкнуться разработчики не только игр, которые захотят портировать свой проект на ОС Аврора. Ярослав опишет проблемы и нюансы, а также пути решения.
Доклад будет интересен тем, кто пишет свои приложения, используя собственный графический UI или бэкенд, отличный от Qt QML. Например, приложения на SDL2, GLFW, librw, Wayland EGL и прочие.
♾️ Адаптация интерфейсов под ОС Аврора: от компонентов до паттернов
![](https://habrastorage.org/webt/nj/0y/76/nj0y760n6wllfb3-bxaeoi5tkyy.jpeg)
Алексей Корюкин
ОМП
Алексей расскажет о процессе и особенностях адаптации интерфейсов мобильных приложений под ОС Аврора.
Дизайн-система ОС Аврора достаточно молодая, но активно развивается. В чем ее особенность и чем она отличается от других дизайн-систем? Как правильно использовать компоненты и что надо учитывать при проектировании интерфейсов под ОС Аврора? Какие поведенческие паттерны свойственны данной платформе? Как правильно портировать приложение под ОС Аврора, чтобы оно не выглядело чужеродным, но в то же время сохраняло свою привлекательность для пользователей? Узнаем во время доклада.
Компьютерное зрение
???? Неожиданное путешествие в мир компьютерного зрения и распознавания образов, или Туда и обратно
![](https://habrastorage.org/webt/en/ri/un/enriunpphljk1xkb_b584lv_e6o.png)
Антон Хаванский
Антон и команда разработали карту с отображением дорожных событий в режиме реального времени, используя анализ видеоданных с видеорегистраторов. Один из ключевых вызовов заключался в создании и внедрении новых, более эффективных моделей для обнаружения объектов на видео.
Спикер представит основы компьютерного зрения, рассмотрит доступные фреймворки для создания и обучения моделей для обнаружения объектов, а также выделит преимущества подхода команды — в частности, использование моделей YOLO и библиотеки TensorFlow на Android. Также поделится реальными испытаниями: от трудностей до неожиданных ошибок, которые возникли на пути.
За пределами покраски кнопок. Методы компьютерного зрения
![](https://habrastorage.org/webt/v-/9s/zq/v-9szq4ptzyuypmdcmqj8ecsgay.png)
Александр Гращенков
RoadAR
Все уже слышали о нейросетях и какую магию они могут творить. Но что было до нейросетей? Как программисты заставляли машину «видеть»? Поговорим о подходах к решению задач и обсудим, когда нейросети уступают другим подходам.
Под капотом
♾️ Убиваем Lottie? Тащим Rive?
![](https://habrastorage.org/webt/lh/_9/x6/lh_9x6ifhx2wn-s-1p16mjnfn4i.png)
Евгений Прокопьев
СберМаркет
Спикер расскажет о Lottie: обсудим ограничения и посмотрим, как он работает под капотом, а именно – как работает механизм рендера.
Также обсудим новый инструмент от создателя Lottie – Rive. Евгений покажет, как Rive решает проблемы, с которыми не может справиться Lottie – в качестве примера рассмотрим подкоробочную интерактивность Rive. Реализуем интерактивный анимируемый элемент с помощью Rive и без кодинга.
♾️ Встраиваем Unity в мобильное приложение. Боль и костыли
![](https://habrastorage.org/webt/6z/1e/au/6z1eauwau1deh-nh3mbb2wgbm6a.png)
Анатолий Пешков
Mad Brains
Есть хорошо работающий на мобильных устройствах 3D-движок, есть нативные мобильные приложения. И вроде бы возьми их и совмести – как в старом меме про Pen-Pineaple-Apple-Pen. Но не все так очевидно.
В ходе доклада Анатолий поделится практическим опытом реализации.
???? Как сделать, чтобы не тормозило, пожалуйста
![](https://habrastorage.org/webt/ca/cj/gq/cacjgqgs0jdbejbudqym9qqkrdi.jpeg)
Евгений Шаповалов
VK / ВКонтакте
Быстрый запуск и отзывчивость приложения — это счастливые пользователи, хорошее вовлечение и пятерки в App Store.
Чтобы этого добиться, Евгений с командой ВКонтакте пробовали разные методы и подходы: что-то сработало, что-то не сработало, а что-то оказалось совсем не очевидным и контринтуитивным.
На практических примерах попробуем разобраться:
как собрать актуальные метрики скорости запуска и отзывчивости приложения;
что происходит на всех уровнях от момента нажатия на иконку сервиса до первого клика в приложении;
какие тактики применить, чтобы ускорить старт и отзывчивость после запуска;
какие возможности для оптимизации есть в iOS и насколько они эффективны – как старые, так и реализованные в свежих версиях SDK.
???? Удивительный мир внутри .ipa
![](https://habrastorage.org/webt/xz/sg/s2/xzsgs2dgxrq5snamyoxjmwpof5e.png)
Никита Краснов
Альфа-Банк
В формате краткого воркшопа Никита расскажет, что есть внутри .ipa-файла, пройдется по самым часто встречающимся внутри файлам и покажет, что интересного можно из них достать и как файлы можно модифицировать без вреда для приложения. Подробнее остановимся на самом исполняемом файле и увидим, что можно из него достать без дизассемблера.
Узнаем, как можно сравнить два приложения на схожесть, используя Hopper + BinDiff, и как сделать их отличающимися. Доклад будет интересен разработчикам, которые создают White Label-приложения, а также всем, кто хорошо знает Swift, но при этом не знает, как приложение собирается и во что превращается на выходе.
???? Core Motion framework в финансовых приложениях
![](https://habrastorage.org/webt/8b/t1/9o/8bt19oour8dd-e2tmsosskufbaw.jpeg)
Всеволод Мигдисов
Газпромбанк
В докладе обсудим, какие датчики движения есть в iPhone, как они работают и какие возможности получения и обработки показаний этих датчиков предоставляет фреймворк Core Motion. Научимся по последовательности чисел с датчиков восстанавливать сложные жесты пользователя.
Традиционно работу с датчиками движения ассоциируют с приложениями для спорта и игр, но мы увидим, как данные этих датчиков можно использовать в более консервативных сферах на примере работы с финансами. В заключение обсудим перспективы и альтернативные идеи использования информации от датчиков движения.
Работаем с видео: архитектура
???? Интеграция MediaPipe в Android-приложение видеоконференцсвязи
![](https://habrastorage.org/webt/hs/jm/qh/hsjmqhrbqglbuq8lsidprpxseq4.jpeg)
Ильяс Ахмеров
DION
Процесс перехода на ML-фреймворк MediaPipe с более высокоуровневых инструментов (ML Kit и OpenCV), которые использовались для обработки видеопотока между камерой устройства и видеоконференцией, основанной на WebRTC.
Отказ от существующего решения позволит решить проблему высокой нагрузки, снизит размер приложения и позволит достичь большей гибкости процесса обработки кадров.
Основная задача при переходе на MediaPipe — разработка архитектуры взаимодействия с фреймворком, позволяющей переключать режимы работы в реальном времени, а также отдавать параллельно видеопоток нескольким потребителям.
В процессе перехода дополнительно производится адаптация MediaPipe под особенности платформы и приложения: доработка JNI-слоя, создание калькуляторов, реализация кастомных графов.
♾️ Рецепт приготовления кроссплатформенного мобильного видеоредактора
![](https://habrastorage.org/webt/85/2m/-9/852m-9ucva-4f-iav5qefaf9pl4.png)
Дмитрий Кузнецов
Movavi
Первым делом познакомимся с продуктовой задачей, то есть что нужно сделать: «мобильное приложение-суперапп для обработки мультимедиа». Рассмотрим в деталях ингредиенты: что будем использовать для реализации.
Далее подробно остановимся на ключевых моментах: C++ для работы с мультимедиа, Kotlin Multiplatform для бизнес-логики, Swift для реализации специфичных для iOS-платформы задач, в первую очередь – верстка экранов.
Отдельно рассмотрим моменты стыковки C++, KMM и iOS-платформы вместе: что такое биндинги и кто отвечает за время жизни объектов – особенно когда они перемещаются между компонентами и оказываются в разных системах управления памятью.
Уделим внимание архитектуре приложения – важно спроектировать ее так, чтобы как можно больше кода было общим для нескольких платформ и только специфичные вещи, например, верстка экранов, оставались привязанными к конкретной платформе.
В финале доклада Дмитрий расскажет о технических сложностях, с которыми столкнулись при работе с KMM и о том, как их решили – это и будет «рецептом приготовления кроссплатформенного мобильного приложения».
Публикации в сторах
![](https://habrastorage.org/webt/z4/xm/ap/z4xmapacn-krmej311xxy8jruxu.png)
Владимир Тимофеев
Android Tools
Спикер расскажет о сложностях инди-разработки и правилах Google Play.
Инди – сам себе хозяин и, как в сериалах про бандитов, за всё отвечает сам. Специфику инди не описать двумя фразами, но из советов можно почерпнуть полезное для себя.
Времена пустого рынка мобильных приложений прошли, а бюджеты для разработки серьезных приложений неподъемны для обычных инди-разработчиков. Владимир затронет тему поиска ниш, которые крупные компании еще не заняли, или, возможно, не займут из-за экономических причин. Будет и серьезная теория, без которой тяжело в инди-разработке.
???? Мгновенный фидбэк: как оперативно получать отзывы о приложении в App Store
![](https://habrastorage.org/webt/v3/-c/a3/v3-ca3hs0h4_1zzsdwvwmz3ikiq.png)
Игорь Клюжев
VK / Дзен
Техтолк на тему разработки Telegram-бота для оперативного получения и последующей обработки отзывов о мобильном приложении из AppStore. Игорь расскажет, как разобраться с недостатком инструментов в админ-панели App Store Connect и невозможностью оперативно получать новые отзывы, появившиеся в App Store. В докладе обсуждаются Python, создание Telegram-бота и получение данных о приложении из App Store Connect API. Доклад расширит ваше видение решений проблемы с помощью технологий автоматизации.
Будет интересно разработчикам мобильных приложений и людям, косвенно задействованным в процессе создания мобильного приложения: продактам, саппорту, тестировщикам.
Качество, доступность, безопасность
???? Проектирование невизуальных интерфейсов: основа, смыслы, примеры
![](https://habrastorage.org/webt/pi/nh/hs/pinhhsm9zhayq104tjbvbbvkpfw.jpeg)
Анатолий Попко
![](https://habrastorage.org/webt/a5/4e/vl/a54evlwdfp7jjxm0mdunpvb4wts.png)
Валерия Курмак
Интерактивный воркшоп, на котором мы вместе будем проектировать невизуальные интерфейсы:
включим TalkBack и VoiceOver и вспомним, как и зачем ими пользоваться;
по-честному взглянем на цифровой интерфейс и его представления: визуальное, аудиальное и даже тактильное;
проанализируем ключевые компоненты интерфейса и попробуем спроектировать решения с точки зрения их правильного представления вспомогательным технологиям.
???? Как быстро сократить вес приложения: переносим картинки и строки локализации на сервер
![](https://habrastorage.org/webt/jz/s8/cq/jzs8cq221lehpbujsra1wkszk8m.png)
Александр Евтухов
Банк Открытие
Рассмотрим, как можно сократить размер приложения. Сделаем вывод, что одним из важнейших аспектов в этом процессе будет избавление от строк локализации и XCAsset-каталогов. Спикер расскажет, как это можно сделать с минимальными вложениями и без широкомасштабного рефакторинга всего приложения.
♾️ Tracer – альтернатива Crashlytics, или Другой взгляд на аналитику ошибок в приложениях
![](https://habrastorage.org/webt/dn/kr/1e/dnkr1emmoqq8e-p-mekz-auwo-y.png)
Кирилл Попов
VK / Одноклассники
Tracer – система аналитики ошибок от команды OK.Tech. Эту систему используют почти все крупные бизнес-юниты VK – такие, как Одноклассники, ВКонтакте, Дзен, Юла, Почта, RuStore. По мнению команды, получилось хорошо, поэтому решили выйти в public и поделиться сервисом со всеми, он бесплатный.
Спикер расскажет про отличия Tracer от Crashlytics в части работы с крэшами и зависаниями (ANR) и покажет их на реальных примерах. Продемонстрирует работу и других инструментов команды: профайлеров, мониторинга утечек памяти и мониторинга утечек файлов на диске. Также Кирилл поделится деталями, как это всё реализовано на бэкенде. Сейчас публичный сервис работает для Android и iOS.
Кстати, про один из профайлеров спикер уже рассказывал на Mobius в 2020 году.
???? Взлом и защита Android-приложений
![](https://habrastorage.org/webt/xm/ic/gk/xmicgk0bbbtm_n7uietdd6jyloy.png)
Данил Перевалов
Циан
Рассмотрим способы взлома и защиты. Будем пытаться сначала атаковать приложение, а затем тут же защититься. А потом атаковать новую защиту, и так по кругу.
Сперва поговорим о банальных вещах – таких, как просмотр данных приложения через снифферы трафика или просмотр байт-кода. Далее о более сложном: поговорим об изменении поведения приложения через Frida и защите от этого с помощью C++. И в конце попытаемся взломать С++.
???? Моментальный запуск: как VK Клипы работают с плейбэком видео на Android
![](https://habrastorage.org/webt/a5/s3/ug/a5s3ug3ljf0cqrroiao45agrcb4.png)
Дмитрий Рычагов
VK Клипы
В VK Клипах Дмитрий с командой постоянно занимается оптимизациями ленты: от рекомендаций и хранения до воспроизведения на клиенте. Спикер расскажет о том, что им помогает добиться моментального запуска видео. Также рассмотрим эффективное использование ExoPlayer, интеграцию видео в RecyclerView и подводные камни, которые могут встретиться на пути.
♾️ Как мы сделали ставку на KMP
![](https://habrastorage.org/webt/d0/az/8l/d0az8ln_cpezm2xyikbnq3n8yvq.jpeg)
Павел Новиков
МойОфис
История о внедрении KMP в приложение. Павел расскажет, какие были предпосылки, почему сделали ставку на эту технологию, как принимали решение, где находятся сегодня и куда идут.
Заключение
Напомним, что в этот раз конференция проходит так: сначала два онлайновых дня (1-2 ноября), а затем два дня в Санкт-Петербурге (9-10 ноября).
Те, кто не готов добраться до Питера, смогут и ко второй части подключиться удалённо, так что не пропустят ни одного доклада и смогут вместе со всеми расспрашивать спикеров. Но если добраться лично, то получаешь далеко не только доклады: можно будет и как следует наобщаться в офлайне, и участвовать в активностях на стендах партнёров.
И напоследок напомним ссылку на сайт Mobius: вся остальная информация там, билеты тоже.