Обновить

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

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

Мастерство фокусов на 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.2K

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

Как проект для друзей стал чем-то большим

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

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

Читать далее

Offline First в мобильных приложениях. CRUD на стороне клиента

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

Привет, Хабр! Это Ахмед Шериев, сооснователь стартапа VoxOps, а сегодня — еще и гостевой автор блога Friflex. Это вторая статья про мой опыт разработки офлайн-приложений — первая была про кэширование.

Если пользователи в офлайне должны менять данные, а потом синхронизировать изменения с сервером, есть два основных подхода. Первый — синхронизировать сами данные. Второй — синхронизировать команды или события.

Читать далее

Content Based Theme в Android приложении

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

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

Читать далее

Сколько я заработал в RuStore и как Роскомнадзор продвигал мое приложение

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

В этой статье я поделюсь своей историей: как я в одиночку пробивался в отечественном магазине приложений, сколько заработал и как странным образом Роскомнадзор оказался моим союзником в продвижении стартапа.
Читай дальше — сейчас всё расскажу!

Читать далее

Женщины в ИТ: есть ли равноправие?

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

24 апреля ITU (Международное сообщество телекоммуникации) совместно с UN Women присоединились в девушкам по всему миру, чтобы праздновать «Международный день девушек в информационных и коммуникационных технологиях». Цель мероприятия – воодушевлять, поощрять и поддерживать женщин за выбор технических (математика, физика, информатика, науки) профессий, а также привлекать коммьюнити для продвижения сотрудничества с ними. 

Мы решили поговорить с нашими коллегами женского пола и спросить про их путь в ИТ: как они оказались в сфере, сталкивались ли с гендерным неравенством. Цель материала — рассказать про историю успеха коллег, высококвалифицированных и востребованных специалистов в ИТ. 

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

Му будем рады увидеть ваше мнение или историю в комментариях.  

Как ты решила перейти в ИТ? 

Анна Оборина, ведущий продуктовый дизайнер: По сути, ИТ-сфера сама нашла меня. Я рисовала всю свою жизнь, а после университета сразу попала на должность дизайнера. Пришлось прямо в бою осваивать графические редакторы. Знакомые предложили поработать на поддержке интернет-сайтов и оказалось, что они на чистом HTML —  срочно освоила. Затем предложили самой рисовать и собирать сайты. А спустя несколько лет развилось направление продуктового дизайна — вот тут я и осталась. Любовь с первого взгляда.

Анна Жаркова, лид мобильной разработки: Я шла в ИТ целенаправленно. Училась я хорошо, многое получалось, но хотелось нормальную насущную специальность, а к медицине душа не лежала. Родители отвели меня на профтестирование. Результаты показали, что мне самая дорога в ИТ. По совпадению, когда мы вернулись домой, увидели воткнутую в дверь рекламу курсов по разработке для подростков (тогда этого было ну очень мало). Еще одним совпадением стал звонок моей бабушки, которая сообщила, что мой дядя (мамин брат) решил подарить мне первый компьютер. Против таких явных знаков свыше идти было бы странно.

Читать далее

Обновляем AOSP-приложение «Контакты», или Чем обернулось «приключение на 20 минут» с legacy-кодом

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

Привет, Хабр! Меня зовут Дмитрий, я старший инженер-программист в департаменте разработки мобильных приложений YADRO. В этой статье я расскажу о нашем опыте работы со стандартным AOSP-приложением «Контакты». Это базовая версия телефонной книги, разработанная в рамках Android Open Source Project (AOSP). На этапе ревью дизайна мы решили, что можно улучшить UI, не трогая бизнес-логику. Это дало начало увлекательной истории...

Читать далее

Отлаживаем приложение вместе со SwiftUI Instruments

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

Apple по доброте душевной поделилась с разработчиками инструментом отладки SwiftUI. Удобный он или не очень — разберёмся вместе с Surf iOS Team. 

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

Что скрывает Robolectric и почему это важно знать?

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

Представьте, что можно тестировать android-код без эмулятора, запуская тесты за секунды вместо минут. Именно это обещает Robolectric — библиотека, которую либо любят, либо ненавидят, но точно не игнорируют. 

За кажущейся простотой «просто добавь зависимость» скрывается удивительная магия модификации байткода, о которой не рассказывают в статьях. Предлагаю разобраться, как на самом деле работает магия Robolectric и почему эти знания пригодятся любому android-разработчику.

Читать далее

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

Offline First в мобильных приложениях. Кэширование

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

Привет, Хабр! Это Ахмед Шериев, сооснователь стартапа VoxOps, а сегодня — еще и гостевой автор блога Friflex. Моя статья — про опыт разработки офлайн-приложений. 

Я делал офлайн-поддержку в приложениях на самых разных языках. Как вовремя и успешно, так и с факапами. Например, обещал за две недели внедрить офлайн, а потом появлялись скрытые кейсы, и разработка затягивалась до месяца, двух, трех… 

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

Я внедрял поддержку offline как в роли разработчика, так и в роли руководителя и директора по разработке. Поэтому тема мне хорошо знакома с обеих сторон. Кто помнит, с ней я выступал на CrossConf.

Читать далее

Хочешь стать техлидом? Возможно, что не стоит

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

Привет! Меня зовут Абакар, я работаю главным техническим лидером разработки в Альфа-Банке.

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

Читать далее

Рецензия на книгу «Elasticsearch в действии, 2-е издание»

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

Книга Elasticsearch в действии. Второе издание — это подробный (~650 страниц в русском переводе) путеводитель по созданию масштабируемых поисковых систем на базе Elasticsearch. Второе обновленное издание знакомит с архитектурой, API и реальными сценариями применения Elasticsearch — от полнотекстового поиска до визуализации данных и машинного обучения. Книга — отличный выбор для начинающих разработчиков, но наверняка может быть полезна и для практикующих специалистов. 

Читать далее

Как сделать GitLab CI/CD вашим лучшим другом для сборки и доставки Flutter приложений. Часть 1

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

Flutter & GitLab CI/CD. Подготовка и настройка физической машины

В мире мобильной разработки, где скорость и стабильность доставки приложений определяют успех, выбор инструментов для автоматизации становится особенно важным. Работая мобильным разработчиком в TAGES более пяти лет, я убедился, что использование self‑hosted решений дает значительные преимущества в гибкости, надежности и контроле над процессами. Одним из таких мощных инструментов является GitLab — платформа, которая позволяет не только управлять кодом, но и настраивать полноценные CI/CD‑процессы.

Эта статья станет первым шагом на пути к полной автоматизации сборки и доставки Flutter‑приложений. Мы разберем, как превратить вашу физическую машину в надежный инструмент для автоматизации. В конце статьи у вас будет готовая машина, которая сможет запускать и обрабатывать задачи из GitLab.

Читать далее

Delta Chat. Короткая инструкция в картинках

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

Все мы являемся экспертами в той или иной области инженерно‑технического знания. Но когда банк обновляет интерфейс пользователя, мы все примерно одинаково ищем, где там теперь оплата по QR‑коду. Ровно также, понимая суть приложения в целом, мы можем потратить непропорционально большое время на поиск той самой «any key», которую нужно «press».

В 2019 году появилось приложение Delta Chat — мессенджер, работающий поверх почтовых протоколов. Нельзя сказать, что Delta Chat — это вершина эволюции пользовательского интерфейса или какая‑то серебряная пуля против стремительно развивающейся балканизации Интернета. Но определённые доводы «за» у использования этого приложения есть.

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

Как отправить e‑mail в 2025 году

Как я писал проводник для Wear OS и что из этого вышло

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

Как я писал проводник для Wear OS и что из этого вышло

О чём тут пойдёт речь:

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

Читать далее

BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform

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

BundledSQLiteDriver из библиотеки androidx.sqlite — это специальная сборка встраиваемой СУБД SQLite от команды разработчиков Android Jetpack, предназначенная для использования в Kotlin Multiplatform проектах. В этой статье мы рассмотрим её особенности.

Читать далее