Обновить

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

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

Wildberries, Ozon и Сбер начали блокировать VPN-пользователей: как приложения определяют, что у вас включен VPN

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

Wildberries показывает «У вас включен VPN? Отключите», Ozon не грузит карточки товаров, ВкусВилл предупреждает об ошибках. Минцифры дало 20+ компаниям дедлайн до 15 апреля. Разбираю 5 методов, которыми приложение на вашем телефоне определяет VPN — от проверки tun0-интерфейса на Android до рассинхронизации GPS, IP и SIM-карты.

Читать далее

Null в Dart: С нуля до капитана

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

Всем привет!

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

Читать далее

Мобильное приложение DogPlanner. Перезагрузка…

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

Давайте немножечко поговорим о творчестве в целом, создании собственных проектов в принципе, и дальнейшем развитии мобильного приложения для домашних питомцев DogPlanner (доступно в Google PlayRuStore и других известных площадках) в частности. Мы уже говорили, что когда человек начинает заниматься каким-либо собственным проектом, он не задумывается насколько это занятие может растянуться. Мы сейчас говорим не о бизнес проекте, в котором изначально чётко описываются цель и средства её достижения, определяется команда и сроки, и поехали... Нет.

Читать далее

Лампа с цифровым джинном: как я упрашивал ИИ unit-тесты писать

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

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

Читать далее

Playwright + Appium + WebdriverIO: как эта связка усиливает тестирование гибридного Android-приложения

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

Привет, хабровчане! С вами снова Евгений Иванов, QA-lead в компании Fix Price. В этот раз поделюсь с Вами опытом внедрения автоматизации для гибридного мобильного приложения на Android. 

У этого решения есть свои плюсы и минусы, и мы продолжаем работать над его развитием. Но уже сейчас понятно: оно приносит реальную пользу команде во время регрессионных и предрелизных прогонов. Расскажу подробнее, как мы собрали связку Playwright + Appium + WebdriverIO и что из этого вышло.

Читать далее

Разбираем Remote Compose: как Google предлагает строить BDUI

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

Технологии Backend-Driven UI уже давно используются во многих компаниях, включая Альфа-Банк. Существует множество реализаций этого подхода, и недавно Google представил собственное решение — Remote Compose.

Remote Compose выглядит очень перспективной технологией. Фреймворк активно развивается и поддерживается командой Google. Однако на момент написания статьи технология всё ещё находится в alpha-версии, поэтому использовать её на проде пока рано. 

Но я изучил этот фреймворк и хочу поделиться своим опытом, а когда Remote Compose выйдет в бета-версию вы будете знать, как с ним работать

В статье разберём:

 общую концепцию Remote Compose,
 чем он отличается от классического BDUI,
 какие интересные технические решения используются внутри,
 несколько практических примеров использования.

Читать далее

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

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

Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.

Это вторая статья. Первая была про старт эксперимента и публикацию первых версий. Реакция была предсказуемая: часть читателей сочла это «неподдерживаемым способом разработки», часть — «игрой в прототипы», часть — «без навыков всё развалится». Я не собираюсь спорить на уровне тезисов. Поэтому вместо дискуссии — отчёт по фактам.

Ссылка на первую статью. Здесь не будет пересказа. Это именно промежуточный срез: что произошло после публикации, когда пришли реальные пользователи и реальные проблемы.

Читать далее

Решение ошибки You do not have required role or permission to perform an operation в Xcode

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

Решение ошибки You do not have required role or permission to perform an operation при загрузке в TestFlight через Xcode

Столкнулся с ошибкой при отправке сборки в TestFlight из Xcode (впервые такое)

При этом:

✅ аккаунт в App Store Connect был владельцем

✅ все соглашения, налоговые формы и банковские данные были заполнены

✅ Bundle Identifier совпадал

✅ архив собирался корректно

Проблема оказалась не в правах App Store Connect, а в том, что в аккаунтах у меня было добавлено несколько учетных записей Apple ID. Из-за этого Xcode путался при работе с App Store Connect и при отправке сборки выдавал ошибку прав доступа.

Помог выпил из Xcode всех учеток кроме той, через которую выполняется публикация. 🔨

Подробнее

Room 3 — новый мажор «комнаты». И да, теперь с поддержкой wasmJs

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

Привет! Давайте разберёмся, что там накатили в новом мажоре Room. На момент написания актуальная версия — 3.0.0-alpha03, а стабильный релиз обещают где‑то к лету.

Если вдруг выпали из контекста: Room — это повсеместно используемая ORM‑обёртка над SQLite ранее только для Android, с недавнего времени и для Kotlin Multiplatform.

И у неё вышел 3 мажор! Подробнее внутри.

Читать далее

Мобильная разработка за неделю #626 (30 марта — 5 апреля)

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

В новом выпуске выпуск приложений в App Store без Mac и Android Service своей мечты, узкие места в производительности Android-приложений и как Swift работает с памятью, Android SDK на Swift, кризис в RuStore и путь к тёмной стороне, захват категории Cast to TV в Google Play, галлюцинации LLM и многое другое. Заходите!

Читать далее

Исследование макросов @Generable и @Guide во фреймворке FoundationModels

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

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

Макросы Swift предоставляют мощный механизм для генерации кода, позволяя разработчикам уменьшать количество шаблонного кода и повышать читаемость. Фреймворк FoundationModels представляет новые макросы, призванные упростить генерацию данных для определённых типов моделей с использованием языковых моделей.

Читать далее

Использование фреймворка Foundation Models для локального ИИ в SwiftUI

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

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

На конференции WWDC 2025 компания Apple представила фреймворк Foundation Models — набор инструментов, позволяющий разработчикам интегрировать локальные ИИ-модели Apple в свои приложения. По заявлению Apple, эти модели работают полностью на устройстве, не требуют подключения к облаку, не влекут затрат на инференс и ставят во главу угла конфиденциальность пользователей. В этой статье показано, как реализовать фреймворк Foundation Models в приложении на SwiftUI для обработки пользовательских запросов и отображения ответов, сгенерированных ИИ, в реальном времени.

Читать далее

Как добавить свое расширение в DevTools и взаимодействовать с кодом приложения

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

Привет, Хабр! Я — Роза, Flutter-разработчица в Friflex. Уверена, многие из вас знакомы с Dart DevTools и уже использовали его для анализа своих Flutter-приложений. Но пробовали ли вы создавать собственные расширения? Недавно у меня была такая задача, и я хочу поделиться своим опытом.

Читать далее

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

Обновляем токен авторизации при помощи Dio

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

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

Из статьи вы узнаете:

- Из чего состоит JWT-токен?

- Зачем нужны Interceptor’ы в Dio и  чем отличается QueryInterceptor?

- Какие есть способы обновления токенов?

Читать далее

Apple хочет чтобы я купил Mac за 200к. У меня два приложения в App Store и ни одного макбука

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

У меня нет макбука. Но два моих приложения лежат в App Store. Рассказываю весь путь: регистрация Apple Developer из России, сертификаты без Xcode, автоматическая сборка через GitHub Actions. Три варианта: для вайбкодеров, программистов без мака и хардкорщиков.

Читать далее

Как Swift работает с памятью: подробный гайд для разработчиков. Часть 2

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

Всем привет! Я Данила Горячкин — iOS-инженер в команде Performance в Авито. Занимаюсь оптимизацией производительности iOS‑приложений и менторингом разработчиков.

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

Читать далее

Создаем Java обертку для C++ класса в Android приложении и реализуем обратные вызовы из нэйтива

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

Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное — не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы.

Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно‑ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками — вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку.

Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С‑функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема — не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение — хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:

Читать далее

Кэширование сетевых запросов в Ktorfit с помощью Ktor Plugins

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

Привет!

Ktor постепенно становится полноценной альтернативой классической связке OkHttp + Retrofit. Его ключевые преимущества — кроссплатформенность, чистый Kotlin, асинхронность и корутины, а также высокая гибкость и управляемость. Кроме того, ожидается поддержка HTTP/3, чего, судя по всему, не планируется в OkHttp.

Ktorfit же — это обёртка над Ktor, которая предоставляет более удобное API, практически идентичное Retrofit, что особенно удобно при миграции Retrofit —> Ktorfit. Короче, Ktorfit — это Retrofit для Kotlin Multiplatform.

В этой статье я продемонстрирую алгоритм написания простого кэша запросов для Ktorfit, используя механизм Ktor Pluguns.

Читать далее

Flutter-дайджест: март 2026

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

Март выдался… немного тише, чем февраль.
Без громких релизов уровня Flutter 3.x — но это не значит, что было скучно 😉

Наоборот — месяц получился про практику, реальные кейсы и прокачку навыков 💪
А ещё… несмотря ни на что — мы продолжаем работать.

Да, даже несмотря на блокировки Telegram —
❌ мы никуда не уходим
❌ в MAX не переезжаем
✅ и продолжаем делать лучший Flutter-контент для вас

👉 Подписка на канал сейчас — это реальная поддержка проекта ❤️
https://t.me/flutterpulse

Читать далее

Оптимизация Flutter-приложения: списки, build() и утечки памяти

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

Привет, Хабр! Меня зовут Анна Ахлестова, я лидер Flutter-команды компании Friflex. В этой статье я расскажу об оптимизации скроллящихся списков, уменьшении лишних перестроений в build() и контроле утечек памяти в приложении на Flutter. Разберу, какие решения помогают снизить нагрузку на интерфейс, где обычно возникают проблемы с производительностью и на что стоит обращать внимание в повседневной разработке.

Читать далее