Обновить

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

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

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 мин
Охват и читатели61K

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение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.9K

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Все мы являемся экспертами в той или иной области инженерно‑технического знания. Но когда банк обновляет интерфейс пользователя, мы все примерно одинаково ищем, где там теперь оплата по 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 проектах. В этой статье мы рассмотрим её особенности.

Читать далее

Dart / Flutter — применяя zero / empty объекты ко всему

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

Больше техническая заметка, чем статья, поэтому постараюсь изложить мысли как можно кратче.

Приходя из JS/TS мира, когда я впервые написал на Dart, самой прекрасной вещью, помимо многих было использование функций isEmpty или isNotEmpty для String, List, Map, и так далее. Это было невероятно просто и прекрасно не писать каждый раз  .length == 0.

Также, очень полезным паттерном были empty/zero значения как Duration.zero, Offset.zero, и другие.

Спустя время, я нашел привычку использовать похожий принцип для работы с различными случаями, а также пришел к мысли - что если мы используем такие значения для большей части объектов, избавляясь от null (не для всех случаев, но тем не менее)? Немного поискав, нашел похожий паттерн в Go и других языках, и продолжил думать.

Читать далее

Как правильно организовать проект c модульной архитектурой в iOS-разработке

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

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

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

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

Читать далее