Обновить

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

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

Навигация в Jetpack Compose без магии: что на самом деле делают библиотеки навигации

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

Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое.

В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo.

Читать далее

Продолжаем рассказывать о создании продолжения DogPlanner…

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

Ну что же…, на дворе 2026 год, первый DogPlanner живёт своей жизнью, доступен на многих площадках мобильных приложений, мы о нём много писали в соцсетях и различных блогах. С тех пор как мы сделали его, а опубликовали мы его аж в июне 2020 года, вы прислали нам много различных идей по его доработке, написали множество отзывов, а также мы узнали о приличном количестве проблемных мест по его функциональности и содержанию, и всё это было абсолютно заслуженно! Хотим сказать вам огромное спасибо за всю обратную связь, которую мы получили, и получаем до сих пор от вас! Но давайте снова вернёмся к критике…

Читать далее

Народная карта бензина собрала почти 2 млн посетителей за три дня. Её навайбкодил один человек

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

Бэкенд кое-как держит нагрузку, но от нормальной монетизации автор отказывается из принципа — пока есть только донаты.

Читать далее

Лента роликов на iOS: опыт работы с AVPlayer

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

Привет, Хабр! На связи Дмитрий Андриянов, iOS-разработчик команды Медиа Платформы в Т-Банке. Одна из наших ключевых задач — разработка видеоплеера для стриминговых видео, в том числе для приложения T-Инвестиций, где есть лента тематических роликов и обучающие видео в Академии.

В T-Инвестициях на iOS лента коротких роликов — это 90% трафика, именно ее оптимизации мы уделяем больше всего внимания. В первой версии пользователи могли ждать старта видео больше 15 секунд. Мы разобрались в ограничениях AVPlayer, оптимизировали буферизацию и снизили задержки на 12% в хвосте распределения. Рассказываю, как мы улучшали пользовательский опыт и почему AVPlayer не лучшее решение для ленты роликов.

Читать далее

Топ-10 вопросов с Android-собеседований в 2026 — с разборами

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

Думаю, многие из нас успели заметить стремительное изменение рынка в последние пару лет: он плавно превратился из рынка соискателя в рынок нанимателя и, пожалуй, стал наиболее конкурентным и жёстким за всё время существования IT в России.

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

Поэтому навык прохождения собеседований становится всё важнее. В этой небольшой статье хотел бы разобрать 10 популярных вопросов, с которыми можно столкнуться на собеседованиях по Android в 2026, поехали 🚀

К вопросам

Как скачать и настроить среду разработки для 1С: Элемент

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

Когда я впервые начал работать с «1С:Элемент», казалось, что установка среды - это самая простая часть. Скачать, установить, открыть - что может пойти не так?

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

Со временем у меня сформировался простой подход: минимум действий максимум результата. Делюсь, как делаю это сейчас.

Читать далее

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

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

В этом выпуске хардкорная агентская разработка под iOS и Preview-Driven скриншот тестирование для Android, кольца-расстояния и инерция пальца, пять ошибок начинающих Android‑разработчиков и пять ошибок при работе с Jetpack Compose, динамические иконки приложения на Flutter, ручной DI в Kotlin Multiplatform, расширенные возможности оплаты и низкие комиссии в Google Play, и многое другое. Заходите!

Читать далее

Тап по тысяче точек за O(log n): QuadTree и сферическая геометрия в гео-соцсети

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

9 лет назад я разрабатывал геолокационную соц.сеть на заказ, где мы отображали чаты на карте. До релиза не дошло, но интересного опыта было получено много. В очередной статье из серии рассказываю про то, как обрабатывать нажатия на MapBox и любой другой карте (Google, Yandex – не важно) и находить нужные объекты на ней, привязанные к координатам.

Читать далее

Делаем свое контекстное меню для полей ввода в Qt на мобильных устройствах

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

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

Читать далее

«Люди вокруг» на SpriteKit: кольца-расстояния, инерция пальцем и виртуализация аватаров

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

Продолжение истории про проект геолокационной соцсети: “как мы людей в круги расставляли”. Рассказываю о том, как можно красиво отобразить пользователей, которые рядом с вами на карте, чуть менее тривиальным образом с помощью SpriteKit

Читать далее

Хардкорная агентская разработка под iOS, часть 1: отдельный Mac Mini для агентов

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

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

Это приводит к consent fatigue — я не раз ловил себя на мысли, что я уже давно только и делаю, что жму “allow”, “allow everytime”, редко вникая в суть того, что спрашивает агент, но полностью доверить агенту делать всё, что ему заблагорассудится, мне как-то боязно. Всё-таки на основном макбуке много личных и рабочих данных, которые агент может случайно (или через prompt injection) удалить или слить в сеть. Стрёмно. Поэтому я какое-то время играл в игру “я типа читаю, что ты у меня спрашиваешь”.

Хотя правильное решение — запуск агента в режиме YOLO (в случае claude — с флагом --dangerously-skip-permissions). И тогда при правильной постановке задачи агент может часами сам работать и делать то, что нужно, уведомляя меня только по выполнении.

Это первая статья цикла. Здесь — базовая настройка Mac Mini и вся возня с SSH, чтобы YOLO-агент работал на отдельной машине без ручного ввода паролей и переживал разрывы сети. Специфику iOS-разработки (git worktree, параллельное тестирование, idb, прогон приложения, грабли симулятора и прочее) я вынес в следующие части, так что статья будет полезна не только iOS-разработчикам, но и всем, кто хочет запускать YOLO-агентов и не париться о безопасности. С некоторыми оговорками, разумеется, подробности ниже.

Читать далее

«Охота на лис» в XXI веке: забытый радиоспорт в новом техно стиле

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

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

И с этим трудно не согласиться, ведь спорт, не только укрепляет здоровье но и объединяет людей. В этой статье я хочу рассказать, как я объединил некогда популярный вид состязаний "Охота на лис" с современными технологиями, ведь его основные принципы лежали в плоскости геолокации и радионаблюдения. Рожденный ещё в далекие 50-е, этот вид спорта неумолимо двигался по планете привлекая все больше и больше своих поклонников.

Несмотря на своё название, никакой реальной охоты здесь не было. Участники состязаний занимались поиском скрытых источников сигнала радио-маячки работающие в коротковолновом диапазоне частот, используя специальные приёмники-пеленгаторы. Сегодня "Охота на лис" по-прежнему существует, однако ее популярность заметно снизилась. Одной из причин является остутствие финансирования и низкая осведомленность среди молодежи.

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

Читать далее

Opaque types vs Existential Types vs Generics

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

Привет! Сегодня хочу поделиться, как мне кажется, очень полезной информацией о такой важной теме, как Opaque types vs Existensial Types vs Generics — что это такое, в чем разница и что выбрать. Я действительно считаю эту тему важной, поскольку это мощнейшие инструменты, которые нам дает swift, чтобы сделать код более гибким, поддерживаемым, универсальным и без лишнего дублирования. Итак, погнали. 

Читать далее

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

Ручной DI в Kotlin Multiplatform: понравится и тебе, и твоему ИИ‑агенту

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

Граф зависимостей KMP‑приложения можно собрать обычным Kotlin‑кодом — без рефлексии, кодогенерации, аннотаций и DSL. Composition root и конструкторы, никакой магии. Звучит как шаг назад от зрелых DI‑фреймворков — пока не посмотришь, кому такая форма удобна: тебе, новому человеку в команде и твоему ИИ‑агенту.

Читать далее

Динамические иконки приложения на Flutter: подробная инструкция для ручного выбора и обновлений по воздуху

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

Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Мы с командой подготовили для вас перевод статьи о том, как можно кастомизировать иконку приложения динамически. Всем приятного чтения!

Читать далее

Как нарисовать тысячи объектов на карте и не убить FPS: эволюция рендера на Mapbox GL

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

Когда-то давно я разрабатывал геолокационную соцсеть, где на карте живут «облака» — посты, привязанные к точке. И этих облаков на экране могло быть очень и очень много. Наивный подход «одно облако = одна аннотация-UIView» упирается в потолок уже на десятках точек: карта превращается в слайд-шоу. Здесь история о том, как я пять раз упёрся в производительность и в итоге переехал на GL-слои с data-driven выражениями: три движка рендера на разных зумах, круги постоянного реального размера в метрах через metersPerPixel, а вся zoom-зависимость считается на GPU. И отдельно — как анимировать прозрачность GL-слоя, у которого вообще нет анимируемого свойства

Читать далее

Realtime-чат без WebSocket: long-polling, гонки переподключения и дубли пушей

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

Бывает, что realtime на проекте уже нужен, а WebSocket по каким-то причинам нет. Остаётся long-polling: клиент шлёт «бесконечный» HTTP-запрос, сервер держит его, пока не появятся новые сообщения, отвечает - и клиент тут же открывает следующий. Звучит просто, ровно до первого запуска на живом устройстве где-нибудь в метро. Дальше начинается то, ради чего и написана статья: гонки при переподключении, дубли локальных пушей и два независимых потока сообщений в одном ответе. Разбираю на примере реального iOS-сервиса, который я разрабатывал более 5 лет

Читать далее

Как мы тестируем планшеты KVADRA_T на производстве: архитектура DeviceTestPro

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

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

Привет, Хабр! Меня зовут Сергей, я ведущий инженер программист в отделе разработки приложений в YADRO. В статье расскажу, как мы создавали систему производственного тестирования Android-планшетов, которая используется на этапах сборки и в отделе технического контроля.

Читать далее

Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом

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

Если после релиза Android‑приложения вы внезапно получаете краши, утечки памяти и жалобы на пропадающие данные, проблема может скрываться в нескольких строках кода вокруг Activity и Fragment.

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

Читать далее

Покой как фича: анти-шагомер на Expo, который ругает за активность

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

Я сделал анти-шагомер на Expo и React Native: приложение, которое награждает за неподвижность и ругает за шаги. Снаружи это шутка про anti-wellness, внутри — Android step counter, background tasks, локальные пуши, Zustand, native-модуль для TYPE_STEP_COUNTER и state machine для чек-апа “я живой, но мне лень”. Рассказываю, что сломалось по дороге и почему фоновая логика в мобильной разработке — это не cron.

Мне лень, но интересно