Обновить

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

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

Маяк в пустыне: Kotlin DSL для Android-шейдеров

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

Когда я впервые всерьёз сел писать AGSL под Android, ощущение было очень странное. С одной стороны - современный графический конвейер, RuntimeShaderRenderEffect, красивые эффекты и весь этот техно-киберпанк. С другой - шейдерный код живёт внутри строковых литералов, uniform-ы приходится объявлять и привязывать вручную, а отладка периодически начинается с философского вопроса: «в какой именно строке я сейчас всё сломал?»

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

Собственно, так и появился RedByteFX. Я сделал его не только ради собственного удобства. Мне хотелось решить ещё одну задачу: сделать AGSL более массовой и понятной технологией для Android-разработчиков. Потому что в нативном виде AGSL мощный, но психологически для многих выглядит как «не трогай, это на Новый год». А мне хотелось, чтобы к шейдерам можно было подойти без дрожи в коленях и без ощущения, что сейчас придётся разговаривать с господином ПЖ на древнем пацакском наречии.

Читать далее

Новости

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

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

В новом дайджесте пружинная анимация и Kotlin без «воды, будущее Android-приложений с AppFunctions и путь к сингулярности, лампа с цифровым джинном, как Gemma 4 меняет правила игры, ошейники для коров, замена List, Remote Compose и многое другое. Заходите!

Читать далее

Как я с помощью автоматизации выиграл iPhone от McDonald’s

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

Несколько лет назад сеть McDonald проводила промо-акцию, в которой через простую мини-игру можно было выиграть iPhone. Называлась эта игра «FriesHit» и была доступна в мобильном приложении McDonald’s (бельгийская версия). Это просто примитивная тапалка, целью которой являлось занять первую строчку таблицы лидеров, чтобы заполучить заветный iPhone (или Samsung S10, если вы окажетесь на втором месте; но кому он нужен).

Каждый день таблица лидеров аннулировалась, то есть компания ежедневно отдавала iPhone X занявшему первое место (как я понял, это происходило целый месяц). Естественно, в игре есть свой подвох — чтобы набрать победные очки, нужно соревноваться с другими игроками. Хитрость в том, что для покупки жизней в игре вы тратите «баллы лояльности». Кто не знает, эти баллы вам начисляют за покупку товаров в сети (типа потратьте €1 в ресторане McDonald's и получите 10 баллов).

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

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

Читать далее

Room или SQLite? Как не писать SQL запросы вручную на Android

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

Каждое Android-приложение, которое хранит данные на устройстве, рано или поздно сталкивается с базой данных. Встроенная SQLite — надёжное решение, но работа с ней через SQLiteOpenHelper требует написания SQL-запросов вручную, преобразования курсоров в объекты и постоянного контроля за закрытием соединений. Это отнимает время и довольно часто вызывает ошибки.

Google предложил библиотеку Room, которая является оберткой над SQLite и реализует паттерн ORM (Object-Relational Mapping). В этой статье мы на конкретном примере сравним, как выглядят операции добавления и чтения данных на чистом SQLite и на Room. Вы увидите, почему Room избавляет от «шаблонного кода» и делает работу с БД простой и безопасной.

Читать далее

Как сделать мобильное приложение удобным и уникальным: 8 шагов от идеи до тестирования

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

Знакомо, правда? Мечтаешь создать невозможное: уникальное, новое, то, чего ещё нет на рынке. И при этом чтобы это было твоё «детище», твой продукт, которым ты будешь гордиться и который станет по-настоящему стоящим и полезным для мира.

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

В этой статье я расскажу о проектировании мобильного приложения "Balance" по методу колеса жизненного баланса — от выбора идеи до кликабельных прототипов и тестирования.

Изучая UI/UX-дизайн, маркетинг и рынок в целом, я пришла к главному выводу: уникальность заключается не в том, чтобы придумать то, чего никто никогда не делал, а в том, чтобы сделать так, как никто другой не делает: удобно, красиво, с душой. И для этого не нужна команда дизайнеров. Только вы, ваше желание и правильные шаги.

Читать далее

Kotlin без «воды»: новая книга для тех, кто хочет изучить язык на практике

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

Некоторые языки программирования начинают по-настоящему ценить тогда, когда разработчик замечает: значительная часть усилий уходит на решение задачи, а не на борьбу с инструментом. Экосистема Java — хороший пример такого накопленного трения. Она несет в себе наследие решений, принятых десятилетия назад, притом они не обязательно плохие — просто раньше не учитывались те сценарии, которые сегодня стали повседневностью: интенсивная работа с асинхронностью, быстрые итерации, требования к читаемости и поддерживаемости кода. Kotlin возник как попытка аккуратно убрать часть этого трения, не разрушая существующую инфраструктуру. Речь здесь идет о другом уровне комфорта при решении привычных задач — от базовых конструкций до построения полноценных сервисов. Именно этому посвящена только что вышедшая в издательстве «БХВ» книга Елены Ван Энгелен – Масловой «Kotlin. Краткий курс».

Что внутри?

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

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

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

Читать далее

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

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

Всем привет!

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Решение ошибки 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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее
1
23 ...