Обновить
207.37

Android *

Пишем под самую популярную мобильную ОС

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

Управление событиями в ViewModel с помощью StateFlow, SharedFlow и Channel

Время на прочтение6 мин
Количество просмотров4.5K

Сообщество Android-разработчиков уже долгое время ведёт жаркие споры о том, что лучше использовать в ViewModel для представления событий: StateFlow, SharedFlow или Channel. В этой статье мы разберёмся в различиях между этими тремя подходами и определим, какой из них наиболее подходит для ваших нужд.

Читать далее

Алло! Реализуем дисковый телефон с помощью Jetpack Compose(Обновлено)

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров3.1K

Привет, Хабр! Меня зовут Артем, я автор и ведущий YouTube и Telegram каналов Android Insights.

Данная статья - идейный продолжатель моей предыдущей статьи Создание Custom Layout в Jetpack Compose

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

Читать далее

Подходы к созданию ViewModel в Android

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров4.4K

В данной статье будут рассмотрены способы создания ViewModel (далее VM) в Android, а также usecase для каждого подхода.

Читать далее

Героические цивилизации — пишу гибрид двух легендарных игр

Время на прочтение6 мин
Количество просмотров4.4K

Всем привет! Я решил написать компьютерную игру и хочу в этой статье поделиться задумкой, тем, чего уже удалось добиться и пригласить желающих присоединиться. Идея - соединить две любимые стратегии: Цивилизацию и Героев меча и магии в единый концепт, чтобы объединить плюсы обоих игр и получить много новых игровых механик.

Читать, куда уже продвинулась игра

Т-функция: подключаем логику к UI как к БД

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

Так, давайте еще раз.

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

Открытым остался вопрос: как ее к UI подключать?

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

В этой статье я разложу по полочкам само решение, как я к нему пришел и при чем тут Алан Тьюринг. А бонусом покажу как это все масштабируется и оставлю вас размышлять о том, почему мы не додумались до этого раньше (ну за 85 лет уже можно было бы).

Утонуть в тексте

Mapping классов с помощью плагина MapCraft в Android Studio

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


Лично меня всегда утомляла рутинная работа по созданию mapper-ов между дата классами. Особенно такого кода много, когда пишешь по Clean Artitecture. Разделяя слои. И на каждый слой создаётся куча сущностей. Очень часто в таких ситуациях эти классы просто дублируются.

Читать далее

Эффект скрэтч-карты в Jetpack Compose

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

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

Читать далее

Surf-итоги кода: Flutter, Android и iOS в 2024-м

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

Да-да, мы назвали статью «Итоги кода» — и кто нам что-то скажет.

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

Располагайтесь удобнее, возьмите чашечку любимого горячего напитка и погрузитесь в итоговую идиллию новостей и результатов от Flutter, Android и iOS-команд Surf.

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

Оптимизация под контролем: инструменты и метрики для Аndroid-приложений

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

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

Меня зовут Григорий Рылов, я занимаюсь мобильной разработкой под Android 9 лет, увлекаюсь темой производительности. Работаю старшим разработчиком ВКонтакте, в проекте VK Клипы. В этой статье поговорим про оптимизацию времени запуска Android-приложения, разберём основные метрики старта и инструменты, с помощью которых можно анализировать производительность.

Читать далее

Разработка плагина для Android Studio

Время на прочтение10 мин
Количество просмотров3.2K

В современном мире разработка программного обеспечения становится всё более сложной и многообразной. Одним из ключевых инструментов, используемых для создания мобильных приложений, является Android Studio. И помимо стандартных возможностей, Android Studio позволяет разработчикам расширять функциональность своей среды с помощью плагинов.

Читать далее

Orbit MVI с сахаром: вкусный фреймворк для однородной архитектуры

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

Привет, $username! Меня зовут Анастасия, я junior-android-разработчик в МТС Диджитал. Пойдем, расскажу тебе про фреймворк OrbitMVI. Узнала я о нем от своего лида: он делегировал мне задачу заменить наш самодельный Redux на Orbit, чтобы в нашем приложении архитектура стала удобнее и однороднее.

Сначала я пошла читать документацию, что из себя представляет Orbit MVI и с чем его едят. Затем попробовала его на небольшом тестовом проекте и поняла: это интересный, удобный и понятный фреймворк. В этом посте я покажу, что в «Орбите» есть полезного и как его можно использовать.

Читать далее

Мобильная разработка за неделю #569 (16 — 22 декабря)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.8K
В новом дайджесте добавляем Image Playground в приложение и разбираемся с Android 15, делаtv свой DI за 10 минут и заставляем крутиться таймер, раскрываем внутреннюю архитектуру Flutter, проектируем мобильное приложение маркетплейса, оцениваем годовые доходы App Store и Google Play и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.

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

Как мы раскрыли внутреннюю архитектуру Flutter и затащили его на собственную платформу

Время на прочтение13 мин
Количество просмотров8.7K
Если вы разрабатываете мобильные приложения, то почти наверняка сталкивались с Flutter — мегапопулярным открытым фреймворком от Google. Наша команда Mobile SDK and Applications Development, конечно, тоже захотела использовать Flutter при создании приложений для KasperskyOS — собственной микроядерной операционной системы «Лаборатории Касперского» — но был нюанс…



Особенности архитектуры KasperskyOS задают условия, при которых мы не можем пойти проторенными дорожками и свободно интегрировать фреймворк на своей платформе. Подсмотреть решения где-то вовне мы не можем тоже — таких кейсов в индустрии просто не было. А сам Google практически не раскрывает внутреннюю архитектуру Flutter. Так что интеграцию требовалось выстраивать с нуля.

И мы залезли под капот Flutter и нашли решения, которые, с одной стороны, были бы удобны разработчикам, а с другой — устраивали бы нас с точки зрения безопасности и производительности.

Если вы тоже разрабатываете приложения, где требуется разбираться во внутренней архитектуре Flutter, статья точно будет вам полезна — ныряйте под кат!
Читать дальше →

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

Что такое KNOX по мнению Galaxy AI, как установить сертификат Минцифры и другие впечатления за год

Время на прочтение6 мин
Количество просмотров3.5K

Если бы Samsung дал доступ к KNOX SDK всем и дополнил его всеми возможностями для экспериментов, а не только востребованными бизнесом, то этот блог стал бы, наверное, одним из популярных. Сбылась бы мечта многих, связанных с IT, — отключить все ненужные сервисы на смартфоне и чувствовать себя хорошо.

В принципе, хороший контент для письма Деду Морозу… В этой статье пройдусь по тому, какие функции SDK и облачные сервисы KNOX привлекали разработчиков решений в этом году, а также самые занятные B2B истории и первые впечатления от ведения​ блога.

Читать далее

Разработка специализированного графика для отображения ЭКГ с использованием Canvas на платформе .NET for Android

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

В современной медицине точное отображение электрокардиограммы (ЭКГ) играет ключевую роль в диагностике и мониторинге сердечно-сосудистых заболеваний. Разработка специализированного графика для визуализации ЭКГ в реальном времени на мобильных устройствах требует не только глубокого понимания медицинских стандартов, но и тщательного выбора технологий для реализации. В статье мы рассмотрим процесс создания такого графика с использованием технологии Canvas, обсудим возникшие проблемы и найденные решения.

Читать далее

Создание Custom Layout в Jetpack Compose

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

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube канала Android Insights

Сегодня я расскажу о том, как создавать Custom Layout в Jetpack Compose, а также мы решим одну связанную с данной темой практическую задачку. Создание Custom Layout может показаться чем-то сложным на первый взгляд, но я постараюсь все объяснить максимально понятно и подробно. Итак, приступим!

Читать далее

Dagger 2: как сделать свой DI за 10 минут

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

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. Если в первой статье мы разбирали фреймворк Koin, то во второй на наш исследовательский стол попадёт Dagger, который мы используем на большинстве проектов Ozon, в том числе на приложении Ozon Курьер Экспресс, за которое отвечает наш отдел.  Это мобильное приложение, которое позволяет курьерам-фрилансерам и водителям службы доставки взять подработку в Ozon и доставлять экспресс-заказы от селлера напрямую клиенту или в ПВЗ Ozon.

В проекте мы используем Dagger 2 согласно его основной функциональности — собирать общие компоненты и навигацию между модулями, изолировать зависимости, улучшить тестируемость и поддерживаемость.

Его важный плюс в том, что он строит дерево зависимостей и может в момент компиляции узнать, какие зависимости достижимы, а какие нет. Стоит сказать, что мы не будет разбирать механизм кодогенерации, а сосредоточимся именно на классах, которые Dagger 2 создаёт для своей работы.

Эта статья будет полезна тем, кто использует Dagger 2 в своих приложениях и иногда/часто попадает в ситуации непонимания, почему Dagger 2 ведёт себя не так, как мы ожидаем. А это может создавать определённые трудности, особенно при отладке сложных проблем или при необходимости настройки более сложных сценариев внедрения зависимостей.

Например, в приложении Ozon Курьер Экспресс ведутся большие работы по переписыванию приложения на новую архитектуру. Поэтому рядом с существующей DI-архитектурой появилась вторая DI-архитектура.  Чтобы их подружить, пришлось покопаться во внутренностях кода, что генерирует Dagger 2.

Дополнительная (но не менее важная) цель статьи — показать, что базовый код, который генерирует Dagger, не такой уж и страшный :).

Читать далее

Всё, что нужно знать об Android 15: архивирование, защита данных и новые API

Время на прочтение11 мин
Количество просмотров14K

Android 15 ворвался в наши жизни с новым усилением безопасности и удобством разработки. Сёрфер Полина, Android-разработчик в Surf, всё посмотрела, попробовала, проанализировала и теперь расскажет, что же там такого интересного. 

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

У тимлида нет цели, но есть путь. Или как стать настоящим самураем и не сделать сеппуку

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров9.5K

Понимание роли тимлида варьируется от компании к компании. Для одних это старший разработчик, для других — полноценный руководитель команды, а в некоторых случаях — просто посредник между командой и менеджментом. Давайте разберёмся, кто такой тимлид, какова его роль и как идти этим путём и не окончить самурайский путь преждевременно. 

Читать далее

Мобильная разработка за неделю #568 (9 — 15 декабря)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.8K
В этом выпуске Swift и SwiftUI в iOS 18 и собственная система мониторинга фильтра воды, очередные похороны Flutter и суровые истины о программировании с помощью ИИ, дейтинг в России 2024, открытые русскоязычные опенсорс-модели и многое другое. Подключайтесь!

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