Обновить

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

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

Firebase — динамическое переключение проектов в iOS приложении

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

Firebase - динамическое переключение проектов в iOS приложении

В этой статье мы глубоко погрузимся в технические детали работы с Firebase и рассмотрим:

- Как и почему можно использовать Firebase проект без регистрации Bundle ID

- Традиционные способы переключения Firebase конфигураций (compile-time)

- Динамическое переключение проектов во время работы приложения (runtime)

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

- Безопасность и важные моменты

Читать далее

Мир доступного дизайна: как увеличить шрифт и не сломать UI?

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

Сегодня мобильными приложениями активно пользуются не только молодёжь, но и представители старших поколений, количество которых непрерывно растёт (Pew Research Center). Чаще всего именно эти пользователи меняют системный шрифт и настраивают контрастность для комфортного использования. Это влияет не только на пользовательский опыт работы, но ещё и формирует новые потребности в развитии операционных систем Android и iOS.

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

Меня зовут Игорь, я Android-разработчик в Сбере, развиваю проект СберИнвестии в команде «Портфель клиента». Расскажу про наш опыт работы с особыми возможностями Android, как мы к этому пришли, а также на практических примерах покажу улучшения UX нашего приложения. Конечно же, я также расскажу про подводные камни, на которых мы удачно поскользнулись, куда же без этого :).

Читать далее

Flutter & Dart — итоги 2025 года: релизы, тренды, пакеты и сообщество

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

2025 год стал для Flutter и Dart по-настоящему переломным.
Фреймворк заметно повзрослел, экосистема — расширилась, а сообщество — стало сильнее, опытнее и громче.

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

Читать далее

Мобильное приложение на 1С «Доходность облигаций» (только для Android) версия 3

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

Мобильное приложение «Доходность облигаций» позволяет рассчитать доходность по облигациям по двум видам:

1) «Простая доходность к погашению» — это годовая доходность в процентах, которую получит владелец облигации, если купит её по рыночной цене и продержит до погашения.

2) «Эффективная доходность к погашению» — это годовая доходность с учетом реинвестирования полученных купонов.

Умеет считать доходность на дистанции, с учетом удержания НФДЛ и без.
Режимы торгов: ОФЗ, корпоративные, дефолтные облигации.

Читать далее

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

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

Последний дайджест в этому году! От неработающей к тестируемой навигации, тепловизор для разработчика, развитие Swift SDK для Android, инженерия уверенности и многое другое. С наступающим и хороших вам приложений! До встречи в новом году!

🎄Читать

FlutterPulse: декабрьский дайджест Flutter & Dart

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

Декабрь — это когда:

- задачи вроде бы закрыты, но TODO всё ещё смотрит укоризненно

х- очется «ещё один маленький рефакторинг» перед Новым годом

- и, конечно, появляется ощущение, что со следующего года всё точно будет ещё лучше

Читать далее

Snapshot тесты для iOS. быстро, стабильно на Metal

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

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

Статья разбирает, как индустрия решает проблемы сравнения в современных open-source инструментах и разбирает существующие ограничения.

Представлена open-source библиотека AFSnapshotTesting на Metal GPU: более точная ΔE2000, кластерная фильтрация шумов, комбинированные стратегии, целочисленные пороги и настоящие diff-изображения.

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

Полезно iOS-разработчикам для надёжных визуальных тестов.

Читать далее

Почему я перешел на Dagger Components (вместо Dagger Android)

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

Всем привет, меня зовут Анатолий Спитченко, я Android-разработчик в ПСБ. В этой статье расскажу про свои эксперименты с Dagger. Наткнувшись в проекте на огромный модуль Application (11,5 Мб), я стал искать альтернативы обертке Dagger Android. Поэкспериментировал с продвигаемым Google Dagger Hilt, а также с более старым подходом — Dagger Components. Последний, как ни странно, позволяет немного сократить Application и в целом имеет больше плюсов, чем минусов. Подробности под катом.

Читать далее

Как найти работу джуну, когда джуны никому не нужны

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

Если кажется, что вы видите только вакансии для сеньоров и лидов, то вам не кажется. Компании оптимизируют всё, что движется. И джуны в в эту картину вписываются со скрипом.

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

Но не спешите отчаиваться. Работа всё ещё есть, а вот правила игры изменились. Давайте вместе разбираться, что сделать, чтобы всё-таки найти работу и построить карьеру в ИТ.

Читать дальше

Технический гайд по сторис — часть 3: как мы написали свою библиотеку

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

Привет! Меня зовут Владислав Фальзан, я работаю android-разработчиком в М2. Наша команда мобильной разработки развивает приложение — онлайн-платформу для решения вопросов с недвижимостью. Основные пользователи приложения — физические лица (B2C) и риелторы (B2B2C). Эта статья — технический гайд для android-разработчиков о том, как использовать нашу новую библиотеку по сторис с деталями и нюансами реализации. Из статьи вы поймете: как использовать библиотеку на полную мощность для своих задач и как она устроена изнутри.

Для удобства изучения статьи я решил разбить ее на блоки:

Читать далее

Инструменты клиентской поддержки: опыт e-commerce брендов

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

Высококонкурентный рынок в e-commerce не прощает ͏ошибок. 89% клиентов готовы поменять сервис после одного негативного опыта в сервисе. При этом, привлечение нового͏ стоит бизнесу до 25 раз дороже, чем удержание текущего. Поэто͏му важность ка͏чества ͏сервиса становится н͏е вспомогательной, а важнейшей функцией, ͏которая вл͏ияет на ͏удержан͏ие, прибыль и͏ репутацию бренда.

Аналитик студии комплексной разработки цифровых решений CleverPumpkin Алёна Сорокина и эксперты «Сантехника-Онлайн», METRO и Gulliver Group разбирают какие инструменты клиентской поддержки помогают e-commerce продуктам расти и удерживать клиентов.

Читать далее

Perfetto в Android-разработке: когда профайлера уже недостаточно

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

Perfetto показывает те проблемы с производительностью приложения, которые другой профайлер просто не заметит. И не важно, занят ли процессор системными задачами, когда поток готов работать, или GC блокирует UI на 50 миллисекунд — Perfetto всё подсветит.

Ещё не знаете об этом крутейшем инструменте? Тогда эта статья для вас. Привет! Меня зовут Андрей Гришанов. Расскажу вам, что такое Perfetto и как использовать его максимально эффективно.

Познакомиться с топовым профайлером

Тепловизор для разработчика: подсвечиваем рекомпозиции прямо в коде

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

Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. В прошлой статье я научил Jetpack Compose показывать рекомпозиции в реальном времени, но это был скорее учебный стенд: куча модификаторов, обёрток и примеры, которые нужно готовить вручную.

Я хотел чего‑то более полезного: чтобы IDE сама показывала, какие composable‑функции перерисовываются прямо сейчас, а какие скипаются и какие параметры реально меняются. Нажал Run — и редактор превратился в живую тепловую карту UI.

Ради этого пришлось сделать то, чего нормальные люди обычно избегают: залезть под капот Kotlin Compiler Plugin и научиться внедрять код в промежуточное представление на этапе компиляции, разобраться в битовых масках Compose и поднять TCP‑сервер внутри IntelliJ, чтобы запущенное приложение могло стучаться прямо в IDE.

Так появился Riflesso — плагин, который переносит идею Layout Inspector прямо в редактор кода и делает Compose прозрачным. В этой статье я разберу его архитектуру и покажу, как компилятор, клиентская библиотека и плагин IDE собираются в один инструмент.

Читать далее

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

Как я свой мессенджер делал… или «вы все ещё думаете ставить ли MAX»?

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

Как говорится, когда коту делать нечего - у него яйца блестящие...

В 2025 участились случаи блокировки ...всего интернета?... , в частности популярных мессенджеров, таких как WhatsApp, Telegram, коими я и моя семья привычно пользовались..

Споры по поводу нашумевшего мессенджера MAX не утихают и по сей день...

По привычке, если хочешь что-то сделать хорошо - сделай сам, так решил создать свой мессенджер, с блэкджеком и проститутками, с шифрованным трафиком, не видимым для DPI, голосовыми вызовами, без привязки к номеру телефона и вообще к чему либо, и интерфейсом таким , каким его хотел видеть именно я! ;)

Естественно, разработка будет под Android. Никаких санкционных айфонов в этом рассказе!

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

Дальше была разработка самой технической части: список контактов, отправка сообщений.
Вау, это заработало!

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

Читать далее

Снепшот-тестирование SwiftUI View в legacy-проекте: обходим ограничения

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

Снепшот-тестирование — один из немногих надёжных способов контролировать визуальную целостность SwiftUI-компонентов. Но что делать, если ваш проект ограничен Xcode 13.3 и Swift 5.6, а большинство компонентов дизайн-системы обёрнуты в UIViewRepresentable?

Меня зовут Денис Третьяков, я iOS-разработчик в ПСБ. В этой статье расскажу, как мы организовали снепшот-тестирование SwiftUI-компонентов в условиях жёстких ограничений, с какими проблемами столкнулись и как их решили.

Читать далее

Книга «Основы Dart: Community edition» 2-е издание

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

Всем привет!

Завершил обновление предыдущей версии книги и выкладываю в открытый доступ второе издание «Основы Dart: Community edition». От полной версии ее отличает то, что в ней отсутствует глава по разработке тг-ботов на Dart и сквозной проект - игра «Крестики-нолики», которая улучшается практически после каждой главы и сопровождается заданиями на самостоятельную проработку по ее улучшению (своего рода «проект-песочница» из которого я вытряс всю душу и придумал задания, способные привести к знатному подгоранию пятой точки ^_^).

Читать далее

Мобильная разработка за неделю #613 (15 — 21 декабря)

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

В новом дайджесте последствия уменьшения приложений и новый шаг в передаче зависимостей Swift, улучшение доступности в Android-приложениях и перформанс, лёгкий и быстрый DI-контейнер, Offline-First приложения, ускорение загрузки экрана, больше рекламы в App Store и многое другое. Заходите!

Читать далее

«Liquid Glass» на iOS 16: шейдеры — легко, а скриншоты — боль

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

Шейдеры - легко, скриншоты - боль. Написал свой Liquid Glass для iOS 14-26, потому что Apple сделала API только для новых систем. GPU справляется за 2ms, а CPU тратит 90% времени на легальное получение пикселей экрана. Почему так и как с этим жить - под катом.

Читать далее

От ощущений к цифрам: как мы внедрили метрики перформанса в андроид приложение

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

Всем привет! Меня зовут Тимур, я платформенный Android-разработчик с опытом 5+ лет в ритейле и e-com.

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

Присаживайтесь, наливайте чай/кофе — поехали.

Читать далее

Как мы перевернули подход к мобильным интерфейсам с Backend Driven UI

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

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

В WCMA (Whoosh Control Maintenance App, писали о нем в предыдущей статье), нашем внутреннем приложении для управления флотом, мы столкнулись с этой проблемой в полной мере. Напомню, в этом приложении работает наша сервисная команда, через него мы обслуживаем самокаты и велосипеды в городе, следим за их зарядом, переставляем на спросовые парковки, а также восстанавливаем и чиним.  

Одна из первых версий WCMA была больше похожа на пульт-отмычку для самоката, приложение не было интуитивным: все переводы доступны, а значит люди нажимали куда попало, часто новички путались в процессах и кнопках, в целом было мало контроля над действиями пользователей. Это могло вызывать ошибки “в полях” или при ремонте флота. Чтобы это исправить, мы завели большее количество ролей в системе, и каждая роль получила свой особенный раздел в WCMA. А для надежности добавили много проверок на бэкенде, валидирующих действия команды.

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

Меня зовут Игорь Волынский, я backend-разработчик в команде WCMA Whoosh. И сегодня я расскажу, как мы решили эту проблему: построили централизованную и гибкую систему управления статусами, добавили условные переводы с хендлерами для проверки бизнес-правил и реализовали динамические сценарии для гибкого формирования UI. Спойлер: теперь наши механики и менеджеры видят только те действия, которые им реально доступны, а бэкенд гарантирует целостность данных на уровне системы.

Читать про формирование UI через бэкенд