На примере обычной кнопки Евгений расскажет, почему верстка интерфейса не так проста, как кажется на первый взгляд, и почему объяснить процесс создания UI-элемента порой сложнее, чем рассказать об алгоритмах работы с деревьями.
В докладе пойдет речь о системе PyDjinni, которая служит для автоматической генерации межъязыковых мостов C++<=>Swift и C++<=>Kotlin на основании псевдокода, описывающего необходимые сущности. Эта система используется для разработки мобильных приложений под iOS и Android, имеющих общее ядро, написанное на C++. Благодаря автоматической генерации мостов можно избавить прикладных программистов от написания большого количества сложного boilerplate-кода.
Когда был только Firebase все было просто. Теперь тренды меняются, появился HMS, появляются региональные решения. Артём расскажет, как охватить большую аудиторию используя не только Firebase.
Доклад Сергея продолжает и развивает доклад «The Elm Architecture in Prod» с последнего Mobius, где обсуждали основные компоненты возможной UDF-архитектуры и показывали на практике, как можно контролировать сложность состояния в UDF.
Как писать на Compose сразу для iOS и Android, а если JetBrains еще что-то не добавили — как добавить это самому. Что происходит, когда Compose рисует вьюшки на обе платформы.
Android SDK Extentions — одна из самых свежих новинок Google, которая позволяет использовать функции новых версий ОС на старые версии Android. В своем докладе Кирилл опишет весь тернистый путь борьбы Google с вендорами, чипмейкерами и разработчиками, чтобы сделать Android без фрагментации и не взять все обновление ОС под свой контроль.
Максим расскажет, как sequence работают под капотом и измерит выигрыш от их использования. Вы узнаете, насколько корректно правило detect CouldBeSequence.
Подходы к навигации в модульных проектах: роутинг, декомпозиция, декларативные подходы. Андрей поделится практическим опытом из текущего проекта интеграции диплинков для модулей, использующихся в разных приложениях. Он поговорит о проблемах, с которыми они столкнулись, и решениях, к которым пришли в итоге.
Михаил расскажет, как под капотом устроен фреймворк от Apple по работе с видео и аудио — AVFoundation. Он разберет основы библиотеки и более интересные вещи, такие как: реверс видео, трансформации, стикеры, звуковые эффекты и другие.
Анатолий расскажет о том, как спроектировать систему холодной конфигурации для Android-приложения. Он опишет существующие подходы, их плюсы и минусы. Спикер объяснит, как в идеале должны работать конфиги, и на какие компромиссы имеет смысл идти в случае многомодульного приложения.
Доклад о том, как Сергей с командой применили в iOS-проектах Тинькофф предкомпилированные зависимости в виде XCFramework с использованием CocoaPods, fastlane, GitLab CI и на примере проекта Тинькофф Бизнес ускорили холодную сборку до 2 раз.
Спикеры расскажут про принципы разработки и интеграции программных клавиатур в Android и настройку EditText под различные задачи. Они рассмотрят Android SDK в точке коммуникации между полями ввода и сервисом клавиатуры. Далее вы услышите про причины возможных проблем взаимодействия приложений с InputMethodManager и узнаете, как корректно настроить EditText для различных сценариев. Дмитрий и Вадим опишут взаимодействия с полями ввода со стороны приложения клавиатуры и покажут, как разработать собственное.
Александр расскажет, как они в Открытии внедряли Tuist: как добиться того, чтобы он работал параллельно с CocoaPods, как собрать на его базе аналог Independency от Авито и как настроить кэширование билдов.
Никита опишет новую iOS-камеру ВКонтакте и VK Клипах. Он расскажет, какой API предоставляет Apple для взаимодействия с системной камерой (фреймворк AVFoundation) и какая обертка была написана поверх этого API. Он объяснит построение флоу фильтров для кадров с камеры и поделится техниками использования моделей CoreML для распознавания. Вы узнаете про изменение fps для камеры, пользу EXIF-формата и устройство Camera FOV, а также про замеры работы ML-моделей, Apple ARKit-распознавания и имплементацию AR Session.
Доклад Алексея — это попытка заглянуть в то, как устроен Compose для iOS внутри. Он расскажет о том, какие проблемы приходится решать инженерам JetBrains, чтобы сделать адаптацию, и в какой стадии сейчас разработка.
Несмотря на то, что современные инструменты разработки очень упрощают доставку медийного контента в приложения (XCode, Figma) разработчики и тестировщики таких приложений постоянно сталкиваются с проблемами, приводящими к разбуханию размера приложения или неправильному отображению контента, а некоторые приводят к притормаживанию интерфейсов. Сергей расскажет о различных инструментах решения этих проблем, и, конечно же, представит простое и наиболее универсальное, которым он хочет поделиться с вами.
В докладе будет представлен современный взгляд на архитектуру и методологию разработки сложных клиентских приложений. Здесь слово «клиентских» означает независимость от платформы (iOS, Android, Web, Qt и т.п), а «сложных» — подразумевает наличие как синхронизируемого с бэкендом клиентского состояния, так и множественных источников событий. Основной упор будет сделан на обеспечение тестируемости (unit-тесты и интеграционные тесты), наглядности (отображение UML-диаграмм в код) и пластичности (устойчивость к изменениям).
Абакар расскажет, как у них в команде появились внутренние библиотеки и какую цель они должны были выполнять. Затем он опишет, как росло число этих библиотек и количество связей между ними. Публичный API этих библиотек не всегда был спроектирован грамотно, и это начало приносить проблемы. Спикер пройдется по основным проблемам, с которыми они столкнулись, и покажет, как они их решали. А в конце поделится выводами, которые они сделали для себя на этом этапе.
Юрий объяснит, почему важно уделять внимание безопасности всех составляющих сервисов, а в особенности — мобильным приложениям. В докладе есть бизнес-часть (про публикации, проверки магазинами приложений, риски взлома приложений) и чисто техническая часть (про песочницы приложений, шифрование, мифы про Flutter и другое). Теория, как обычно, закреплена практикой и примерами реальных уязвимостей и недостатков приложений.
Спикеры будут показывать код с корутинами и спрашивать, что в нем должно случиться, а слушатели будут выбирать варианты ответов. После этого будет запускаться живой код и оцениваться то, что получилось на самом деле. Затем будем разбор того, почему все именно так. Кто выберет больше всего правильных вариантов — тот и победил. Будут примеры с синхронизацией и конкурентной работой, отмена корутин и неочевидности Kotlin Flow.
Gradle.kts уже давно не новая технология, но далеко не все на нее перешли. Причины разные: кто-то слышал о плохом перформансе, кто-то пытался мигрировать, но с ходу не вышло. Даже спустя 5 лет после релиза скуповатая на детали документация не проясняет многие кейсы. Андрей постарается исправить эту ситуацию в своем докладе.
Как и зачем выбирать MVI или MVVM+ фреймворк в 2023 году, на что важно обращать внимание и что может легко ускользнуть, внезапно всплыв лишь в продакшене.
Из доклада вы узнаете, почему мультирепа и многомодульность — это круто и захотите их себе. Спикер и покажет проблемы, которые они создают, и сразу решит их. Особый упор будет на синхронизацию изменений репозиториев, полное избавление от dependency hell и контроль над консистенстностью большого проекта.
BLE изначально задуман как технология для обмена данными с низкой скоростью. Но что если мы хотим обновить прошивку на подключенном устройстве? Или собрать логи? Или отправить файл? Тогда нам нужно выжать максимум скорости из BLE. Про это и пойдет речь в докладе: как работает BLE, какие параметры у него есть и что изменить для ускорения.
Для экранов мобильного приложения, UI которых приходит с бэкенда, в команде спикера придумали Backend Driven Аналитику. Она хранится и настраивается на бэкенде, а события отправляются из мобильного приложения, когда пользователь взаимодействует с экраном.
Миша проанализировал разные алгоритмы поиска сообществ в графах и создал инструмент, который стал его путеводителем в решении задачи модуляризации. Ориентируясь на различные метрики, можно предсказывать, на сколько модулей будет оптимально разбить ваш монолит, какие классы должны войти в них и с каких модулей лучше начинать.
Кирилл расскажет, как в Тинькофф внедряли Swift Concurrency, какие требования предъявляли к новому инструменту и какие альтернативы рассматривали. Он поделится best practice, разработанными при написании кода со Swift Concurrency, напомнит про акторную модель и покажет, как может измениться написание кода фичи при ее использовании. И, конечно, как постепенно мигрировать на данное решение, какой стратегии стоит придерживаться, и почему за Swift Concurrency будущее.