Обновить

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

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

Экономим на СМС рассылках — сервис push-уведомлений для веб- и PWA-приложений

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

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

Читать далее

Новости

Мобильный Vivaldi 8.1 — Всё для лета

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

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

Читать далее

Как перегрев iPhone ломает UX: измеряем thermal state, FPS и отзывчивость приложения

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

Пользоваться приложением на перегретом устройстве некомфортно: падает плавность, замедляется отклик, а само устройство неприятно держать в руках. С пользовательской точки зрения проблема очевидна — но насколько сильно нагрев влияет на UX на самом деле? Как часто пользователи вообще с ним сталкиваются? Разбираемся, как измерить эффект нагрева не на уровне ощущений, а через метрики: thermal state, FPS, jitter и touch latency.

Читать далее

LLM против APK: сколько стоит автономно перепаковать Android-приложение

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

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

Из всего списка рисков мы взяли один конкретный сценарий: внедрить в приложение вредоносный код так, чтобы после пересборки оно осталось рабочим и его можно было раздавать живым пользователям. Проверяли на Android.

Читать далее

Знакомство с командой Android

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

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

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

Читать далее

Аутентификация через биометрию в Kotlin Multiplatform или Koncierge

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

Наконец-то неплохо продвинувшись в написании своего мультиплатформенного приложения Modern Money мне понадобилась аутентификация для Kotlin Multiplatform.

Хотелось иметь один API для PIN-кода и биометрии, а под капотом использовать Android Biometric Prompt, Windows Hello, Touch ID.

Так появился Koncierge — набор KMP-модулей biometric, auth и auth-compose

Казалось бы, задача довольно стандартная: объявить expect-класс и написать несколько actual-реализаций. На Android это примерно так и получилось. А вот Windows Hello, JVM-модуль и публикация всех артефактов заставили немного разобраться в том,

как Kotlin работает с нативным кодом

Аннотации в Kotlin: от @Deprecated до своего KSP-процессора

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

Аннотации в Kotlin — это не только @Deprecated и @Suppress. Разбираемся, где живут SOURCE, BINARY и RUNTIME, чем KSP отличается от kapt, как compiler plugins меняют код и какие практические задачи можно закрыть генерацией: debug menu, удаление экспериментов и каталог performance-метрик.

Читать далее

Поставил свою Flutter-игру на iPhone друга без Mac и подписки Apple Developer

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

Занимаюсь разработкой своей игры на Flutter. Дошёл до этапа, когда её пора было показать другу-тестировщику, а у него iPhone. Первая мысль — покупать Mac Mini или подписку Apple Developer за $99 в год. Обе цены платить не хотелось, пока проект не подтвердил, что вообще будет.

На Samsung всё это делается за 15 минут: dev mode, USB, установка. На iPhone пришлось искать схему, которую нигде не находил собранной в одном месте — четыре инструмента, час на реализацию и заметно дольше на то, чтобы вообще понять, что она существует.

Внутри: рабочий пайплайн Tenorshare iCareFone → GitHub Actions → Sideloadly → доверие на устройстве. Полный yml для сборки unsigned .ipa на хостовом macOS-раннере (со всеми нюансами Flutter-версии, precache, packaging и --dart-define для API). Разбор тонких моментов, которые не вылезают в туториалах: bundle ID под бесплатным Apple ID, Firebase-конфиги, миграция macos-latest на macOS 26 в июне 2026.

Отдельно — честная экономика iOS-релиза из России в июле 2026: как теперь оплачивать Apple Developer, когда с 1 апреля отключили мобильную оплату; во сколько по факту обходится 99 долларов через Gift Card, посредников и иностранные карты; и сравнение с Google Play ($25 единоразово), RuStore и AppGallery.

Читать далее

Лучшая архитектура KMP-приложений и когда её не использовать. Часть 2

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

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

Это вторая, практическая, часть из двух. Здесь про то, как организованы слои, какие контракты уходят в Swift, как готовить SKIE, как устроены обработка ошибок и DI, что с модульностью, скоростью сборки и тестами.

Читать далее

Gradle под капотом: как перестать мучиться и заставить свой компьютер работать на полную мощность?

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

Привет, Хабр. На связи Илья Новиков, технический директор команды разработчиков «Исходный код».

Сегодня я хочу разобрать инструмент, который мы все используем десятки раз в день, но часто по-прежнему воспринимаем как «черный ящик».

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

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

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

Читать далее

Как я в одиночку сделал мобильную игру на iOS — LootShrine

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

Всем привет! Хочу поделиться своим первым опытом в разработке мобильной игры для iOS — в жанре roguelite. Это pet‑проект, который неожиданно для меня самого дорос до релиза в App Store, так что расскажу и про идею, и про технические идеи. Надеюсь, будет интересно почитать:)

Читать далее

Один радар на стекле, другой в телефоне, и в каждом чего-то не хватало

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

У меня есть физический радар детектор — коробочка на стекле. И есть купленное приложение-антирадар. Что общего у них двух? В каждом чего-то не хватает. В одном не нравится одно, в другом другое. Годами я ловил себя на мысли, вот бы взять лучшее из обоих, а раздражающее просто не тащить.

В какой-то момент я перестал мечтать и сел писать своё. Наивно думая, что это несложно Ну что там, показывай точку из базы да пикай при подъезде. (Спойлер) Я ошибался почти в каждом своём предположении. Эта статья про то, как «тут же нечего делать» превратилось в фьюжн сенсоров, счисление пути в тоннелях, геодезию проездов и краудбазу с криптозащитой. И про то, чему меня научила каждая набитая шишка.

Читать далее

Как за 10 лет изменились мобильные банки для бизнеса, и что мы поняли, наблюдая за рынком

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

Я занимаюсь исследованиями цифровых банковских сервисов много лет. И уже 10 лет мы исследуем мобильные банки для бизнеса.

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

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

В этом году мы представили результаты исследования Markswebb Business Mobile Banking Rank 2026 и решили вспомнить, какими были сервисы 10 лет назад. В этой статье хочу поделиться своими наблюдениями.

Читать далее

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

Что такое View в SwiftUI

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

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

Недавно у меня было собеседование, на котором мы довольно много времени обсуждали одну из фундаментальных концепций SwiftUI — View.

Узнать больше

Как мигрировать Flutter-приложение на SPM — гайд с граблями, костылями и скриптами

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

Flutter активно движется в сторону Swift Package Manager (SPM) и, как и весь Swift‑мир, постепенно отказывается от CocoaPods. Сам Flutter описывает миграцию в два шага: включить флаг flutter config --enable-swift-package-manager и запустить сборку. Если после этого приложение собирается и в консоли появляется предложение deintegrate CocoaPods — вы счастливчик. Если нет, добро пожаловать под кат. 

Привет! Меня зовут Даниил Гиренко, я Flutter‑разработчик в Яндекс Про. Проект по переводу нашего супераппа с CocoaPods на Swift Package Manager оказался одним из самых сложных и долгих в моей карьере программиста. Весь мой пережитый ужас опыт я решил выразить в этой статье, чтобы решившиеся на миграцию разработчики (или агенты) понимали, какие подводные камни их ждут. Буду рад, если ваш проект займёт недели, а не месяцы, как у меня.

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

Читать далее

Сохраняем push-уведомления в память телефона: полный гайд для React Native

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

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

Разбираем архитектуру, пишем нативный код под iOS и Android, настраиваем единый формат хранения и забираем данные в React Native без платформенных ветвлений. Берите и пользуйтесь.

Читать далее

Мобильная разработка за неделю #638 (6 — 12 июля)

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

В новом выпуске UISlider изнутри и топ-10 вопросов по Kotlin в 2026 году, Swift 6.2 против вашего оптимизатора и переписывание Flutter на C#, всего несколько недель на вайб-кодинг, новый формат электронных книг для изучающих язык, многомерные векторы в конкурентном анализе мобильных приложений, обучение LLM 0.5B с нуля на статьях Хабра и многое другое. Подключайтесь!

Читать далее

Как Яндекс.Навигатор может вести водителей в никуда или в туда, но не туда

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

Приветствую, Хабр!

В этой статье хочу описать практический кейс, который выглядит не как единичная ошибка на карте, а как системная проблема в работе навигационного сервиса от Яндекса. Речь идет о маршрутах в городе Дербент, где одна из дорог была перекрыта еще в марте 2026 года в связи с ремонтными работами (строительство сегмента центральной набережной города). Сейчас уже 23 июня 2026 года, прошло почти 4 месяца, но навигатор продолжает строить маршруты так, как будто проблемы не существует.

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

Читать далее

Error messages in UX: how to make them effective and user-friendly

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

An error message is a short message that appears on the screen when a user does something wrong or a software product itself fails to perform and complete a certain action. They are often perceived as insignificant annoying notifications that no one actually reads before clicking “OK”, but in fact they play a vital role in providing information on any problems and issues that users encounter during app use and aiding them in completing tasks successfully. The way error messages are designed impacts user experience heavily: poor design leaves users in confusion on what exactly went wrong and how to fix it, which in its turn leads to frustration and even app abandonment, whereas effectively crafted messages serve as a helpful tool in providing clarity on how to proceed when encountering an issue. 

Читать далее

Миграция с Flutter Web на Jaspr: наш опыт

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

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

Недавно мы попробовали мигрировать наше приложение с Flutter Web на Jaspr – под катом расскажем о том, почему мы это сделали, с какими трудностями столкнулись и какие выводы сделали.

Да кто такой этот Jaspr?!
1
23 ...