Обновить

Мобильная разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Построение KMP SDK: базовая архитектура для общей библиотеки

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4.9K

В прошлой статье было много текста о том, почему мы стали смотреть в сторону кроссплатформенной разработки и почему мы в Instories выбрали именно Kotlin Multiplatform (далее — KMP) для своего решения.

Кратко напомним контекст и продукты: Instories — мобильный видеоредактор для маркетологов, SMM‑специалистов и блогеров. Контектс проекта: желание получить ряд SDK (мы называем их Kit‑ами, по сути это разные сборки SDK для разных продуктов, со своими ресурсами, фичами и дизайн системой) для наших уже существующих приложений, которые содержали бы в себе коробочные фичи (и бизнес‑логику, и UI), готовые к подключению, а также были бы легко расширяемыми и переиспользуемыми для разных приложений компании.

Мы выбрали использовать многомодульную архитектуру, чтобы каждая фича была инкапсулирована в своем модуле и не влияла на другие фичи, а также разделили проект на несколько крупных пакетов: kits, core и feature. В данной статье мы рассмотрим первые два пакета с технической точки зрения, а также поделимся причинами и инсайтами для выбранных решений.

Читать далее

Как я писал свою звонилку для видеозвонков

Время на прочтение4 мин
Охват и читатели13K

Я написал свою альтернативу звонкам в WhatsApp и Telegram — полноценный Android-клиент на WebRTC с поддержкой P2P-аудио и видео, STUN/TURN, сигналингом и собственным UI.

Забудьте про «корпоративные мессенджеры»: проект JOPA Call (👉 «Just One Peer App») работает напрямую, без лишних посредников.

Реализовано: peer-to-peer соединения, fallback через TURN, мини-preview окна камеры, управление потоками и адаптивное видео.

Макс и его «супераппы» могут курить в сторонке — теперь у меня есть свой звонок-клиент, который не зависит от гигантов.

Читать далее

Внедрение пуш-уведомлений в React Native: от Firebase до кастомных модулей

Время на прочтение23 мин
Охват и читатели5.8K

Привет, Хабр! Меня зовут Георгий, и я тимлид команды платформы в компании Купер. Мы специализируемся на разработке IT-приложений для маркетинга и бизнеса, включая кроссплатформенные мобильные решения на базе React Native. В этой статье я хочу поделиться опытом работы с пуш-уведомлениями. Расскажу, с чего мы начинали, какие проблемы встретили и к чему пришли на текущий момент. Все примеры возьму из свежего проекта, исходники которого доступны на GitHub — ссылку оставлю в конце.

Читать далее

Построение KMP SDK: наш опыт, плюсы и минусы, и как это изменило разработку

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели5.1K

В современном мире мобильной разработки скорость вывода новых функций на рынок становится критическим фактором успеха. Особенно это актуально в контексте быстро развивающихся технологий, таких как AI, где промедление может стоить конкурентного преимущества. Рассказывать будем на примере нашего продукта Instories — мобильного видеоредактора для маркетологов, SMM-специалистов и блогеров.

При этом, конечно, следует добавить контекста: наша компания уже имеет на рынке устоявшийся продукт и ключевым желанием была возможность быстрой доставки новых фичей и трендов до наших пользователей в уже существующих приложениях, что накладывало и некоторые ограничения при выборе подходов и технологий.

Именно с такими вызовами столкнулась наша команда, когда мы начали искать способы оптимизации процесса разработки для iOS и Android платформ.

Этот цикл статей посвящен истории нашего опыта решения такой глобальной задачи, мы понимаем, что у каждой команды и даже разработчика может быть свое мнение относительно разных технологий, в том числе и не соответствующее нашему.

Читать далее

Компенсация сетевой задержки: как зародилась технология rollback netcode

Время на прочтение5 мин
Охват и читатели6.7K

Как сообщил мне GPT5, технология компенсации сетевой задержки в играх, также известная как «откат сетевого кода» (rollback netcode) впервые была применена в игре «Super Street Fighter II Turbo HD Remix» (2008). Но это не так: именно такой механизм я реализовал в «Pathway to Glory» (Nokia N-Gage, 2004) и «Warhammer 20K: Squad Command (PSP, NDS, 2007)». В этой статье кратко рассказано, как данная технология работает...

Читать далее

Flutter-дайджест сентября

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели5.7K

Привет, друзья! 🌐

Сентябрь оказался по-настоящему горячим месяцем для Flutter-разработчиков — громкие релизы, свежие статьи на Хабре, видеоразборы с YouTube и целая россыпь полезных пакетов. На нашем канале FlutterPulse мы собрали всё самое интересное в одном месте, чтобы вы ничего не пропустили.

Читать далее

Отделяем мух от Kotlett. Динамические обновления без релизов и BDUI

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.9K

Привет, Хабр! Меня зовут Александр Наумов, я руковожу разработкой мобильной платформы в VK Tech и Mail. В VK занимаюсь мобилками уже более десяти лет, и в этой статье я поделюсь с вами нашей внутренней кухней: как мы ищем инженерные решения, какого класса задачи мы решаем. Хочу поделиться нашей новой разработкой, которая, как мне кажется, может быть полезна сообществу.

Читать далее

Code Review с помощью ИИ: замена лиду или помощь стажёру?

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели5.5K

Привет, Хабр!

Последние пару лет часто возникает вопрос: «А может ли ИИ заменить тимлида на code review?». Вопрос созрел не на пустом месте – инструменты на базе LLM теперь умеют и подсвечивать баги, и предлагать правки к pull request. Хайп подогревают отчёты: 84% разработчиков уже используют или планируют использовать ИИ в работе. Однако доверие к таким ассистентам хромает: почти 46% инженеров активно не доверяют ответам ИИ (против 33%, кто доверяет). Получается парадокс: пользуемся – но проверяем. Давайте разберёмся, где AI-ревью реально помогает, а где лид остаётся незаменим. Спойлер: место лидов в команде пока в безопасности.

Читать далее

Погружаемся в недра Retrofit

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели7.9K

Покопаемся в исходниках Retrofit, чтобы открыть завесу тайны, как же он всё-таки работает с корутинами и почему я не ловлю краш, даже когда при вызове метода из Service не переключаю диспатчер на Dispatchers.IO.

Читать далее

Полный гайд по golden-тестам во Flutter: зачем нужны и как настроить

Время на прочтение30 мин
Охват и читатели6.3K

При создании интерфейса важно проверить, как он реально выглядит. Часто это проверяют все участники процесса — от разработчиков до менеджеров. И для автоматизации и упрощения процесса визуального тестирования приложения есть специальный инструмент — golden‑тесты. Это методология тестирования, в которой текущий UI сравнивается с предварительно сгенерированным «золотым» эталоном. Если вы уже слышали про скриншот‑тесты — это примерно то же самое, но есть нюансы.

Меня зовут Даниил Липаткин, я тимлид в команде разработки курьерского приложения Яндекс Доставки. В этой статье:

— Мы познакомимся с методологией, рассмотрим её преимущества и недостатки, а также когда её стоит и не стоит применять.

— Напишем базовый Golden‑тест на примере стандартных инструментов библиотеки flutter_test.

— Рассмотрим пакет alchemist, который решает проблему платформозависимости flutter_test.

— Получим прикладные рекомендации по применению тестов и настройке IDE и CI.

Читать далее

Как дизайн приложения помог сети суши-баров усилить бренд и повысить лояльность

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5K

Busimi — развивающаяся сеть ресторанов японской кухни в Великом Новгороде. Компания активно росла офлайн, но её цифровые каналы были ограничены. Заказы принимались через соцсети и мессенджеры, что было неудобно для пользователей и снижало скорость обслуживания.

Компания обратилась к нам с запросом на создание дизайн-концепции мобильного приложения, которое станет частью фирменного стиля бренда, подчеркнет высокий уровень сервиса и качество кухни, и создаст основу для дальнейшего цифрового развития бизнеса. 

Команда CleverPumpkin всегда стремится делать чуть больше ожиданий. И этот проект не стал исключением. Клиент пришёл за дизайном, но в итоге сотрудничества получил гораздо больше. Что именно — читайте в нашем кейсе.

Читать далее

Почему loadKoinModules и unloadKoinModules в Koin могут ломать ваши зависимости и как этого избежать

Время на прочтение2 мин
Охват и читатели6K

В Android-проектах Koin остаётся одной из самых популярных DI-библиотек, особенно в MVP/MVI и Compose-приложениях. Она проста в настройке, гибкая и хорошо работает в больших кодовых базах.

Но многие команды, стремясь к модульности и тестопригодности, начинают активно использовать функции loadKoinModules() и unloadKoinModules(). И здесь разработчики часто натыкаются на странную ошибку -_-

Читать далее

Массивы в Swift

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.2K

Привет, Хабр! В прошлой статье мы поговорили о строках в Swift - об их особенностях, внутреннем устройстве и подводных камнях. И я подумал: ведь строки это по сути - коллекции. А какая главная и самая популярная коллекция в Swift? Конечно же, массивы. Их используют повсюду. Но вы когда-нибудь задумывались, как они устроены внутри? Давайте погрузимся внутрь массивов и посмотрим, что они из себя представляют.

Читать далее

Ближайшие события

Мобильная разработка за неделю #604 (22 — 28 сентября)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели10K

В этом выпуске рассуждения о месте Rust в iOS и MAX в Android, погружение в JNI и опыт Shopify с React Native, архитектурный сдвиг оффлайна, быстрый старт в CI, мобильный рынок Турции, продукты для бумеров и многое другое. Заходите!

Читать далее

Как требование к навигации повлияло на архитектуру мобильного приложения

Время на прочтение8 мин
Охват и читатели7.9K

Привет! Меня зовут Никита и я Android-разработчик. Сегодня я хочу рассказать, как нам вместе с командой Nexign удалось реализовать сборку бизнес-сценариев в приложении для регистрации новых клиентов с особыми требованиями по навигации.

Читать далее

Быстрый старт в CI на примере Flutter (под банальный Android и интересную «Аврору»)

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

Flutter продолжает набирать популярность. Фреймворк предлагает низкий порог входа и возможность собрать приложение практически под любую платформу. Если вы хотите выпускать приложения стабильнее, чаще, быстрее, да еще и под несколько платформ и одним коммитом, то эта статья для вас.

Читать далее

Прорывная идея для существенного улучшения жизни незрячих: предложение запустить в массы новый интерфейс

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели15K

Картинка: prostooleh, freepik.com

Есть один очень интересный вызов для разработчиков робототехники (или тех, кто хотел бы ими стать), который почему-то на данный момент большинство начинаний обходят стороной — управление массивом приводов. Ещё одна категория людей, кому будет явно интересна эта тема — разработчики мобильных приложений. 

Задача эта весьма простая и сложная одновременно, так как массив приводов требуется для создания «управляемых выпуклостей», предназначенных для чтения незрячими людьми…

Остаться в темноте... Это страшно даже представить, а ведь множество людей так и живут, и это для них суровая реальность...

Хорошо, если слух есть, а если его нет... Сложно представить, насколько осложняется коммуникация, когда пропадает зрительная составляющая в мире, где так много информации передаётся в визуальном, в частности текстовом, формате. По сути, человек остаётся изолированным один на один...

Ниже будет некоторый обзор темы, после чего, мы плавно придём к ОЧЕНЬ интересной (на мой взгляд) идее, думаю, что будет интересно!

Читать далее

Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели12K

Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать.

Как показывает обсуждение в Твиттере, многие разработчики загружают данные в блоке init {} во ViewModel. Хотя подход кажется логичным, у него есть архитектурные недостатки. Автор статьи описал проблемы такого подхода и предложил гибкую альтернативу с использованием Flow.

Читать далее

Миграция на SPM: что мы выиграли и что потеряли

Время на прочтение9 мин
Охват и читатели6.5K

Спойлер: сократили размер приложений на 44% и ускорили их запуск в среднем на 51%.

Привет, Хабр! Меня зовут Владислав Сединкин, я занимаюсь iOS 10 лет и последние 2 года работаю в мобильной Core-команде Туту. В этом году мы решили сменить менеджер зависимостей и мигрировать с CocoaPods на SPM. Результаты оправдали ожидания, хотя и сложности на этом пути, конечно, были. В статье расскажу про проблемы, с которыми мы столкнулись в процессе, и предупрежу, на что стоит обратить внимание, чтобы не повторить наши ошибки.

Читать далее

Новая реальность найма: вы не прошли первый этап отбора из-за AI-галлюцинаций

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.4K

Вы откликнулись на вакансию, написали сопроводительное. Через пару минут — автоответ: «Спасибо, вы не подходите». Никакого рекрутера, только модель, которая прогнала ваш текст через NLP-алгоритм и решила, что навыков не хватает. 

Меня зовут Татьяна Горбацевич, я руководитель отдела рекрутинга в KODE. В статье расскажу, где и как компании применяют AI в подборе сотрудников, а где модели пока недостаточно хороши. И главное — что про это думают кандидаты.

Читать далее