Обновить
102.43

Android *

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

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

Планировщики задач для Android: 10 приложений для командной работы и личных дел

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

Привет, Хабр! Меня зовут Майя, я — контент-менеджер и опять пишу обзор про приложения в сфере тайм-менеджмента.

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

Читать далее

Новости

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

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

Последний дайджест в этому году! От неработающей к тестируемой навигации, тепловизор для разработчика, развитие Swift SDK для Android, инженерия уверенности и многое другое. С наступающим и хороших вам приложений! До встречи в новом году!

🎄Читать

n8n — масштабируем получение SMS и уведомлений с нескольких (десятков) SIM-карт одновременно

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

TL;DR Автор в прошлой статье настроил Telegram-чат, куда несколько смартфонов скидывают пуши с помощью MacroDroid и/или Tasker. Проблема в том, что смартфоны брали на себя слишком много работы. Что, если они будут тонкими клиентами, которые шлют сырые данные на сервер, где уже происходит вся обработка и рассылка? Автор делится workflow и конфигурацией для n8n, которые позволяют это реализовать в режиме "Быстрого старта".

Читать далее

Настройка смартфонов для пересылки SMS и уведомлений в Telegram

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

TL;DR Автор настроил Telegram-чат, куда несколько смартфонов скидывают пуши с помощью MacroDroid и/или Tasker. Пособие, как настроить это максимально просто, частично поберечь батарею и научить это работать в фоновом режиме. Как побочный эффект, вы автоматически таким образом нау́читесь "шарить" симки, карты и учётки себе и другим (только никому!).

Читать далее

Blackview Xplore 2 Projector — броневик с аккумулятором 20Ач и… проектором

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

Вообще, в моём блоге довольно редко выходят спонсорские материалы. Обычно я соглашаюсь только если гаджет действительно представляет для меня гиковский интерес, и сегодня как раз тот самый случай. Компания Blackview недавно представила свой новый флагманский броне-смартфон из линейки Xplore, который получил не только топовый дисплей и мощное железо, но и... проектор, а также аккумулятор емкостью аж в 20Ач. После трёх недель активного использования в качестве основного устройства, я решил написать свои впечатления. Если вам интересно узнать, что из себя представляет этот диковинный гаджет - прошу под кат!

Читать далее

Почему я перешел на Dagger Components (вместо Dagger Android)

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

Всем привет, меня зовут Анатолий Спитченко, я Android-разработчик в ПСБ. В этой статье расскажу про свои эксперименты с Dagger. Наткнувшись в проекте на огромный модуль Application (11,5 Мб), я стал искать альтернативы обертке Dagger Android. Поэкспериментировал с продвигаемым Google Dagger Hilt, а также с более старым подходом — Dagger Components. Последний, как ни странно, позволяет немного сократить Application и в целом имеет больше плюсов, чем минусов. Подробности под катом.

Читать далее

Perfetto в Android-разработке: когда профайлера уже недостаточно

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

Perfetto показывает те проблемы с производительностью приложения, которые другой профайлер просто не заметит. И не важно, занят ли процессор системными задачами, когда поток готов работать, или GC блокирует UI на 50 миллисекунд — Perfetto всё подсветит.

Ещё не знаете об этом крутейшем инструменте? Тогда эта статья для вас. Привет! Меня зовут Андрей Гришанов. Расскажу вам, что такое Perfetto и как использовать его максимально эффективно.

Познакомиться с топовым профайлером

Тепловизор для разработчика: подсвечиваем рекомпозиции прямо в коде

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

Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. В прошлой статье я научил Jetpack Compose показывать рекомпозиции в реальном времени, но это был скорее учебный стенд: куча модификаторов, обёрток и примеры, которые нужно готовить вручную.

Я хотел чего‑то более полезного: чтобы IDE сама показывала, какие composable‑функции перерисовываются прямо сейчас, а какие скипаются и какие параметры реально меняются. Нажал Run — и редактор превратился в живую тепловую карту UI.

Ради этого пришлось сделать то, чего нормальные люди обычно избегают: залезть под капот Kotlin Compiler Plugin и научиться внедрять код в промежуточное представление на этапе компиляции, разобраться в битовых масках Compose и поднять TCP‑сервер внутри IntelliJ, чтобы запущенное приложение могло стучаться прямо в IDE.

Так появился Riflesso — плагин, который переносит идею Layout Inspector прямо в редактор кода и делает Compose прозрачным. В этой статье я разберу его архитектуру и покажу, как компилятор, клиентская библиотека и плагин IDE собираются в один инструмент.

Читать далее

Как я свой мессенджер делал… или «вы все ещё думаете ставить ли MAX»?

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

Как говорится, когда коту делать нечего - у него яйца блестящие...

В 2025 участились случаи блокировки ...всего интернета?... , в частности популярных мессенджеров, таких как WhatsApp, Telegram, коими я и моя семья привычно пользовались..

Споры по поводу нашумевшего мессенджера MAX не утихают и по сей день...

По привычке, если хочешь что-то сделать хорошо - сделай сам, так решил создать свой мессенджер, с блэкджеком и проститутками, с шифрованным трафиком, не видимым для DPI, голосовыми вызовами, без привязки к номеру телефона и вообще к чему либо, и интерфейсом таким , каким его хотел видеть именно я! ;)

Естественно, разработка будет под Android. Никаких санкционных айфонов в этом рассказе!

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

Дальше была разработка самой технической части: список контактов, отправка сообщений.
Вау, это заработало!

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

Читать далее

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

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

В новом дайджесте последствия уменьшения приложений и новый шаг в передаче зависимостей Swift, улучшение доступности в Android-приложениях и перформанс, лёгкий и быстрый DI-контейнер, Offline-First приложения, ускорение загрузки экрана, больше рекламы в App Store и многое другое. Заходите!

Читать далее

От ощущений к цифрам: как мы внедрили метрики перформанса в андроид приложение

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

Всем привет! Меня зовут Тимур, я платформенный Android-разработчик с опытом 5+ лет в ритейле и e-com.

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

Присаживайтесь, наливайте чай/кофе — поехали.

Читать далее

Как мы перевернули подход к мобильным интерфейсам с Backend Driven UI

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

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

В WCMA (Whoosh Control Maintenance App, писали о нем в предыдущей статье), нашем внутреннем приложении для управления флотом, мы столкнулись с этой проблемой в полной мере. Напомню, в этом приложении работает наша сервисная команда, через него мы обслуживаем самокаты и велосипеды в городе, следим за их зарядом, переставляем на спросовые парковки, а также восстанавливаем и чиним.  

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

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

Меня зовут Игорь Волынский, я backend-разработчик в команде WCMA Whoosh. И сегодня я расскажу, как мы решили эту проблему: построили централизованную и гибкую систему управления статусами, добавили условные переводы с хендлерами для проверки бизнес-правил и реализовали динамические сценарии для гибкого формирования UI. Спойлер: теперь наши механики и менеджеры видят только те действия, которые им реально доступны, а бэкенд гарантирует целостность данных на уровне системы.

Читать про формирование UI через бэкенд

Скандалы, интриги, продуктовые метрики: что нам дало ускорение загрузки экрана в приложении hh

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

Привет! Меня зовут Саша Тотилас и я руковожу командой разработки в hh.ru. Хочу поделиться с Хабром результатами A/B-эксперимента: при оптимизации одного из экранов нашего приложения мы ускорили загрузку контента и выяснили, как это влияет на продуктовые метрики, а также собрали интересные инсайты.

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

Читать далее

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

Roborazzi для Jetpack Compose: как я автоматизировал проверку UI

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

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

Читать далее

Сдвиг камеры в 2ГИС MSDK на маркер при разных углах поворота камеры

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

Как в 2ГИС/Яндекс.Картах/Google Maps аккуратно смещать камеру и маркер в “сцену” при нажатии, даже когда карта повернута: определить видимую область, проверить положение точки, вычислить сцену с учётом паддингов, при необходимости сдвинуть или центрировать маркер.

С математическими расчетами и картинками.

Узнать секрет сдвига маркера 🚀

Мобильная разработка за неделю #612 (8 — 14 декабря)

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

В этом выпуске особенности Struct в Swift и RemoteCompose в Android, знакомство с Frida и новые умные очки Google, сломанное ценообразование приложений с подпиской, навигация на SwiftUI, создание анимированных полос и многое другое. Заходите!

Читать далее

librats: Выпуск версии 0.5.x. Ускорение поиска пиров, алгоритм spider, поддержка JavaScript, Python и многое другое

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

Привет! Работа над ядром поисковика rats-search продолжается. Новая версия библиотеки librats (v0.5.3) приносит важные архитектурные улучшения для построения распределенных сетей в условиях NAT и блокировок.

Ключевые изменения:

Унифицированный API (FFI): Завершена интеграция с Node.js. В отличие от фрагментированных реализаций libp2p, librats предоставляет идентичный набор функций для C++, Python, Node.js и Android через FFI.

Эффективный DHT:

Реализован алгоритм Spider для прибегания с сбора announce.

Добавлена поддержка branch-factor и маршрутизации на основе задержек (RTT-routing).

Персистентность: Routing-таблицы сохраняются при перезапуске, что критически важно для связности сети в сложных сетевых условиях.

BitTorrent: Значительный рефакторинг и оптимизация модуля.

Платформы: Windows (x64), Linux (x64), Android (32/64), macOS (x64).

Читать далее

Как мы использовали Codex, чтобы запустить приложение Sora под Android за 28 дней четырьмя инженерами

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

Это статья из официального блога OpenAI, но подход меня так зацепил, что решил перевести для всех. Я тоже часто переношу веб-приложения на мобилки примерно таким же способом и было очень здорово увидеть такой же подход (архитектура+рабочее_приложение-как-пример) у по сути создателей сильного AI. Пишу про разные похожие интересные вещи тут

В ноябре мы представили миру приложение Sora для Android, предоставив любому пользователю с Android-устройством возможность превращать короткие текстовые промпты в живые видео. В день запуска приложение заняло 1-е место в Play Store. За первые 24 часа пользователи Android сгенерировали более миллиона видеороликов.

За этим запуском стоит история: первая версия продакшн-приложения Sora для Android была создана всего за 28 дней благодаря тому же агенту, который доступен любой команде или разработчику – Codex.

С 8 октября по 5 ноября 2025 года небольшая команда инженеров, работая бок о бок с Codex и израсходовав примерно 5 миллиардов токенов (вау), провела Sora для Android от прототипа до глобального запуска. Несмотря на скорость разработки и масштаб, приложение демонстрирует показатель стабильности (crash-free) 99,9% и архитектуру, которой мы гордимся. Если вам интересно, использовали ли мы какую-то секретную модель – нет, мы использовали раннюю версию модели GPT-5.1-Codex, ту самую, которую любой разработчик или компания могут использовать уже сегодня через CLI, расширение для IDE или веб-приложение.

Читать далее

Создание приложения с меню на Flutter, которое не занимает много памяти

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

Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.

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

Читать далее

Не просто WebView: Строим движок на Flutter для конвертации сайтов в приложения с Server-Driven UI

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

Привет, Хабр.

WebView-приложения — это боль. Тормоза, убогий UX, мгновенный реджект от Apple по пункту 4.2 («Minimum Functionality»). Обычно это просто браузер без адресной строки, за который стыдно брать деньги.

Я решил не делать очередную "обертку", а подойти к задаче инженерно. Моя цель: платформа, где WebView — лишь контентный слот, обернутый в полноценный нативный UI на Flutter.

В этой статье:

Читать далее
1
23 ...

Вклад авторов