Обновить
128K+

Android *

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

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

Как мы писали приложение для доставки из ресторанов

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

В феврале 2021 года ВкусВилл запустил проект «Сгоряча» по доставке блюд из более 50 «dark kitchen» в Москве, Санкт-Петербурге, Волгограде, Чебоксарах и других городах. Сейчас через приложение можно заказать также еду из ресторанов-партнеров. Блюда бесплатно доставляют собственные курьеры сети  в среднем за 1-1,5 часа после оформления заказа.

Доставок из «dark kitchen» не так много — всего 3-4 агрегатора доставляют блюда. Это нетривиальная задача: нужно наладить работу курьеров, разработать приложения для партнеров, курьеров и клиентов, подключить партнеров и обучить их пользоваться доставкой, продумать архитектуру на случаи загрузки — много всего.

За создание и развитие мобильных и веб-сервисов ВкусВилл отвечает команда «Фулстек» (направление ГК «Автомакон», специализирующееся на мобильной и веб-разработке). Подробнее расскажем, как мы сделали 3 небольших доработки для сервиса по доставке блюд из ресторанов, как он работает и с какими сложностями нам пришлось столкнуться в процессе.

Читать далее

Danger. Автоматизируем ревью на CI и пишем свой плагин

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

Привет, я Татьяна Родионова, Android-разработчица в Lamoda. Как-то раз передо мной появилась задача упростить ревью пул-реквестов с помощью Danger. Я решила добавить автоматическую проверку код стайла, используя ktlint. Но оказалось, что Danger не поддерживает такое решение, поэтому я добавила такую проверку сама :) 

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

Читать далее

Недостатки Navigation Component deep linking и как их обойти

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

Эта статья для тех, кто стоит перед выбором реализации собственного решения для обработки deep links в Android приложении или использования, того что предлагает Google в своем Navigation Component.

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

Далее я опишу недостатки, с которыми пришлось столкнуться, и почему я больше не буду использовать deep linking из Navigation Component.

Читать далее

Кирилл Розов, Android Broadcast: зачем программисту делиться знаниями и как это монетизировать

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

Кирилл Розов — разработчик в Тинькофф, 10+ лет опыта в Android. Автор каналов «Android Broadcast» в Telegram и YouTube, создатель сообщества Android Broadcast Talks. Мы поговорили с ним о том, как уютный канал трансформировался в бродкаст на YouTube, почему разработчикам важно делиться знаниями и как не выгореть блогеру.

Читать далее

Как создавать анимации в Jetpack Compose

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

Анимации в Jetpack Compose довольно легко понять, применить и кастомизировать под требования дизайна. Но я ещё не видел ни одного туториала по анимациям в Compose на русском языке, поэтому подготовил на эту тему доклад для майского Mobius. А для тех, кто больше любит читать, чем слушать, подготовил статью. В материале мы обсудим  виды анимаций, а также пройдём все шаги по способам их создания и кастомизации.

Читать далее

Дайджест интересных материалов для мобильного разработчика #453 (15 — 21 августа)

Время на прочтение4 мин
Охват и читатели2.2K
В новом дайджесте чиним баги и анализируем Now in Android, тестируем и понимаем React Native, улучшаем монетизацию, дизайним слайдер оплаты, запускаем Dev Box-ы и и многое другое.

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

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

Jetpack Compose: реализация меню Apple Watch

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

Мне очень нравится меню с Apple watch: плавность анимации, поведение иконок при перемещении, расположение элементов по необычной сетке. Я захотел повторить это меню на Android. Но делать это на старом подходе с помощью ViewGroup или кастомного Layout Manager для RecyclerView не очень хотелось: слишком уж затратно для работы «в стол». 

С появлением Compose эта идея стала более привлекательной и интересной для реализации. Рассказываю, как создать собственный ViewGroup на Jetpack Compose. 


Читать дале

Иерархия модулей: как выстроить связи между модулями в Android

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

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

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

Статья также доступна в видео-формате.

Читать далее

Дайджест интересных материалов для мобильного разработчика #452 (8 — 14 августа)

Время на прочтение5 мин
Охват и читатели2.9K
Как и обещали, возвращаемся после отпуска с новым дайджестом! В нем классные UI и много графиков, главная концепция Jetpack Compose и паттерны Dart проектирования, новый язык программирования Google, ловушки монетизации и многое другое!

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

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

Flutter Flame: подходы к оптимизации

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

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

Читать далее

Ошибка в stacktrace из продакшена

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

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

Читать далее

Как работает WorkManager в Android

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

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

Как бороться с Android’ом и не позволять ему уничтожать важные фоновые процессы, расскажет Сергей Смирнов, Android-разработчик CleverPumpkin, который так овладел инструментом WorkManager, что смог в фоновом режиме написать эту статью.

Читать далее

Сложности переноса Papers, Please на мобильные

Время на прочтение16 мин
Охват и читатели21K
Mobile-Title

Я разработал Papers, Please в 2013 году специально с расчётом на десктопные компьютеры и управление мышью. В 2022 году десктопных компьютеров уже не существует и все компьютеры — это мобильные телефоны. Настало время обновить этого динозавра.

Эта статья из тысяч слов и мегабайтов изображений раскроет вам некоторые аспекты портирования игры с большого десктопа на маленький телефон. Отдавая дань прошлому, я написал эту статью как большой кусок текста с вкраплениями тегов img, а не превратил её в яркое видео. Ещё через девять лет я портирую этот пост в VR.

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

То же блюдо на другой тарелке.
Читать дальше →

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

Магия Dispatcher'ов и как сделать свой Main

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

Я думаю сейчас не осталось людей, незнакомых с корутинами в Kotlin. Волшебный инструмент, согласны?

Читать далее

Запросы в сеть с Clean Architecture — Обработка ошибок с сервера. Boilerplate ч. 3

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

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

Читать далее

Flutter jank shaders — история проблемы и пути решения

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

Меня зовут Андрей, я Flutter-разработчик в команде Центра развития финансовых технологий (ЦРФТ) Россельхозбанка. Сегодня поговорим о «jank shaders» — дёргающейся анимации при первых запусках приложений на Flutter — и о том, как можно постараться её исправить.

Несколько лет назад пользователи отметили, что при первом запуске приложений на Android и IOS наблюдаются некоторые задержки в анимации, но при последующих запусках задержки постепенно исчезают. Подобная проблема распространяется не только на пользовательские анимации, но и на базовые, такие как например переходы между экранами.

На скриншоте ниже приведен пример задержки анимации перехода между экранами при первом запуске.

Читать далее

Адаптация Jetpack Compose в hh.ru

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

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

Всем привет! Меня зовут Паша Стрельченко, я Android-разработчик в hh.ru. В этой статье поведаю историю о том, как начиналась адаптация Jetpack Compose в нашем продакшн-приложении. 

Читать далее

Как мы ускоряли сборку Android-приложения из двух миллионов строк кода

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

Всем привет! Наверняка каждый Android-разработчик хоть раз сталкивался с проблемой скорости сборки своего проекта. После нехороших слов в адрес кодогенерации, покупок более мощного железа, многочисленных попыток распилить проект на небольшие параллельно собираемые модули и прохождений всех стадий торга мы продолжаем искать решение этой проблемы. К счастью, за годы развития и в Gradle, и Android Gradle Plugin (AGP) появилось много полезных штук для ускорения сборки, о которых я расскажу дальше.


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


Я расскажу на примере мобильного Яндекс Браузера. У нас было ~150 Gradle-модулей, ~2 млн LoC на Java/Kotlin, десяток Gradle-плагинов, тысячи строк кода в buildSrc и лёгкая дрожь от вопроса, сколько ещё может переварить билд-система. Не скажу, что это всё было категорически необходимо, но к написанным строчкам кода надо проявлять уважение.

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

Адаптируем Android приложение для незрячих людей. Часть 1: основы

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

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

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

Читать далее

Эволюция игрового фреймворка. Клиент 3. Слои логики

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

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

Вся логика будет разбита на слои. Основной смысл слоев тот, что классы одного слоя максимально независимы от классов с соседних слоев и абсолютно независимы от остальных. Все это уже относится не к основному фреймворку (Core Framework), а к фреймворкам для разных групп жанров (Base Game Frameworks) и для каждого отдельного жанра (Game Frameworks).

Читать далее