Обновить

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

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

Как мы вдвоем писали кроссплатформенный мессенджер: Compose Multiplatform, SFU на Go и сжатие трафика

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

Как силами двух разработчиков создать мессенджер под шесть платформ на Compose Multiplatform и Go. Рассказываем об оптимизации бандла до 10 МБ, разработке собственного SFU на pion/webrtc и синхронизации сообщений на слабых сетях.

Читать далее

Новости

Почему спидтест говорит «всё хорошо», а игра лагает: как я построил Latency Dashboard и научил пинг не врать

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

Спидтест показывает 200 мегабит, а в PUBG Mobile 180 мс — и оба числа правда. Пропускная способность и задержка измеряют разные вещи, и про вторую спидтест не говорит ничего.

Я собирал для своего iOS-приложения панель задержек: пинговать не «интернет вообще», а те серверы, которыми человек реально пользуется в своей стране, и сортировать их от худшего. Семь раундов измерений против лежащего рядом MacBook дали пять дефектов подряд — и вытащили баг, который жил в приложении с версии 1.0: два параллельных пинга забирали ответы друг у друга, потому что ICMP-сокет отдаёт и чужие echo reply тоже.

Читать далее

iPhone Duo для iOS-разработчика: что реально меняется в вашем Swift-коде

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

iPhone Duo сломал часть допущений, зашитых в iOS-приложения с 2007 года: экранов теперь два, safe area асимметрична, «только портрет» больше не значит что думаете. Разбираю по докладам Apple, что реально меняется в вашем Swift-коде — size classes, reserved regions, arrangements, hinge и камера.

Читать далее

Вайбкодинг. iOS приложение от идеи до стора

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

На разработку ушло 16 выходных дней и примерно 250$

Решил я значит разработать свое приложение, начитавшись материалов про ИИ и вайбкодинг, захотелось попробовать самому. Так как я являюсь UX/UI дизайнером, который занимается разработкой дизайна для приложений, я поставил себе несколько целей, которые должны были закрыться в процессе разработки аппы...

Читать далее

Мобильная разработка за неделю #646 (14 — 20 сентября)

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

Возвращаюсь со своим еженедельным дайджестом для мобильных разработчиков. В этом выпуске адаптация приложений под iPhone Duo и Shared Transition как требования дизайнеров, прозрачный Яндекс.Навигатор и нативная разработка в Shopify, фронтенд без готового бэкенда, путь к Chaos As A Service, ошибка после оформления подписки, которая приводит к оттоку и многое другое. Заходите!

Читать далее

Сервер был нужен ради одного заголовка: порт на Dart, future, который ждёт сам себя, и загрузчик без ffmpeg

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

Неделю назад я писал, почему видео из аниме-плеера нельзя просто вставить в <video>. Вывод был такой: нужен серверный видеопрокси, и никуда вы от него не денетесь.

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

Под катом: что именно делал сервер, почему на Android его нет, и что оказалось не переносом библиотеки с Python на Dart, а её переписыванием — вместе с багом, который жил в оригинале, стрелочной функцией в Dart, из-за которой whenComplete начинает ждать сам себя, и релизом, который подписывает не человек.

Читать далее

Навигация во Flutter: выносим переходы из экранов

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

Гайдлайны Apple, Android и Flutter по-разному, но одинаково настойчиво подталкивают задавать переход прямо в коде экрана — в документации go_router это штатный пример. В результате экран отвечает и за интерфейс, и за навигацию: его трудно переиспользовать, он знает про следующие экраны, а модульный тест превращается в интеграционный.

В статье — приём, который выносит переход из кода виджета туда, где для решения есть вся информация: экран сообщает о запросе пользователя, а решение принимает роутер вкладки или приложения. Одна и та же задача (две вкладки со своими стеками и общий экран, который в каждой вкладке ведёт себя по-своему) решена трижды: на штатном Navigator, на go_router и на auto_route.

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

Читать далее

100 и одна ночь с SDK VK и RuStore: Flutter 3.47, AGP 9 и переезд на Nexus

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

Если у вас в зависимостях есть SDK RuStore или VK — проверьте адрес Maven-репозитория: 30 сентября и 1 октября старые отключаются, а часть библиотек всё ещё ведёт на них. Ниже — таблица с конкретными файлами и строками, которые ещё не обновлены, и несколько историй о том, как я чинил SDK VK и RuStore под Flutter 3.47 и AGP 9 и присылал вендорам патчи.

Читать далее

Переносим дизайн-систему в код: риски, решения, лучшие практики

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

Задумались о том, чтобы вынести все UI-компоненты вашего проекта в дизайн систему? Или уже находитесь в процессе её разработки? Тогда эта статься, думаю, будет для вас интересна. И возможно даже поможет избежать потенциальных проблем и оптимизировать процесс её разработки и внедрения в проект.

Всем привет! Меня зовут Дмитрий, я разработчик дизайн‑системы на Android в компании Домклик. В этой статье расскажу, как нам удалось возродить проект дизайн‑системы и успешно внедрить его в наше приложение Домклик.

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

Итак, поехали...

Я писал ИИ‑агента с помощью ИИ‑агента: полгода, 1600 коммитов и ноль рейтинга

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

В IT я больше двадцати пяти лет, в Android — почти пятнадцать. Оказалось, что этого мало.

Опыт никуда не делся. Я по‑прежнему знаю, чем интерфейс отличается от абстрактного класса и в чём разница между val и var. Но работать по‑старому стало тяжело. В требованиях всё чаще стояло не знание Kotlin и Compose, а умение вести разработку с ИИ. Не «пробовал Copilot», а именно вести: ставить задачу, разбирать результат, замечать, где инструмент уверенно врёт.

Вместо привычных TDD, BDD, DDD и FDD вокруг всё чаще звучали AIDD и SDD. Дошло до того, что на работе в карточках JIRA появилось обязательное поле «уровень использования ИИ» со значениями «полностью выполнено агентом» и «частично выполнено агентом». Варианта «выполнено самостоятельно» там нет. Намёк понятен.

Назад пути не было, пришло время меняться.

Учиться по статьям смысла нет — там всё получается. Нужен был настоящий проект, достаточно большой, чтобы в нём было где ошибиться.

Тему выбрал не случайно. Хотел разобраться не только в том, как пользоваться ИИ‑агентами, но и в том, как их делать. Так и вышло: агента я писал с помощью агента.

Получилось приложение. Через полгода оно лежит в Google Play, я пользуюсь им каждый день, и это уже давно не учебная работа. Дальше — как оно из неё выросло: через три смены курса (учебный проект стал продуктом, Gemini CLI сменился на Claude Code, маршрутизатор на два выхода стал графом), одну стену, в которую я въехал на полном ходу, и запуск, который не сработал.

Читать далее

Штрихкод есть, базы нет: как я собирал справочник продуктов для домашнего приложения

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

Чтобы человек навёл камеру на пачку гречки и получил название, вес и калории, нужна база штрихкодов российских продуктов. Я был уверен, что она где-то есть. Её нет. Что проверял живыми запросами, почему каталоги сетей не взять, как чек ОФД заменяет каталог и как в итоге устроен справочник на 258 тысяч позиций, который растёт ровно на то, что люди сканируют.

Читать далее

Как разрабатывать фронтенд без готового бэкенда: инструменты перехвата трафика, мокирования и принцип их работы

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

Всем привет, на связи Дима Котиков! Я все еще люблю разрабатывать под Android/KMP, разбираться с инструментами для упрощения работы и латте на фундучном молоке. За пять лет мобильной разработки я неоднократно сталкивался с ситуацией, когда бэкенд запаздывает, а дедлайн горит. 

Зимой 2026 мы получили задачу: новый финансовый инструмент, дедлайн через три месяца, готовность бэкенда — через полтора. Команда начала работу на моках и успела. В статье я расскажу, какие инструменты перехвата и мокирования трафика помогли нам выпустить фичу в срок без готового бэкенда, как настроить их за один вечер и почему понимание принципов работы TLS и MITM-атаки экономит часы отладки.

Читать далее

Эволюция рендеринга в Zenith Engine: многопоточная загрузка GPU-ресурсов

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

В данной статье будем рассматривать технические детали графических API Metal, API Vulkan и многопоточное программирование, от читателя требуется знание перечисленных технологий.

Всем привет! Я Андрей, разработчик 3D-графики в 2ГИС.

Если вы пишете рендер на C++ и у вас есть отдельный RenderThread, то, скорее всего, вы уже сталкивались с подобным: данные грузятся в фоне, а вот создание GPU‑ресурсов всё равно происходит в потоке отрисовки через прямое обращение к графическим API Vulkan, Metal, Direct3D 12. И пока RenderThread в длинном цикле создает буферы и текстуры, он не рисует — он стоит, пока не обработает список загруженных ресурсов.

У нас это выглядело так на типичной средней сцене: до появления первого кадра на поток отрисовки приходило 532 текстуры и 2713 буферов, которые удерживали 45 МБ и 20 МБ временной памяти в RAM соответственно. Всё это нужно было доставить до GPU, создать наборы буферов и текстур, далее всё освободить и только потом начинать собирать батчи и рисовать.

В статье разберём, как мы вынесли создание буферов и текстур на потоки загрузки, что для этого дает Metal, почему в Vulkan всё сложнее, и какие ограничения по особенностям работы графических API пришлось учитывать.

Читать далее

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

Адаптация iOS-приложений под iPhone Duo

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

Привет! Я Валерия Кудрявцева, iOS-разработчик в KTS. Пора поговорить о новинке.

9 сентября 2026 года Apple представила iPhone Duo, свой первый складной смартфон. Пока пользователи обсуждали новый форм-фактор, у нас, iOS-разработчиков, вопрос был другой: как поддерживать приложение на устройстве с двумя экранами и сгибом. Для нас Apple подготовила раздел HIG о проектировании под Duo, шесть Tech Talks и хаб Get Ready for iPhone Duo.

Статья основана на опубликованных Tech Talks Apple. Xcode 27.1 beta на момент подготовки ещё не вышел, поэтому возможности 27.1 описаны по презентациям. Проверить их на практике нужно после выхода SDK.

Сразу оговорюсь. По информации Apple, существующие приложения запустятся на Duo и без пересборки. Но адаптацию интерфейса это не отменяет: то, как приложение займёт внутренний дисплей и как поведут себя стандартные панели, зависит от SDK, с которым оно собрано. Различия разберу ниже.

Отдельный интерфейс под каждую pose Duo делать не нужно. А вот допущения в текущей вёрстке проверить придётся. Если код берёт доступное пространство из модели устройства или ориентации и считает отступы симметричными, на Duo такие расчёты дадут неверный результат. Основа остаётся одна: адаптивный UI, который смотрит на размер текущего окна и на size class.

Дальше разберу изменения iOS 27, что система сделает сама и что нужно править в коде, новые API 27.1 и типичные ошибки при аудите. В конце сравню подходы с Android foldable и расскажу, что из этого уже есть в Compose Multiplatform.

Читать далее

SOLID в реальном мире. ISP без микроинтерфейсов

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

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

Читать далее

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

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

Почему миллионы начинающих пользователей боятся «нажать не туда», а видеоуроки не формируют практических навыков? Рассказываю, как создала интерактивный симулятор настольных ОС (Windows 10, 11 и Linux) с уроками и мини-играми и как это помогает безопасно осваивать компьютерную грамотность прямо со смартфона.

Читать далее

Цифровая слежка в кармане: аудит 11 популярных российских Android-приложений

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

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

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

Одиннадцать приложений. Банки, госсервисы, маркетплейсы, навигация, магазин приложений. Все — из топа российского Android-рынк. Методология — статический анализ (SAST) плюс пассивный перехват logcat. Трафик не вскрывался, SSL Pinning не обходился, в Secure Folder не залезал.

237 уязвимостей суммарно (включая расширенную проверку). Шесть приложений с ключами подписи образца прошлого века. ВК с 11 трекерами и рейтингом риска 98/100. И Госключ, который неожиданно оказался единственным, кто делает всё правильно.

Читать далее

Как разрабатывать приложения для iPhone на iPad

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

Звучит как противоречие: iPad стал вполне рабочим инструментом разработчика, а собрать под него (и под iPhone) приложение всё равно нельзя без Mac. Xcode — единственная официальная среда сборки и подписи iOS-приложений — существует только под macOS, и Apple явно не планирует это менять. Значит ли это, что весь цикл разработки придётся выполнять, сидя за компьютером? Нет — если Mac всегда доступен по сети, а с iPad до него можно дотянуться удалённо.

Читать далее

SPAC — биржевая фирма‑обертка. Выводит на биржу того кто не может. Почему в App Store и Google Play такого почти нет?

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

Что такое SPAC на бирже. Это фирма которая уже внутри и уже может собирать деньги. А новые фирмы которые хотят добраться до биржевых денег побыстрее могут использовать такие вот фирмы контейнеры. Это не кооператив. Есть владелец SPAC который оказывает такие услуги. Некий сервис за процент.

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

Ну казалось поначалу что это ну не велика проблема. Оказалось что велика да еще и для российского разработчика. Она не велика. Она практически непреодолима.
Теперь то каждый может стать разработчиком. И тому уже есть примеры когда люди с идеями пишут софт без знания ничего из программирования. Грешным делом я и сам уже балуюсь вовсю.

Но в магазины не попасть никак. А хотелось бы.

Потому что есть жесткий список того что должно быть.

Читать далее как попасть в App Store

Как создавать необычные усложнения для часов на Wear OS

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

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

Читать далее
1
23 ...