Мобильным разработчикам давно знакома конференция Mobius, но в этот раз она пройдёт в необычном формате. В конце мая поучаствовать можно будет в онлайне (как в предыдущие два года), а вот в июне будет ещё и офлайн-день в Петербурге.Онлайновая часть будет сосредоточена на докладах, а офлайновая на живом общении: там будет сделано всё, чтобы участники могли вдоволь пообщаться и друг с другом, и со спикерами. Но понятно, что без докладов не обойдётся и в офлайне.И сейчас, когда большинство тем докладов уже известно, расскажем Хабру, о чём именно они будут. Доклады можно разделить по платформам, так что переходите к интересным вам подзаголовкам: Универсальное и кроссплатформенное Android iOS Декларативный UI. Flutter vs SwiftUI vs Jetpack Compose MadBrains Один из трендов мобильной разработки — декларативная верстка UI. В докладе попробуем понять, почему так происходит. Для этого придется вспомнить, что вообще такое «декларативный UI», какие у него плюсы и минусы. Может, он и не нужен, это просто очередная стильно-модно-молодежная штука, так что лучше верстать по старинке? Анатолий считает, что за декларативным UI будущее, но вот насколько оно безоблачное — необходимо разобраться. Чтобы это понять, возьмем наиболее популярные (без React Native — ну серьезно, хватит!) подходы и устроим между ними небольшой баттл. Это позволит посмотреть на все нюансы через призму сравнения разных реализаций — от легкости входа новичков до производительности и качества внутренней реализации. Получается обзорный доклад: конечно, когда за один час идёт речь сразу о трёх разных технологиях, невозможно занырнуть очень глубоко в каждую, зато можно получить общую картину по всем.  Анализ бигдаты показал... Всё о метриках качества Кошелёк Всем хочется иметь крутое, быстрое и плавное приложение, которое нравится пользователям. Приложение работает без падений? Хорошо, но это не единственный показатель. Что, если оно вроде бы не падает, но внутри полнейшее легаси с нулевым покрытием тестами, многочасовые сборки и несколько недель на регресс? Как это понять? Сергей расскажет о критериях качества продукта, разработки и тестирования. А также о том, как собирать метрики и визуализировать их. Платформенные команды в мобильной разработке SkyEng Во многих крупных командах мобильной разработки появляются так называемые платформенные команды. Что именно они собой представляют? Для чего они нужны, чем занимаются, как оценивать их эффективность? И, наконец, кому стоит идти в такие команды? В докладе будет обо всём этом. MVI и State Machine — визуализация и анализ диаграммы состояний с помощью VisualFSM Контур Василий расскажет об используемом подходе к визуализации бизнес-логики по исходному коду программы и о реализации MVI-архитектуры, которая этому способствует. Поделится опытом и расскажет о вызовах в разработке и поддержке проекта с большим количеством локальной логики — Контур.Маркет Касса. А также Василий расскажет о разработанной его командой библиотеке. VisualFSM — Kotlin-библиотека для реализации MVI-архитектуры и набор инструментов для визуализации и анализа диаграммы состояний конечного автомата. Визуализация происходит по исходному коду реализации FSM и не требует написания отдельных конфигураторов. Достаточно добавлять новые классы состояний и действий — они автоматически добавляются в граф состояний и переходов FSM. Доклад будет интересен тем, кто выбирает MVI-библиотеку для своего проекта или имеет крупные стейт-машины в текущем проекте и хочет их визуализировать. Организация IP-телефонии (набор номера, дозвон, двустороннее голосовое общение, etc) в мобильном приложении Московский кредитный банк В этом докладе Олег расскажет про свой опыт связывания iOS мобильного приложения с внутренней АТС банка: Как понять и реализовать SIP-протокол? Как организовать передачу аудио потока? Какой SipProxy-сервер использовать для связи с закрытой от «внешнего мира» АТС? Какие есть способы преодоления NAT? Добавляем комфорта в работу с WebView Яндекс.Дзен Другие доклады Mobius легко разбить на категории («это для iOS-разработчиков, а вот это кроссплатформенное»), а вот тут всё хитрее: встретится и слово «Android», и слово «кроссплатформенный». Тимур расскажет, как можно организовать взаимодействие между нативным кодом Android-приложений и веб-страницами. При качественном исполнении можно получить унифицированный и кроссплатформенный UI, который можно менять на сервере по щелчку пальцев. Реанимация мобильного приложения для розничной сети МТС и переезд на Flutter МТС Диджитал МТС Диджитал Тут рассмотрим архитектурные ошибки и различные технологии кроссплатформенной разработки. Разрушим мифы о трудностях работы с нативным функционалом во Flutter. Расскажем про реализацию Server-Driven UI подхода. И покажем, как можно разобраться с бардаком сборок мобильного приложения. Взгляд разработчика на качество продукта Яндекс.Маркет Этот доклад будет в офлайн-день, а полезен он может быть не только разработчикам, но и их руководителям. В какой-то момент в Яндекс.Маркете стало необходимо систематизировать процесс отслеживания и исправления качества продукта. Тогда команда решила разработать комплексную и масштабируемую программную систему. Основная идея была в том, чтобы преобразовать большое количество переменных качества в обобщенную метрику, на которую впоследствии можно ориентироваться. Также разберёмся с технической реализацией всего решения, используемыми инструментами и ролью разработчиков в достижении высокого качества продукта. В заключении рассмотрим результаты и опыт внедрения системы. История Android от L до T Тинькофф Это доклад офлайн-дня, так что после него Кирилла можно будет как следует потерзать вопросами «вживую».Каждый год выходит новая версия Android (не считая минорных релизов), и каждый раз разработчики получают новые возможности для пользователей и ограничения для API, а также новомодную замену для них. Конечно, каждый год появляются и материалы, разъясняющие всё про эти возможности. Можно с каждым новым релизом тщательно отслеживать все изменения. Но положа руку на сердце, многие ли так делают, если релизы распространяются неторопливо, так что нельзя сразу же тащить всё новое в продакшн? И для многих актуальна задача «быстро понять всё важное сразу за несколько лет». Так что Кирилл резюмирует все изменения актуальных версий Android и расскажет про самые важные аспекты. Также вы узнаете, что можно интегрировать к себе в приложение и какие оптимизации произошли под капотом Android за последние 8 лет. Системный подход к улучшению старта Android-приложения Яндекс Зачем оптимизировать скорость старта? Какие метрики старта бывают? Павел расскажет, как в супераппе Яндекса подходят к анализу и контролю скорости старта приложения на Android, как решается проблема зоопарка метрик и постоянного шума в замерах и графиках. Как собираются метрики, как они потом анализируются. Какие методы позаимствованы из веб-разработки для оценки скорости старта. Павел также расскажет об успешно внедренных оптимизациях скорости старта. Будет интересно Android-разработчикам, лидам разработки и аналитикам, которые занимаются улучшением производительности мобильных приложений. Анимации в Compose Кошелёк Jetpack Compose пришёл всерьёз и надолго, давайте погрузимся в мир его анимаций. Рассмотрим базовые принципы без особенностей технических реализаций.  Игорь поговорит о том, для чего вообще нужны анимации в мобильном приложении и какой от них профит. Опишет способы создания анимации в Jetpack Compose, высокоуровневые и низкоуровневые анимации. По отдельности проанализирует каждый способ и его особенности, с практическим примером, как этот способ можно реализовать. Затронет кастомизацию. Доклад поможет разобраться с анимациями в Jetpack Compose тем, кто хочет применять их на практике. Deep Dive Into Deep Link Технократия Технократия Поводом к появлению этого материала послужила задача из прошлого проекта. Нужно было расширить покрытие контента приложения новыми Deep Link. Все звучало просто, но когда начали тестировать решение, появились неочевидные проблемы: на разных версиях Android, оболочках, устройствах, приложениях такие ссылки работали по-разному. Вы знаете ответы на такие вопросы? Как отработает Deep Link на ссылку, если открыть ее в SMS-клиенте Honor 9 Lite (Android 9.0, EMUI 9.1.0)? А если попытаться в Gmail на Samsung A70 (Android 10.0, One UI 2.5)? Или попробовать Telegram на Xiaomi Mi5 (Android 8.0, MIUI Global 10.2.2.0)? Спикеры знают, потому что провели 280+ тестов и увидели все своими глазами! Еще они узнали, как можно обработать ссылки на уровне приложения (Linkify, HTML, Span), как выполняется их диспетчеризация (Jetpack Navigation Component, airbnb/DeepLinkDispatch, Custom), в какие нюансы Android придется удариться и как эти удары смягчить :) Все это поможет вам сэкономить время и силы при работе с Deep Link. Многомодульность и Koin 3 Сбер В докладе обсуждаются проблемы, которые возникли при использовании Koin в активно растущем Android-приложении. Было решено перейти на многомодульную архитектуру с модулями API и impl и адаптировать под неё Koin. Результаты — в докладе. Будет интересно Android-разработчикам, которые перешли или планируют перейти на многомодульную архитектуру в своих проектах. Будет рассмотрена возможность использования Koin в качестве DI фреймворка в контексте многомодульности. Как мы за неделю от синтетики избавились. IDEA-плагин миграции Работа.ру   Подход Kotlin Synthetic объявили устаревшим, и многим понадобилось мигрировать на View Binding.  В том числе такой задачей занимался Антон, и теперь он расскажет о том, как при миграции кодовой базы приложения с «синтетики» на View Binding для этого был написан IDEA-плагин.  Будет интересно Android-разработчикам, которые еще не успели мигрировать, и тем, кто интересуется плагиностроением. DI в Android в 2022 Яндекс Go   Что в целом представляет собой Dependency Injection? Как этот подход развивался в Java и нашел свое применение в Android-разработке. Какие DI-фреймворки существуют, и как они применяются в проектах Android-приложений сегодня — их достоинства и недостатки. Вращаем невращаемое, или Как повернуть экран звонка VK Звонки Пользователи любят быстрый, отзывчивый и плавный UI, изменение состояния с анимациями. У каждого производителя смартфонов системный поворот экрана в Android выглядит по-разному, не дает гибкости и полного контроля над процессом поворота Activity и View. Спикер расскажет, как плавно повернуть нагруженный экран с ресурсоемкими View и заблокированной в портретной ориентации Activity, добавить анимации, а также на примере экрана VK Звонков затронет нюансы, на которые стоит внимание. Артефакты, или Туда и обратно. Увлекательные истории использования внутренних библиотек между проектами Альфа-Банк   В компании спикера есть три основных проекта, и в какой-то момент команда начала создавать артефакты (дизайн-система, Server-Driven UI , целые feature flow), которые может подключать каждый проект. Абакар расскажет, какие плюсы это принесло, и с какими минусами пришлось столкнуться. Вы за это заплатите! Цена чистой архитектуры Кошелёк Есть стереотипичное представление о «Чистой Архитектуре», которое сформировалось однажды и не менялось годами. Цель доклада — сломать этот стереотип. Опытным слушателям, считающим, что тема уже давно раскрыта, этот доклад предоставит уникальный опыт и возможность взглянуть на вопрос за рамками стереотипа. Опытным слушателям, не знающим, как правильно высказаться против, будет дана вся необходимая теория и аргументация. Новички же смогут получить определение «Чистой Архитектуры», что позволит избежать завышенной цены. Positional memoization, или Как работает одна из главных концепций Jetpack Compose EPAM Systems С каждым днем Jetpack Compose набирает всё большую популярность, что позволяет технологии уверенно закрепиться в арсенале Android-разработчика, постепенно вытесняя привычные многим View. Однако не менее важным будет знать, как устроен тот или иной механизм внутри Compose. Спикер расскажет, как устроена одна из ключевых концепций данной технологии — positional memoization (позиционная мемоизация), а также покажет примеры оптимизации кода при помощи приобретенных знаний. Доступность в Яндекс Go Яндекс Яндекс Спикеры расскажут, почему работа над доступностью — это прежде всего работа над UX, а уже потом над API. Приведут примеры того, когда эвристики системного скринридера приносили больше вреда, чем пользы. А также объяснят, почему для работы над доступностью потребовалась помощь ещё и бэкендеров.  За гранью App Store: MDM, Supervised и другие возможности для разработки в бизнес-сегменте  Разработка для бизнес-сегмента может сильно отличаться от разработки для рядовых пользователей App Store. Открываются дополнительные возможности, основанные на Apple MDM (Mobile Device Management), также для приложения становятся доступны некоторые технологии, использование которых ограничено при распространении через App Store. Из доклада вы узнаете: Что такое конфигурационные профили и какие у них возможности. Как поднять собственный MDM-сервер и какие у него возможности. Какая дополнительная функциональность появляется у приложений в Supervised-режиме. Какие бывают альтернативные сценарии распространения приложения кроме App Store в B2B. Independency: сбрасываем оковы CocoaPods Авито Independency — это новая система модульности Авито. В докладе Тимофей расскажет:  Как приложение Авито поделено на модули. Для чего команда превратила CocoaPods в ужасного гомункула. О том, как может выглядеть идеальная система модульности. Что такое Indeendency. Как все перелинковать и не сойти с ума. Статический анализатор техдолга Сбер Доклад будет интересен тем, кто давно слышал про удивительные возможности SwiftSyntax, но не решался его попробовать. Вероника рассмотрит инструмент контроля техдолга в проекте Сбербанк Онлайн и других приложениях. Расскажет, как ее команда сократила время работы анализатора более чем в 8 раз и покажет, как с помощью одной строки вывести результаты анализа в Xcode в виде warnings. Вы узнаете, как сделать проверку техдолга быстрой и незаметной стадией в Xcode и сможете всё это легко реализовать в своих проектах. Ускорение разработки при помощи Unit-теста Spark Networks Возможно, вам известны такие подходы, как разработка в Playground, в SwiftUI Preview или через Micro Apps. В докладе будет представлен еще один метод ускорения разработки: разработка через «Интерактивный тест». Метод отличается стабильностью, доступностью и, наконец, помогает писать более тестируемый код.  Inlinable-оптимизации в Swift Ozon Максим расскажет про атрибут inlinable — как он влияет на компилируемый код и на производительность. Покажет, как применять его в проектах. Сравнит, как код работает с атрибутом inlinable и без него. Покажет, как можно с помощью пары строк кода значительно увеличить производительность. Доклад будет полезен тем, кто хочет писать более быстрый код и узнать новое про язык. Подробности про офлайн-день появятся позже на сайте конференции, но краткая суть такая: там будут и выступления, и много общения. Если хотите не пропустить эти подробности, можете подписываться на рассылку или страницы в соцсетях.  А если уже определились о посещении конференции, билеты также доступны на сайте.  Будем рады видеть и в онлайне, и в Петербурге!  ContentProvider