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

Разработка мобильных приложений *
Android, iOS, Windows Phone и прочие
Мобильная разработка за неделю #594 (14 — 20 июля)

В новом выпуске понимаем и улучшаем производительность SwiftUI, решаем проблему «деградации» YouTube на Android, определяем потолок в разработке, разбираем большую ложь чистой архитектуры, смотрим на рост цифровой веры и многое другое. Заходите!
Так ли хорош ChatGPT для поиска? Проверяем на метриках

Привет, Хабр. Я всё тот же разработчик, приложения для поиска и сравнения цен по маркетплейсам, интернет‑магазинам и классифайдам.
В прошлый раз я рассказал, как привлек бесплатно несколько тысяч новых пользователей. Но просто привлечь пользователей это одно, а вот сделать так, чтобы они регулярно начали пользоваться приложением и рекомендовали его другим — это задача со звездочкой. Расскажу в этой статье, как я ее решал.
Как мы переписали мобильное приложение с React Native на Flutter

React Native не справился. Flutter — как глоток свежего воздуха.
Рассказываем, как наша команда переписала большое приложение (60+ экранов, оффлайн режим, карта, камера) на Flutter, с чем пришлось повозиться и почему теперь не жалеем.
Кейс каршеринга по пересборке real-time поиска машин, который принёс x3 выручки на поездку

Иногда продуктовая фича живёт в приложении «для галочки». Пользователи вроде бы ею пользуются, команда её не развивает, а аналитики не могут толком оценить влияние на метрики. Так было с нашим старым механизмом поиска ближайших машин в каршеринге — «Радаром». Он просто пинговал координаты и сообщал, когда рядом появлялась машина. Никакой логики приоритизации, никаких фильтров, никакого резерва — сырая идея без развития.
В статье рассказываем, как мы заново осмыслили и пересобрали фичу:
• продакт Настя Голованова — о том, как мы нашли value, перезапустили механику и успели в сроки размещения наружной рекламы;
• разработчик Михаил Ефанов — про то, как превратить монолит в стабильную архитектуру.
Полезно будет всем, кто работает на стыке развитии продукта и инженерии: от старта фичи до релиза и плана развитии.
Как сделать мобильное приложение в 2025 году за 2 недели

Ни для кого не секрет что смартфоны в наше время это вещь очень нужная и необходимая. Сейчас у каждого популярного сервиса есть своё мобильное приложение. Мобильное приложение полезно не только пользователю, но ещё и компании которая его предоставляет, ведь благодаря этому приложению можно увеличить охваты.
Вот и я решил создать приложение для уже существующего образовательного портала RushENGL, ведь сайт то безусловно хорош, но не всем пользователям с телефона удобно им пользоваться, да и хотелось бы видеть его в списке приложений для быстрого доступа.
В этой статье разберём как создать своё мобильное приложение для уже имеющегося сайта без лишних морок!
async let vs Task group

В Swift для структурированной конкуренции используются async let
и группы задач (task group). Хотя обе конструкции позволяют запускать параллельные операции, они по-разному управляют жизненным циклом задач. Сегодня мы разберём эти различия на примерах.
Стартап за 100 дней. Неделя вторая. Проектируем онбординг приложения

Привет, я Дима и хочу сделать полноценный стартап за 100 дней, а именно нескучное приложение для похудения. У меня за плечами опыт создания приложения с 20 МЛН установок и номинацией «Приложение года» от Google. Смогу ли я повторить успех — покажет время, а пока буду делиться процессом создания, инструментами и походами, которые сам использую.
Мобильная разработка за неделю #593 (7 — 13 июля)

В этом дайджесте снова про фоновую работу в Android и обрезку Text в SwiftUI, про опыт внедрения Kotlin Multiplatform и как сделать любую задачу интересной, про акторы, структуры, программы раннего доступа, роботов Hugging Face и многое другое. Заходите!
Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#18)

Продолжаю изучать различные UI/UX/CX кейсы в мобильных приложениях, веб-сайтах и в реальном мире. Дизайнерам и менеджерам по продукту, чтобы вдохновиться и добавить в заметки.
Под катом: Retro, Revolut, Uber, Glovo.
Функциональный стиль: объясняю как другу

«Функциональное программирование», «Immutable значения», «Pure функции».
Тоже слышал эти умные слова?
И ты такой: «Что? Можно просто for написать?»
Спокойно. Сейчас все разложим по полочкам. Даже если ты пишешь var a = 1 и гордишься этим — ты свой. Погнали.
Duit: как создать эффективный BDUI фреймворк, не привлекая внимания санитаров

Привет, Хабр! Меня зовут Никита Синявин, я ведущий Flutter-разработчик в компании BetBoom, а сегодня еще и гостевой автор Friflex. В этой статье я расскажу о своем Opus Magnum — создании эффективного Backend-Driven UI под названием Duit.
Swift concurrency. Executors, Actors и их связь с потоками

В данной части из серии статей мы погрузимся чуть глубже в недра Swift Concurrency. Как определяется поток, на котором будет выполняться Task? Почему в рамках одной Task поток может меняться? Что такое Executor и на какие типы он делится? За что отвечает TaskExecutor, а за что SerialExecutor? Как определить текущий Executor по коду? Как использовать свой самописный Executor? В этой статье ответим на эти (и многие другие) вопросы.
Ближайшие события
Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 2

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

В сфере IT есть сильное профессиональное искажение. Айтишникам кажется, что продукт, который они продают это код. Но в головах их клиентов мир выглядит иначе. Заказчики покупают у айтишников не репозиторий на гитхабе или докер-образ, поднятый на VPS-ке. Они покупают решение своих бизнес-задач. Причём, заметьте, что в этой покупке весь риск лежит на стороне того, кто платит за работу. Потому что гарантия айтишника, что он качественно справится со своей задачей вовсе не гарантирует клиенту, что его бюджет будет потрачен эффективно и его проблема будет решена. Решена именно как бизнес-задача, а не как какая-то другая. То есть, что на выходе от всех затеянных телодвижений будет получен ощутимый положительный финансовый результат.
И этот риск уменьшается только одним способом - коммуникацией. Поэтому я много лет повторяю мысль про то, что продажи и коммуникации это по сути одно и тоже. Продажа это коммуникация. Коммуникация это продажа. Даже, если вы просто разработчик в какой-то компании и общаетесь со вселенной через тикеты в джире и живёте в мире код-ревью и комитов. Возможно, вам кажется, что вы коммуницируете лишь с кодом и абстракциями... Нет, вы коммуницируете с людьми. Кто-то у вас покупает решение каких-то задач, даже, если эти задачи сформулированы техническим языком.
В мире IT-услуг, будь то фриланс или студийная разработка приложений, ключевым моментом является не только уровень технических навыков, но и коммуникационные способности. Как опытный менеджер по продажам SaaS-продуктов и разработки программного обеспечения, я хочу поделиться некоторыми рекомендациями о том, как успешно продавать свои услуги и становиться более запоминающимся и востребованным профессионалом.
Я написал свой VPN-клиент для Android. Зачем, если их сотни, и что скрывается под капотом?

Каждый раз, нажимая кнопку «Connect» в очередном VPN-приложении, я ловил себя на мысли: а что там, под капотом? Как эта магия на самом деле работает на уровне Android? Вокруг сотни готовых решений, но простое пользовательское любопытство переросло в профессиональное: мне захотелось не просто использовать, а понять. Понять, какие подводные камни скрывает VpnService, как реализовать весь цикл от авторизации до поднятия защищённого туннеля и что на этом пути может пойти не так.
Эта статья — мой личный "бортовой журнал". Я не претендую на создание самого безопасного решения, это скорее история о пути, граблях и открытиях для тех, кто тоже решит заглянуть под капот VPN-технологий на Android.
Так родилась идея этого проекта — создать свой, пусть и простой, VPN-клиент. Это не попытка сделать коммерческий продукт, а скорее исследовательское погружение, мой личный "челлендж" и способ разложить всё по полочкам.
Lokilizer — бесплатный инструмент для перевода приложений с двух языков на любые другие

Наш кейс: в приложении есть русский (наш нативный) и английский языки. Надо быстро и просто добавлять другие (по запросам от клиентов). В файлах с переводами был хаос: дублирование строк, конкатенация вместо плейсхолдеров, разный порядок строк в файлах переводов для ru/en, висячие пробелы и многое другое.
Я решил написать вспомогательный инструмент, который помог решить все эти проблемы. Сейчас мы добавляем новый язык буквально за 40 минут и 2$. Все получилось настолько хорошо, что решил причесать и выложить в open-source
Главная фишка: перевод на новые языки делается сразу с 2х языков (в нашем случае с ru и en) что на практике делает его супер-качественным
Функциональное программирование в Android. Теория категорий и DI

Кульминация цикла о функциональщине в Android! Сегодня изучаем чистые функции — ещё один важный принцип функционального программирования.
Учтём контекст и познакомимся с сопутствующими терминами, раскрывающими суть чистых функций. А ещё обсудим место концепции Dependencies Injection в функциональном программировании. В общем, вперёд за новыми знаниями!
Как Android-разработчик в iOS погружался: мой опыт внедрения Kotlin Multiplatform

Привет, Хабр! Меня зовут Артем Клименко, я Lead Android-разработчик в МТС Web Services, занимаюсь продуктом Membrana Kids.
Продукт создавали нативно на каждую платформу, без пересечения кода. В начале года у нас ушло несколько iOS-разработчиков, из-за чего замедлилась поставка новых функций на обеих платформах. Мы решили, что это повод внедрить наконец кроссплатформенную разработку и выровнять поставку фич на обеих платформах. В этом материале расскажу, почему мы остановились на KMP, как погружались в iOS c опытом в Android и как прошло внедрение этого фреймворка. Спойлер: быстрее и проще, чем мы думали.
Часть 2. GoForm — как не страдать с формами во Flutter
Устали от бесконечных TextEditingController и GlobalKey? Замучили проблемы с асинхронной валидацией? Добро пожаловать в мир GoForm — библиотеки, которая наконец-то превратит создание форм из пытки в удовольствие!
В этой части мы разберём, как управлять фокусом между полями, отслеживать валидность и изменения значений, а также покажем, как реализовать удобный ввод номера телефона с выбором страны и динамической маской — всё на живых примерах и в пару строк кода.
Вклад авторов
InlyIT 3304.2RoboForm 2017.8alizar 1918.6PapaBubaDiop 1549.0phillennium 1272.0YourDestiny 1011.0InkOut 801.0redmadrobot 798.0Leono 778.0marks 755.0