Обновить
512K+

Разработка мобильных приложений *

Android, iOS, Windows Phone и прочие

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

Capacitor: от веба к мобильным приложениям. Часть 3. OTA обновления в обход сторов

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

Эта 4 по счету статья является рефакторингом моей старой статьи про обновления бандлов приложения в capacitor. В этой обновленной статье мы еще раз рассмотрим механизм обновлений и ознакомимся с новой более структурированной реализацией.

Читать далее

Новости

Flutter Widget Previewer: разработка UI без запуска приложения

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

Я разрабатываю приложения на Flutter уже много лет, и то, как он развивается, не перестает меня удивлять. Сегодня Flutter Widget Previewer — это уже не эксперимент, а нормальный инструмент для проектирования UI: он позволяет видеть, как виджеты отрисовываются в реальном времени, без запуска приложения целиком.

В этой статье разберем, что такое Flutter Widget Previewer, как им пользоваться и как этот инструмент помогает ускорить разработку интерфейсов. Заодно поговорим о нескольких особенностях, о которых стоит помнить.

Читать далее

Модернизация и развитие зрелых продуктов на Kotlin Multiplatform: опыт компаний и эффект для бизнеса

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

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

Поддержка двух нативных приложений в таких условиях может быть дорогой в финансовом плане и сложной в скорости вывода новых функциональностей. Один из способов модернизировать продукт и снизить расходы – постепенно перейти на Kotlin Multiplatform.

В этой статье технический директор Александр Кияйкин и iOS-разработчик Мария Нестерова из CleverPumpkin вместе с экспертами X5 Tech, AvitoTech и MAGNIT OMNI разбирают, как компании со зрелыми цифровыми продуктами использует KMP, какие риски учитывают и какой видят от этого эффект.

Читать далее

iOS network frameworks и HTTP TCP Server внутри приложения

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

Привет. В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.

В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).

Читать далее

SMS в MikroTik: Читай меня полностью

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

Наверно, все владельцы роутеров MikroTik знают, что они декодируют все SMS по стандарту 7-bit вне зависимости от того, как изначально было закодировано сообщение. Как оказалось, даже при декодировании 7-bit MikroTik использует не все 128 символов из стандартного алфавита (GSM 7-bit Default Alphabet).

А ещё вместо одного длинного SMS роутер покажет вам его части по отдельности, иногда с неполными дубликатами. Как же тогда нормально прочитать любое сообщение, отправленное на роутер? Надо стать протоссом и построить MotherSMS.

Построить

Мобильная разработка за неделю #624 (16 — 22 марта)

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

В новом выпуске отладка iOS-приложений на практике и решение для установки сторонних приложений на Android от Google, Remote Compose и Copy-On-Write, эффекты рисования и градиентного рендеринга, неверная реализация MVVM, рынок труда для джунов в 2026 году и многое другое. Заходите!

Читать далее

Я написал кэш для API на Go за 120 строк кода — и PostgreSQL перестал быть узким местом (ускорение в 7 раз)

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

Если API начинает тормозить, первое решение обычно очевидно — добавить Redis. Но иногда оказывается, что проблема гораздо проще. В одном из сервисов PostgreSQL начал упираться в повторяющиеся запросы. Одни и те же данные запрашивались тысячами клиентов. Практически каждый HTTP-запрос заканчивался одинаковым SQL-запросом. Любопытство победило — вместо готового решения был написан небольшой кэш прямо внутри сервиса. На это ушло примерно полчаса. Результат оказался неожиданным: некоторые эндпоинты ускорились почти в 7 раз. Вот, почему это произошло и как работает такая схема.

Читать далее

Я перестал пользоваться Anki и сделал VibeLing – своё приложение для изучения языков

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

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

В итоге я сделал своё приложение, где попытался закрыть все эти боли. За 5 месяцев его скачали 1000+ человек.

Читать далее

Отладка iOS-приложений на практике: 3 реальных бага

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

Умение отлаживать приложение – один из тех навыков, которые напрямую влияют на скорость работы и качество результата. Особенно хорошо это понимаешь в собственных проектах, где нет лишнего времени, а цена любой ошибки – это потерянные часы, нервы и ухудшение пользовательского опыта. В этой статье я разберу несколько реальных багов, с которыми недавно столкнулся в своих iOS-приложениях, и покажу, как шаг за шагом искал причину в каждом случае.

Читать далее

Интеграция автоматической установки eSIM на Android

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

Я люблю свою работу, потому что на удивление для меня с годами она становится все более нетривиальной и увлекательной. Моя история внедрения автоматической установки eSim была интересна тем, что разрабатывалась вслепую без возможности протестировать функционал на момент разработки. О eSIM и о своей истории и пойдет речь в данной статье.

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

Как заставить Android Studio ругаться на код по вашим правилам: создаем пользовательские Lint и Detekt

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

Привет, Хабр! На связи Алина, старший Android-разработчик в команде Инвестиций «Совкомбанк Технологии». Сегодня поговорим о том, как заставить Android Studio самостоятельно следить за порядком в коде – без ручных проверок и без вечных напоминаний в командном чате.

В этой статье мы создадим практические правила для инструментов статического анализа кода и разберем, как внедрить их в проект. На примере lint рассмотрим контроль архитектуры пакетов и обязательную документацию с QuickFix, а на примере detekt – проверку неизменяемого состояния представления без Android-зависимостей и миграцию с RxJava на Coroutines.

Читать далее

Ой, всё упало: 4+ способа достать креш-отчет с iOS-приложения

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

Привет, Хабр! На связи снова Максим из ATI.SU. В прошлой статье мы научились собирать логи на iOS устройствах разными способами и теперь для нас не вопрос разобраться, почему кнопка не нажимается, а данные не грузятся.

Но бывают ситуации куда страшнее. Вы запускаете приложение, а оно... тут же исчезает. Или вы работали в приложении, раз... и вы видите домашний экран. А еще приложение может так зависнуть, что помогает только полная перезагрузка самого устройства. Все это — его величество креш (a.k.a. краш, крэш, crash, вылет, сбой, падение, аварийное завершение).

Если привести аналогии, то логи — это жалобная книга, а креш‑отчет — это заключение судмедэксперта. В нём написано точное время смерти, причина и состояние памяти устройства в последний момент жизни приложения.

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

Начать вскрытие

Почему многие неверно реализуют MVVM или способы создания абстракций

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

Привет, Хабр! Меня зовут Кирилл Маканков, я iOS-разработчик в ПСБ.  

Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже изучен вдоль и поперёк. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно. Присоединяйтесь!

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

Читать далее

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

Мобильное приложение Ватерпас: DewDrop. Реальная история…

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

Если вы ранее работали с мобильным приложением DogPlanner, то вы, наверное, уже знакомы с робопёсом Роби. Но в любом случае, позвольте рассказать вам его историю. Роби живёт на Марсе... ходит молва, что он был собран кем-то из деталей первого в истории марсохода Sojourner. Он изучает красную планету, да и, по возможности, всю вселенную через сигналы, приходящие из космоса.

Читать далее

Вы считаете ИИ-ускорение неправильно, сливая бюджет в трубу, пока 7 из 10 проектов умирают ещё на этапе пилотов

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

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

Мы взяли секундомер и устроили жёсткий тест четырём нашим производственным направлениям: мобилке на Native и Flutter, аналитике и QA. Дали командам доступ в Cursor и Claude Code, чтобы вытащить на свет реальные цифры. По итогу — разрыв между цифрами и действительностью оказался шокирующим. 

Читать далее

Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта

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

Swift Package Manager отлично подходит для модульной архитектуры, но по мере роста проекта Package.swift быстро превращается в длинный список строковых зависимостей.

В статье показываю, как превратить Package.swift в типобезопасный DSL на Swift:

убрать строковые зависимости
автоматически генерировать feature-модули
зафиксировать архитектурные правила на уровне компиляции

Читать далее

Как мы сделали автогенерацию контента для риелторов в мобильном приложении

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

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

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

Читать далее

Искусство просить отзывы: как легально поднять рейтинг до 4.9 и не взбесить пользователя

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

Вы открываете приложение, чтобы быстро проверить баланс или забронировать стол, и тут же получаете в лицо: «Вам нравится наше приложение? Оцените нас!». Ваша реакция? В лучшем случае - машинальное нажатие на крестик, в худшем - удаление. Моя личная боль - открываешь банковское приложение для оплаты на кассе по СБП и получаешь аж три баннера один за другим на экран. Я не хочу прямо сейчас оформить кредит, не хочу оценивать ваши продукты. Я только открыл приложение, я покупки оплатить хочу. И такое поведение если уж не каждый запуск, то каждый второй точно.

В 2026 году Apple и Google стали еще жестче фильтровать накрутки, а пользователи - еще чувствительнее к прерыванию их «флоу». Тем не менее, рейтинг 4.9 - это не магия, а математика, психология и вовремя вызванный системный метод.

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

Продолжим

Google убивает независимый Android. Обращение и 19 аргументов против насильной регистрации разработчиков

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

https://keepandroidopen.org/ru/
https://keepandroidopen.org/open-letter/
https://www.change.org/p/stop-google-from-limiting-apk-file-usage?recruiter=1370041382&recruited_by_id=fddec6e0-0e30-11f0-a55d-cd0eb0fd0ac4

upd: добавил аудио-версию.

Уважаемая команда Google и руководство Android, я пишу вам не как случайный пользователь, а как человек, который уже больше 15 лет выбирает Android именно потому, что он был открытой платформой. Платформой, которая отличалась от яблочной тюрьмы iOS тем, что не требовала разрешения корпорации, чтобы я мог установить любое приложение, помочь другу с установкой или поддержать независимый проект. Сегодня я вынужден выразить глубокое разочарование, граничащее с чувством предательства.

С сентября 2026 года вы вводите обязательную централизованную регистрацию разработчиков для всего распространения приложений на Android — даже вне Google Play. Чтобы установить приложение через сайт, APK-файл, альтернативный магазин или просто передать его другу, разработчик должен:

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

Иначе приложение просто не установится на сертифицированных устройствах. Это не «улучшение безопасности». Это радикальная смена модели Android с открытой на закрытую.

Читать далее

Прямая трансляция во Flutter через WebCodecs: как пришлось написать свой декодер

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

Когда live-видео приходит как сырой H.264 поток через WebSocket, стандартные Flutter-плееры перестают работать.

В этой статье я разбираю, почему готовые решения не подошли и как я пришёл к необходимости реализации собственного декодера на C++ с использованием FFmpeg.

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