Обновить

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Мы начали наше исследование по эмуляции 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 мин
Охват и читатели2.1K

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

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

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

Читать далее

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

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

Всем привет! Мы – Саша Королёв и Юля Трусова, инженеры в 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.8K

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

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

Читать далее

Мастерство фокусов на 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 мин
Охват и читатели19K

Привет! Если вы мобильный разработчик и следите за 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 —  срочно освоила. Затем предложили самой рисовать и собирать сайты. А спустя несколько лет развилось направление продуктового дизайна — вот тут я и осталась. Любовь с первого взгляда.

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

Читать далее