Обновить

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

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

Profile page как в TikTok/Instagram на UIKit (iOS 15+)

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

Если вам когда-нибудь приходила задача сделать страницу профиля как в популярных социальных сетях, то вы понимаете всю боль верстки такого дизайна на SwiftUI — особенно для версий iOS ниже 16. Готовые решения не гуглятся, полностью рабочих репозиториев нет, ИИ ещё не умеют в такие комплексные задачи, а Telegram скрывает похожий лэйаут за внутренними библиотеками. Давайте разбираться, что тут можно придумать.

Читать далее

От State к Event: как два sealed class закрывают архитектуру Android-экрана в Kotlin

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

Хаотичные события в Android (навигация, тосты, запросы) часто превращаются в источник багов и нечитаемого кода. В этой статье вы узнаете, как использовать sealed-интерфейсы Kotlin для создания полной, типобезопасной модели экрана, где состояния и события управляются отдельно и предсказуемо. Вы научитесь превращать одноразовые побочные эффекты в строго контролируемый поток команд, получите compile-time гарантии, избавитесь от багов с поворотом экрана и сможете легко тестировать любые события UI. Рассмотренный подход не только защищает от ошибок, но и кардинально упрощает масштабирование логики. Вы сможете добавлять новые события без риска сломать существующую функциональность, а ваш UI-слой станет чистым и декларативным. При этом всё, что нужно для внедрения - это понимание базовых принципов Flow и ViewModel.

Читать далее

MVVM+Coordinator+Factory: Святая Троица внедрения зависимостей

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

Эта статья - финальный аккорд в нашей трилогии об архитектуре. Мы уже научились наводить порядок внутри экрана с помощью MVVM и управлять потоками переходов через Coordinator. Но остался один неудобный вопрос: кто создаст все эти зависимости? Если ваш Координатор превратился в свалку из десятка сервисов, которые он просто пробрасывает дальше, значит, пришло время внедрить Factory. Вы узнаете, как разделить создание объектов и управление ими, почему глобальные DI-контейнеры - это яд замедленного действия, и как построить систему, где каждый компонент получает только то, что ему нужно, не зная лишнего.

Продолжим

Интеграция зависимостей в iOS через Carthage in the wild

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

На дворе 2026, все пишут на SwiftUI и менеджерят зависимости через SwiftPM, но речь пойдет о Carthage - менеджере зависимостей для приложений под Apple платформу которому уже примерно 10 лет, то есть появился почти сразу после выхода языка Swift.

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

Давайте разбираться с самого начала.

Читать далее

Kotlin Symbol Processing: создаём свой процессор

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

Если вы разрабатываете на Kotlin, то наверняка сталкивались с генерацией кода: аннотации, которые необычным образом создают за вас кучу шаблонного кода.

Dagger/Hilt генерирует DI‑классы, Room генерирует DAO и сущности, Moshi генерирует JSON и т.д. Это экономит тонны времени. Но долгие годы для Kotlin‑проектов приходилось использовать KAPT — Kotlin Annotation Processing, прослойку для совместимости с Java‑аннотациями.

KAPT работал, но имел свои минусы. Он генерирует Java‑стабы из Kotlin‑кода и прогоняет стандартный Java Annotation Processor. Эта махинация замедляет компиляцию: сначала компилятор Kotlin должен переварить ваши исходники в промежуточные Java‑классы, потом снова всё это компилировать. Плюс, KAPT порой криво понимал Kotlin фичи, потому что мыслил категориями Java.

И вот появился Kotlin Symbol Processing (KSP). Это библиотека, которая позволяет писать процессоры напрямую для Kotlin. Обещают до 2х ускорения сборки по сравнению с KAPT, полную поддержку всех фич языка и мультиплатформенность.

Разобрать KSP

Ахиллесова пята SharedPreferences и стоит ли внедрять Datastore как альтернативу

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

Проблему SharedPreferences можно описать несколькими словами: ANR, блокировка перехода между экранами, явное нарушение стрик мода в Android SDK по работе в главном потоке.

В чем проблема с SharedPreferences и решит ли ее Datastore - узнаем в этой статье.

Узнать подробности

Выставить приложение в плей маркет и быть заблокированным через месяц

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

Мы хотели запустить приложение в нише 18+ всего за неделю. Звучало как идеальный план, но на деле это вылилось в три года работы и вечный бан в Google Play. В статье я расскажу, как мы пытались обмануть систему, набивали шишки с React Native и в итоге заменили отдел маркетинга на скрипты в n8n. Это история о том, как потерять аккаунт разработчика, но все-таки построить прибыльный продукт

Читать далее

Flutter — для веб приложений, Jaspr — для веб сайтов

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

Я не нашел на хабре достойного представления фрейморка Jaspr сообществу и решил представить сам. Flutter, безусловно, хорошая магия: один код для всех платформ, в том числе и Web. Но за магию приходится платить. Платить мегабайтами загрузки, муками с SEO и ощущением, что ты принёс на пляж боулинг — вроде и весело, но как-то не к месту. Команда Flutter и сама честно говорит: Flutter Web создан для веб-приложений, а не для веб-сайтов. Для сложных дашбордов, PWA, для всего, что живёт за логином — да. Для контентного сайта, блога, лендинга — увы.

Знакомьтесь, Jaspr. Веб-фреймворк на Dart, который осознанно отказывается от канваса и пиксельной магии Flutter в пользу старого доброго HTML и CSS. Он выглядит как Flutter, ощущается как Flutter, но на выходе даёт то, что поисковики и браузеры любят и понимают: обычный HTML-документ и DOM. А попробовать на вкус его можно здесь.

Читать далее

Vivaldi 7.8 для iOS: Магия на пальцах

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

Как бы далеко ни продвинулся научно-технический прогресс, но ручная работа по-прежнему остаётся востребованной среди представителей Homo Sapiens. Особенно это касается современных смартфонов, ставших нашими неизменными помощниками в самых разных областях деятельности. И в новой версии Vivaldi 7.8 для iOS мы постарались ещё немного оптимизировать процесс работы в браузере, добавив три функции, которые значительно упростят жизнь пользователей.

Читать далее

Vivaldi 7.8 для Android: Закрепляй и контролируй

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

Разработка мобильной версии браузера накладывает дополнительные ограничения в плане расширения функциональности, но от этого задача становится только интереснее. В новой версии браузера Vivaldi 7.8 для Android мы смогли расширить возможности работы с вкладками, а также добавили несколько весьма полезных опций.

Читать далее

Под капотом Android Automotive: Что такое VHAL и почему это сердце машины

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

В прошлой статье мы запустили эмулятор и убедились, что Android Automotive OS (AAOS) — это не просто зеркало вашего телефона. Это самостоятельная экосистема. Но пока мы запускали только стандартные медиа-плееры, мы скользили по поверхности.

Настоящая магия начинается там, где софт встречается с «железом».

В телефоне у вас есть стандартный набор датчиков: GPS, акселерометр, гироскоп. В современном автомобиле таких датчиков тысячи: от давления в шинах и температуры масла до угла поворота руля и статуса каждой двери. Как Android-разработчику получить доступ к этому океану данных? Не будем же мы тянуть провода к OBDII разъему?

Конечно, нет. Для этого Google построила мощный мост, по которому мы сегодня и пройдемся. Добро пожаловать в мир Car API и VHAL.

Читать далее

Как мы помогали Стэнфорду следить за акулами

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

Вот что для этого понадобилось: бэкендеры — 2 штуки, фронтендер — 1 штука, дизайнер — 1 штука, мобильный разработчик — 1 штука, время — 2 учебных семестра.

Продолжаем рассказывать об интересных проектах студентов Контура. В этот раз речь пойдёт о приложении для интерактивного мониторинга белых акул по заказу Стэнфордского университета. 🦈 В статье ребята рассказали, какие возможности реализовали внутри приложения, какой стек технологий выбрали и что за сложности случились на фронтенде и бэкенде.

Читать далее

Уменьшаем зависания и оптимизируем потребление трафика: как команда VK Видео работает с viewport на Android

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

VK Видео — один из крупнейших видеосервисов в России. В декабре 2025 года его ежемесячная аудитория достигла 81,5 млн пользователей. А в первую неделю января 2026 года среднесуточная аудитория VK Видео превысила 42 млн человек (без учёта просмотров на Smart TV и встраиваемых плееров, по данным Mediascope). 

Часть аудитории пользуется сервисом на устройствах Android. Для работы с видео на Android у VK есть единое решение — SDK OneVideo Player. Оно основано на библиотеке Media3 и содержит много улучшений и доработок в части проигрывания видео. Одна из таких оптимизаций — адаптация видео под viewport.

Меня зовут Егор Баженов. Я Android-разработчик в команде видеоплатформы VK. В этой статье я расскажу, как мы внедрили адаптацию под viewport в нашу библиотекуи каких результатов это позволило достичь.

Читать далее

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

Поддержка Flutter Impeller для ОС Аврора

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

Меня зовут Никита Красавин, я тимлид команды разработки Flutter для ОС Аврора в Открытой мобильной платформе. Сегодня я расскажу вам об одной из нашумевших фич Flutter, или, правильнее сказать, о компоненте, который мы адаптировали для Авроры с целью повышения производительности приложений. Повысилась она или нет — ответим ниже в статье. Встречайте: Impeller для ОС Аврора.

Читать далее

Про то, как я Storage Access Framework укрощал, да файлы в хранилище приручал

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

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

Но вот однажды пользователи стали жаловаться, что не могут найти ранее подписанные документы. Бывало, пользователь подписал файл, долго к нему не возвращался, а спустя время уже не смог его отыскать. Переустановил приложение или авторизовался с другого устройства, и все файлы как в воду канули. 

Меня зовут Георгий Левченко, я Android-разработчик в ПСБ. Начал я искать источник бед пользовательских. Оказалось, виной всему было то, что все файлы хранились в кэш-директории приложения. Понял я: чтобы файлы не пропадали, им нужен менеджмент для файлов. Отыскался у Android для таких целей готовый инструмент — Storage Access Framework (SAF), он служит для доступа к файлам через стандартный интерфейс без управления разрешениями вручную. Поведаю под катом, как я решал с его помощью эту задачу. 

Читать далее

Превращаем старый планшет в умную фоторамку за 0 рублей

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

У многих есть старые гаджеты которыми уже сложно пользоваться из‑за их возраста, но они до сих пор работают, причём выкинуть их жалко, а дорого уже не продать. У меня так валялся планшет Amazon Fire HD 6 (Ariel), он 2014 года. На досках объявлений такой стоит около тысячи рублей — ищется по фразе «amazon fire планшет».

Как‑то раз я увидел в магазине фоторамку и сразу же подумал про этот старый планшет. Но конечно, самое простое было просто купить готовую фоторамку. Или попробовать без всякой перепрошивки воспользоваться Fire Toolbox чтобы получить расширенный контроль над системой. Но FireOS заточена под amazon, а для меня это не актуально.

А ещё мне было интересно не только увеличение скорости от чистого Android вместо FireOS, но и сам процесс перепрошивки, потому что раньше были времена, когда я активно менял прошивки (ROMs) на своем основном телефоне, экспериментировал с ядрами и модами.

Конечно, рационально — это глупость. Но если вы любите ломать железо — вам сюда. И мне снова захотелось пройти этот квест от получения полного доступа через уязвимость до установки чистого Android.

Хакаем планшет

Coordinator в iOS: как я перестал бояться кнопки «Назад» и полюбил навигацию

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

Эта статья - логическое продолжение нашего погружения в архитектуру. Если в первой части мы навели порядок внутри «черного ящика» под названием ViewModel, то здесь мы выйдем за его пределы. Вы узнаете, как выпилить логику переходов из ViewControllers и ViewModels, почему вызов navigationController?.pushViewController() прямо в экшене кнопки - это архитектурный тупик, и как построить систему навигации, которая не превратит ваш проект в спагетти при добавлении десятого экрана. Мы разберем концепцию Child Coordinators, решим проблему утечек памяти (спойлер: системная кнопка "Назад" - ваш враг) и обсудим, выжил ли этот паттерн в эпоху SwiftUI.

Продолжим

Пациент болен: как «продать» рефакторинг лиду и продакту

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

Недавно я перешёл в новую команду и столкнулся с классической задачей — рефакторингом сложной продуктовой фичи. Путь от диагностики проблемы до «продажи» решения был тернист... и нереально интересен. Всеми знаниями, что из него вынес, делюсь в этой статье.

Текст будет полезен не только разработчикам продуктовых команд. Участникам core-команд расскажу про общие принципы рефакторинга, а менеджерам помогу понять, чем отличается зрелое предложение о рефакторинге от обычного «хочу всё переписать».

Хочу узнать про рефакторинг ВСЁ

Как незрячие пользуются навигаторами

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

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

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

Читать далее

Мобильная разработка за неделю #617 (26 января — 1 февраля)

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

В новом дайджесте простые синтаксические приёмы и Android Developing через вайбкодинг, холодный старт Android-приложения и MVVM-курильщика, разработка браузера для iPad, тренды UX/UI-дизайна 2026, железо для ИИ и многое другое. Подключайтесь!

Читать далее