Обновить

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

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

Я нашёл огромную дыру в дейтинг-приложении, а разработчики попытались её скрыть

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

Стартапам нужно ответственнее относиться к безопасности

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

Читать далее

ML KIT — Современное решение для сканирования в Android приложениях

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

ML Kit - это мощный инструмент для работы с камерой в андроид приложениях.

Библиотека от компании Google ML Kit предлагает набор встроенных API, которые могут работать как на самом девайсе, так и в облаке.

ML Kit - это мощный инструмент для работы с камерой в Android и IOS приложениях.

Читать далее

Погружаемся в пуши. Создаём свою альтернативу сервисам рассылки Push

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

Всем привет! На связи Вадим, старший разработчик компании STM Labs. Хотите избавиться от ограничений пуш-сервисов и взять пуш-уведомления под полный контроль?

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

Читать далее

Когда JavaScript недостаточно: Практика разработки нативных модулей для React Native

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

Если ты пишешь на React Native, но устал от его ограничений (типа NFC, Bluetooth или системных фич), эта статья — твой выход. Мы разберём ключевые аспекты разработки нативных модулей для React Native приложений.

Что внутри:
Зачем это надо — когда JS бессилен, а нативный код спешит на помощь.
Как написать свой модуль** — от наследования до обработки системных плюшек (на примере работы с уведомлениями).
Фишки интеграции — куда складывать готовый код, как регистрировать и вызывать из JS.
Готовый пример — бери и используй (или переделывай под свои нужды).

Для кого:
Для тех, кто уже дружит с RN и Kotlin/Java, но хочет больше власти над устройством.

Что получишь:
Рабочий код (не просто "Hello, World!"),
Четкие шаги без воды,
Понимание, как лезть в другие системные штуки.

Итог:
Нативные модули — это мощный инструмент, который делает ваш гибридный код по-настоящему нативным. Хочешь больше, чем предлагает фреймворк? Допиливаешь сам. Статья покажет как.

Читать далее

GPT, DeepSeek и Qwen: идеальные unit-тесты в эхо-камере

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

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

Размышляя над этим, пришла идея использовать LLM для автоматической генерации тестов. Это могло бы снизить нагрузку на разработчиков и минимизировать влияние автотестов на time to market новых фич. Меня зовут Марк, я iOS-разработчик Lamoda Tech. Ранее я рассказывал о своем опыте поиска решений с использованием GPT и Copilot в UI-тестах.

Читать далее

Как я научился использовать LLM для написания Flutter приложений

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

Скажу сразу. Я не ярый фанат или ненавистник LLM-ов. Не считаю что они заберут работу у всех и поэтому нужно остановить/возглавить этот процесс. Я считаю их мощным инструментом. И им, как и многими сложными и гибкими инструментами, нужно уметь пользоваться. Собственно об этом и будет текст

Читать далее

Paging3 в стиле Compose: секретный DSL, о котором молчат все Android-разработчики

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

В статье описан путь преобразования предложенного экспертами Google способа отображения страничных данных с использованием библиотеки Paging3 и Compose от развесистого сборника if'ов и when'ов, вероломно нарушающего все границы архитектурных слоев, до чистого, лаконичного и затягивающего в себя DSL.

Погрузиться в магию

Compose Multiplatform 1.8.0: поддержка iOS переходит в stable

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

Привет! Меня зовут Максим, я управляющий партнер и руководитель мобильной разработки в KTS.

Мы разрабатываем приложения на KMP еще с 2021 года, а в прошлом году начали экспериментировать с Compose Multiplatform. Вчера JetBrains официально объявили о выходе CMP 1.8.0, c которой поддержка iOS переходит в статус stable. Это важный этап, поскольку теперь CMP можно всерьез рассматривать как основу для кроссплатформенной мобильной разработки.

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

Читать далее

Дивный мир мобильной разработки и трудности Open Source

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

Когда я впервые решил создать свой open-source проект, мне казалось, что главное – это хорошая идея и рабочий код. Я взялся за разработку библиотеки для сетевых клиентов и UI-компонентов, вложил в неё два года работы и, наконец, выложил на GitHub. Но вместо успеха меня ждал холодный душ – библиотека получила всего 10 звёздочек.

Тогда я осознал ключевую проблему open-source: одна только идея не работает. Если проект плохо оформлен – его никто не найдёт. Документация и описание –  не менее важны, чем сам код. В следующем проекте я учёл ошибки. Когда правильно оформил проект, он начал находить аудиторию, получать звёзды и фидбек от разработчиков.

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

Читать далее

Эмулируем iPhone в QEMU

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

Мы начали наше исследование по эмуляции iOS с изучения уже существующих опенсорсных решений. Ранее мы уже успешно запускали alephsecurity/xnu-qemu-arm64, но нас беспокоило то, что проект имеет статус read-only.

Затем мы попробовали TrungNguyen1909/qemu-t8030 и обнаружили в нём довольно много интересных фич:

возможность восстановления iOS (при помощи второго QEMU-«компаньона» для подключения по USB)

запуск iOS 14
самую свежую версию QEMU
удобную wiki о запуске эмулятора

Благодаря этому проекту мы быстро получили доступ к оболочке и ssh, изменив System/Library/xpc/launchd.plist, что стало отличной отправной точкой.

Читать далее

Изоляция с помощью глобальных акторов в Swift Concurrency: варианты на примере @MainActor

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

Привет, Хабр! Меня зовут Алексей Григорьев, я техлид iOS-разработки продукта Membrana в МТС. Это тариф с приложением для управления приватностью в сети и окружением.

Swift Concurrency принесла множество инструментов для управления многопоточностью. Среди них глобальные акторы, которые помогают обеспечивать безопасность данных и контролировать потоки выполнения.

Один из самых распространенных и полезных глобальных акторов — это @MainActor, который гарантирует выполнение операций в главном потоке приложения. В этом посте я на его примере покажу все варианты, как можно реализовать изоляцию и что в итоге выведет код: на каком потоке будут выполнены update, internal update и set в property.

Читать далее

Edge-to-edge в Android: опыт внедрения и рекомендации по тестированию

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

Всем привет! Мы – Саша Королёв и Юля Трусова, инженеры в Design System Авито. Наша команда работает над качеством интерфейсов: актуальностью, предсказуемостью, доступностью. В этой статье рассказываем про наш опыт внедрения edge-to-edge в мобильном приложении Avito для Android.

Материал будет особенно вам интересен, если ваше приложение не использовало режим edge-to-edge, но ввиду последних требований от Google по переходу на target SDK 35, появилась в этом необходимость. Ведь данное обновление применяет режим по умолчанию без возможности его отключить. Из статьи вы узнаете, с какими сложностями столкнулись мы как участники большого проекта при интеграции данного режима в масштабный проект с не одной сотней экранов.

Читать далее

Персуазивные технологии

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

Говорят, что в иностранных вузах это отдельный предмет — Persuasive Design, Persuasive Technology. Не знаю, не проверял, но, видя, насколько это мощный инструмент разработки, охотно в это верю. Сталкиваясь всё больше с этими технологиями во всех сферах, где я работаю, пришлось посвятить их изучению довольно много времени, что вылилось в эту статью. Решил поделиться с вами своими мыслями, оформленными в отдельные разделы и сгруппированными по методам работы. Дополнительно отмечу, что многие исследования глубинной природы человека постоянно возвращали меня к этим технологиям. Например, изучение систем выработанных рефлексов, методов работы с жадностью и гневом неизменно приводило к исследованиям в этой области. Также стоит дополнительно отметить, что эти приёмы помогают эффективнее взаимодействовать с малообразованными людьми.

Читать далее

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

Flutter & Dart: весенний апдейт — backend, DevTools и Roadmap 2025!

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

Весна в самом разгаре, а вместе с ней — обновления, гайды, инсайды и бум активности в экосистеме Dart и Flutter. В этом выпуске вы найдёте мощные инструменты для DevTools, свежие идеи для архитектуры, backend-направление на Dart и многое другое.

Читать далее

Прямая без препятствий. Часть 2. Защита мобильных приложений — выход найден?

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

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

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

Читать далее

Мастерство фокусов на Compose

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

Привет! Меня зовут Костя, я Android-разработчик в онлайн-кинотеатре PREMIER. Среди прочего у нас есть приложение для Android TV. Работая над ним, я столкнулся с тем, что система фокусов в Jetpack Compose устроена сложнее, чем кажется на первый взгляд. Поскольку для ТВ-приложений и устройств без сенсорного управления работа с фокусом играет ключевую роль в навигации, мне понадобилось детально разобраться в теме. Результатами делюсь в статье.

Читать далее

Укрощаем асинхронный код с помощью async/await

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

Привет! Меня зовут Андрей Максимкин, я iOS-разработчик в hh. Мы в команде активно используем async/await подход при написании нового кода, а также активно применяем при переписывании старого. В процессе работы сталкивались с некоторыми интересными и не самыми очевидными моментами — их и рассмотрим в статье.

Работа с различными потоками — очень важная часть разработки мобильных приложений под iOS. Грамотное распределение нагрузки положительно влияет на скорость работы приложения, а значит, и на пользовательский опыт. До Swift 5.5 для работы с многопоточностью в основном использовали фреймворки GCD и NSOperation. Начиная с версии Swift 5.5 стал доступен функционал async/await. В статье мы кратко расскажем о базовых принципах данного подхода и сделаем акцент на проблемах и особенностях, которые необходимо знать при написании кода. Информация будет полезна тем, кто уже знаком с функционалом async/await, а некоторые примеры могут быть интересны и более продвинутым разработчикам. 

Поехали!

Jetpack Compose для Android TV: как происходит перемещение фокуса

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

Привет, Хабр! Меня зовут Сергей Захаров, я разработчик в онлайн-кинотеатре KION. Jetpack Compose постепенно становится стандартом разработки UI для Android, и Android TV не остался в стороне. Вместо устаревшего и громоздкого Leanback теперь есть гибкий и мощный фреймворк, который обещает упростить разработку.

Однако на Android TV ключевую роль играет управление фокусом — без него невозможна навигация. Как же Compose справляется с этой задачей? Достаточно ли он удобен для больших TV-проектов, или лучше ограничиться им в мобильных приложениях? В этом и следующих материалах я отвечу на эти вопросы на примере конкретных кейсов. 

Это первый пост моего цикла про работу с фокусом в Jetpack Compose. В нем я расскажу, как в Jetpack Compose перемещается фокус, рассмотрю используемые при этом компоненты, покажу их плюсы и минусы, а также дам рекомендации по их применению в приложениях для Android TV.

Читать далее

Как запустить локальную LLM (AI) в Android Studio

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

Привет! Если вы мобильный разработчик и следите за AI-трендами, наверняка задумывались о том, как интегрировать языковые модели (LLM) в свои приложения прямо из Android Studio. В этой статье я расскажу, как это можно сделать быстро и просто, не полагаясь на внешние API и облачные решения.

Читать далее

Из чатов в игровые миры: как мессенджеры становятся новыми платформами для игр

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

Статья подготовлена при экспертной поддержке Сергея Михеева — руководителя отдела геймдизайна в AppFox. Тема и структура материала были разработаны на основе его идей и наблюдений за развитием гейминга в мессенджерах.

Когда-то мессенджеры были просто удобным способом переписки с друзьями, коллегами или бабушкой. Но сегодня Telegram, Discord и VK — это уже не просто каналы для общения. Это полноценные игровые площадки, в которые люди заходят не только за новостями или сообщениями, но и за эмоциями, азартом и новыми игровыми впечатлениями.

Почему так происходит? Давайте разбираться.

Читать далее