Подключайтесь!
Подключайтесь также к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
Android, iOS, Windows Phone и прочие
Это первый текст на канале, так что сначала я хочу представиться: вряд ли кто-то всерьез будет прислушиваться к анониму, даже если он весь из себя экспертный эксперт. Итак, привет, я - Женя Шаповалов, Senior Android/Flutter Developer в компании Innowise (и хэд mobile department там же). В мобильной разработке я с 2015 года, начинал с Android, а за Flutter мы принялись вместе с коллегами в Innowise - да так мощно, что в итоге в компании появилось отдельное направление разработки.
Ну что, вроде бы заслуживаю доверия? Тогда погнали!
Сегодня рассказываю, как правильно тестировать код, и делюсь личным опытом. Да-да, ты все понял верно: при разработке мобильных приложений тестирование проводит не только QA-инженер, но и сам автор кода. Причем не только в самом конце, когда приложение почти готово, но и в процессе. Мы сегодня рассмотрим оба этапа.
Функции приложения, которые должны выполняться с определенной периодичностью или по расписанию, не выглядят на первый взгляд чем-то сложным. Однако при реализации можно столкнуться с рядом проблем. Грамотно подобранный инструмент позволит облегчить разработку и избежать проблем при эксплуатации приложения.
В статье на примере покажу, зачем использовать планировщик задач Quartz в Spring Boot-приложениях и с какими проблемами он поможет справиться.
В команде Android мы активно применяем MVI для проектирования взаимодействия состояния экрана и бизнес-логики. В этой статье мы хотим рассказать о собственной MVI-библиотеке – Reduktor и об опыте внедрения и использования. Статья будет полезна всем, кто хочет познакомиться с Redux-like MVI.
Думаю, каждый из нас периодически сталкивается с непонятными микрофризами при взаимодействии с, казалось бы, простым UI…
Просто скролишь список, и тут — бац! Лагнуло! Сегодня я бы хотел разобрать одну из множества причин такого поведения — работу с ресурсами. Мы разберёмся, в каких случаях работа с ресурсами может стать проблемой. Почему это происходит и как лучше всего от этого избавится.
В октябре Владислав Килин, Кирилл Борисов и учебная команда Слёрм проведут «DevOps Tools для разработчиков» — практический интенсив в новом формате. Его цель — расширить стек специалистов и познакомить их популярными эксплуатационными инструментами. Мы провели интервью с автором идеи интенсива и руководителем одной из учебных команд Слёрма, Евгением Бутыриным. Он рассказал, в чём идея «DevOps Tools для разработчиков» и кому он будет полезен, почему было принято решение внедрить изменения в отработанный формат обучения.
В 2022 году многим российским компаниям пришлось адаптировать мобильные приложения и решать проблемы, вызванные международными санкциями.
Когда мобильное приложение ВТБ было удалено из Google Play, сразу встал вопрос — как пользователи смогут получать обновления? В нашем случае это вопрос доступа миллионов клиентов, которые уже установили Android-приложение «ВТБ Онлайн», к банковским услугам. При поиске решения заодно удалось сократить размер приложения в 2 раза — до 220 Мб.
О том, как решали вопрос с обновлением, переходом на новые площадки и оптимизацией размера приложения, расскажем под катом.
Пользователям Flutter не понаслышке знаком такой проект как Skia. Он является движком для рендеринга всего что мы видим на экране Flutter. С помощью Skia можно рисовать очень сложные элементы интерфейса да и в целом любые 2D сцены с поддержкой плавной анимации и различных эффектов. Так почему бы не взять это на вооружение, подумали ребята из Shoppify и выпустили React Native Skia - библиотеку позволяющую использовать Skia в экосистеме React Native.
Привет, Хабр! Меня зовут Саша Лепехин, я разрабатываю мобильное приложение СберИнвестор под Android. Во время разработки и тестирования мобильного приложения мне часто нужно просматривать логи внутри приложения, причем без подключения по adb.
В принципе, есть множество приложений, которые позволяют просматривать содержимое logcat на устройств. Но с ними часто возникают самые разные проблемы: такие приложения нуждаются в специальных разрешениях или наличии root доступа, запускают отдельные процессы или сервисы. Или же они могут просто не работать на некоторых устройствах (например, там, где выключен logd). В этой небольшой статье предложено решение большинства подобных проблем. Оно основано на трансформации байт-кода приложения. Поехали!
Всем привет! Я живу в Средней Азии и замечаю следующую картину - мои знакомые и друзья со временем переезжают заграницу. Большей частью в Российскую Федерацию. Кто-то в Америку, кто-то в Корею, Турцию, Европу и прочие благополучные страны. Их всех объединяет одно - они потратили кучу времени и энергии на процесс переезда, получение документов, разрешений и прочих трудностей. Собравшись с несколькими, самыми близкими друзьями, мы решили запилить сервис помощи переселенцам - HumanWay.
В процессе обдумывания, голова просто кругом пошла - насколько сложная доменная область. Количество сущностей множилось с каждой новой мыслью и никакая бритва тут не помогала. Список необходимых действий зависит от страны исхода, от возраста заявителя, состава семьи, профессии, региона вселения и многих других параметров. Все эти данные нам надо собрать, обработать и выдать наиболее оптимальный путь.
Наша мысль пошла дальше, чтобы пользователь не запутался в таком сложном процессе, мы захотели ему помочь: дать подсказки, лайфхаки, придуманные такими же переселенцами до него, и информацию о необходимых документах кратко и в нужный момент. Чтобы реализовать задуманное нужно было какое-то особенное техническое решение. Традиционные подходы хранить свойства в колонках таблицы пользователя подходили плохо, т.к. для каждого пользователя набор атрибутов свой и количество их огромно и постоянно увеличивается по мере развития проекта. Кроме того, мало эти данные записать, нужно еще эти данные удобно проанализировать.
Современные парадигмы разработки ПО всегда являются итерационными. В методологии Scrum такими итерациями являются спринты, в классической версии Scrum каждый спринт начинается с планирования и завершается демо, ретроспективой и «инженерным» днем. Оценка успешности каждого спринта – это довольно субъективная вещь, формализация которой важна и может быть реализована с помощью следующих стандартных действий:
• Определить достижение целей спринта;
• Оценить краткосрочное влияние разработки ПО на удовлетворённость заказчиков и пользователей в развитии продуктов;
• Провести формализацию и учет параметров спринтов.
Определять для каждого спринта собственные цели несложно: необходимо сопрягать довольно точно измеряемые и формулируемые сущности: бизнес-цели разрабатываемых продуктов, приоритет функциональных и нефункциональных требований в беклогах различного уровня, логическую очередность этапов развития софтверных проектов.
Поговорим об управлении глобальным состоянием с помощью Redux. Расскажу, как наиболее продуктивно связать Elementary — архитектурный пакет для Flutter — и Redux.
Совсем скоро, 3 и 4 сентября в VK пройдёт новый Weekend Offer. В нём будет участвовать и наша команда — мы создаём суперприложение на основе почтового клиента Mail.ru. Хотим подробнее рассказать об этом проекте и о задачах, которые нужно будет решать нашим будущим коллегам :)
Год назад бизнес поставил нам задачу: интегрировать в приложение несколько других сервисов компании, чтобы пользователи могли одним нажатием переходить из сервиса в сервис. Ну, вы и сами знаете, для чего нужны суперы — для развития экосистемы и конкретных продуктов. И спустя два месяца мы запустили в эксплуатацию суперприложение на основе почтового клиента Mail.Ru.
В феврале 2021 года ВкусВилл запустил проект «Сгоряча» по доставке блюд из более 50 «dark kitchen» в Москве, Санкт-Петербурге, Волгограде, Чебоксарах и других городах. Сейчас через приложение можно заказать также еду из ресторанов-партнеров. Блюда бесплатно доставляют собственные курьеры сети в среднем за 1-1,5 часа после оформления заказа.
Доставок из «dark kitchen» не так много — всего 3-4 агрегатора доставляют блюда. Это нетривиальная задача: нужно наладить работу курьеров, разработать приложения для партнеров, курьеров и клиентов, подключить партнеров и обучить их пользоваться доставкой, продумать архитектуру на случаи загрузки — много всего.
За создание и развитие мобильных и веб-сервисов ВкусВилл отвечает команда «Фулстек» (направление ГК «Автомакон», специализирующееся на мобильной и веб-разработке). Подробнее расскажем, как мы сделали 3 небольших доработки для сервиса по доставке блюд из ресторанов, как он работает и с какими сложностями нам пришлось столкнуться в процессе.
Привет, я Татьяна Родионова, Android-разработчица в Lamoda. Как-то раз передо мной появилась задача упростить ревью пул-реквестов с помощью Danger. Я решила добавить автоматическую проверку код стайла, используя ktlint. Но оказалось, что Danger не поддерживает такое решение, поэтому я добавила такую проверку сама :)
Моя статья поможет разобраться в том, как настроить Danger и как заставить его выполнять задачи немного сложнее тех, которые есть в официальном туториале.
Всем привет!
Приглашаем всех мобильных разработчиков и просто неравнодушных ребят на совместный митап Rambler&Co и Okko.
Выйдем на связь 8 сентября с 19:00 до 21:00 в уже привычном смешанном формате – в онлайне и офлайне.
Эта статья для тех, кто стоит перед выбором реализации собственного решения для обработки deep links в Android приложении или использования, того что предлагает Google в своем Navigation Component.
Недавно, на одном из небольших проектов передо мной встала задача открытия различных экранов приложения из вне через deep links, захотелось попробовать и понять, что такого для deep linking смогли придумать ребята из Google, учитывая как красиво они об этом рассказывают в своих презентациях и документации.
Далее я опишу недостатки, с которыми пришлось столкнуться, и почему я больше не буду использовать deep linking из Navigation Component.