#android_development

2026-02-03

Про то, как я Storage Access Framework укрощал, да файлы в хранилище приручал

В начале было приложение. И было это приложение для цифровой подписи. Работало оно просто: подписываешь документы на смартфоне, не думая о каких-либо дополнительных токенах. Все упаковано в телефон — и сертификаты, и библиотеки. Процесс знакомый: авторизовался, загрузил файл, подписал. Но вот однажды пользователи стали жаловаться, что не могут найти ранее подписанные документы. Бывало, пользователь подписал файл, долго к нему не возвращался, а спустя время уже не смог его отыскать. Переустановил приложение или авторизовался с другого устройства, и все файлы как в воду канули. Меня зовут Георгий Левченко, я Android-разработчик в ПСБ. Начал я искать источник бед пользовательских. Оказалось, виной всему было то, что все файлы хранились в кэш-директории приложения. Понял я: чтобы файлы не пропадали, им нужен менеджмент для файлов. Отыскался у Android для таких целей готовый инструмент — Storage Access Framework (SAF), он служит для доступа к файлам через стандартный интерфейс без управления разрешениями вручную. Поведаю под катом, как я решал с его помощью эту задачу.

habr.com/ru/companies/psb/arti

#storage_access_framework #android #android_development #разработка_приложений #кэширование #кэширование_данных

2025-12-31

Решил сделать себе смартфон на Линукс. Linux phone Xiaomi Poco X3 NFC на Ubuntu Touch по шагам

Времена сейчас тяжелые, я как пользователь iPhone, давно чувствую себя неполноценным пользователем смартфона в нашей юрисдикции. А с недавнего времени возглавил команду линуксоидов и потянуло меня на всё линуксовое. Решил, так скажем, стать пингвином. Все началось с того, что выкинул свой макбук, которым пользовался с 2015 года, купил хороший ThinkPad на Ryzen 7 и накатил туда Linux Mint 22.2 и, знаете что, радости моей нет предела, я прям кайфую и пропитываюсь духом опенсорса. Все таки, когда клиентам показываешь преимущества миграции на линукс с мака, есть нотка недоверия к таким ребятам. И для пущей линуксовости, уже второй месяц подумываю пересесть на линуксфон, а еще все это недоверие к корпоратам, подогревает мой интерес. В общем если с тем, как накатить Минт на ноут в целом сложностей нет, то с линуксфоном, не все так просто… погнали разбираться

habr.com/ru/articles/982184/

#linux #ubuntu_touch #android #android_development #установка_linux #установка_ubuntu_touch #телефон #смартфон #убунту #тач

2025-12-09

Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений

Привет, Хабр! Меня зовут Максим Сазонов, я android-разработчик в ПСБ. Сегодня предлагаю разобрать путь создания кастомного тулбара от первой кривой реализации до оптимизированного решения. И главная проблема, которую надо решить при создании этого компонента это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle. В статье я расскажу, как я решил этот вопрос.

habr.com/ru/companies/psb/arti

#kotlin #android #android_development #jetpack_compose #jetpack #toolbar #custom_toolbar

2025-11-25

Live Updates на Android: где макеты врут, a SDK ставит границы

Весной 2025 года Google представила Live Updates, аналог Live Activity в iOS. Мы быстро запушили продактов — «нам такое надо!» — и потащили фичу в Android-приложение Додо Пиццы. Но всё оказалось не так просто — мы столкнулись с неполной документацией, расхождениями представлений дизайнеров Google и разработчиков этого SDK, и не только. В общем, запасайтесь попкорном. Сегодня расскажем обо всех нюансах в реализации и тестировании Live Updates.

habr.com/ru/companies/dododev/

#android #android_development #live_updates #live_activities #мобильная_разработка #мобильная_разработка_android #google #google_io

2025-10-21

Google Регистрация в Android на kotlin + jetpack compose

🚀 Хотите создать регистрацию в стиле Google для своего Android-приложения? 🚀 Забудьте о скучных формах! Погрузитесь в мир плавной анимации, интуитивного дизайна и надежной безопасности – всё это с помощью Kotlin и Jetpack Compose. ✨ Что вас ждет: Пошаговый гайд: От первых строк кода до готового результата – разберемся вместе. Рабочий код: Не просто теория, а готовые решения для вашего проекта. Комментарии эксперта: Поймете каждый шаг и сможете адаптировать код под свои нужды. Секреты профессионалов: Узнаете, как сделать регистрацию не только функциональной, но и привлекательной. 💪 Не упустите шанс прокачать свое приложение! 💪

habr.com/ru/articles/958746/

#android_development #android #jetpack_compose #kotlin #google_api

2025-10-20

Что такое ANR и как с ним работать правильно

ANR — это не просто “зависание”, а молчаливый краш, который напрямую бьёт по удержанию пользователей. В статье разбираю, как работает механизм ANR, какие ошибки его вызывают, как анализировать traces.txt, какие библиотеки помогают отслеживать блокировки (ANR-WatchDog, ANR-Spy, Firebase Crashlytics), и как построить процессы, чтобы QA-команда научилась ловить их ещё до релиза.

habr.com/ru/articles/958278/

#anr #watchdog #kotlin #java #android #mobile_development #android_development #qa #mobile_qa

2025-10-14

Android для новичков: как не наломать дров с корутинами и какие привычки оставить в прошлом

Когда только начинаешь разрабатывать под Android, самые неприятные баги появляются не из-за опечаток, а из-за систематических ошибок. Хардкод строк и цветов, корутины, которые живут сами по себе, попытки писать Compose по старинке, как старые view — всё это превращается в технический долг, который мешает развивать продукт. Знание этих ошибок помогает писать более надёжный код, который не ломается при локализации, смене темы или добавлении новых экранов. К тому же многие из этих проблем часто всплывают на собеседованиях. В статье покажу, почему ошибки превращаются в реальные проблемы, как их обнаружить и исправить. Исправить ошибки в Android-разработке

habr.com/ru/companies/netology

#android_разработка #программирование_на_android #начинающие_разработчики #новички_в_android #советы_начинающим #android_development #корутины #хардкод #composable #ошибки_новичков

2025-09-18

Андроид всё еще не готов к RAW-видео

Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое “смогло”. Но не стоит спешить, друзья! Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.

habr.com/ru/articles/947578/

#mcpro24fps #raw #android #android_apps #android_development #мобильное_приложение #видео #мобильная_видеография

2025-08-21

Как RecyclerView создает магию анимаций: архитектура ItemAnimator под капотом

RecyclerView умеет превращать обычные операции с данными в плавные анимации. Когда вы добавляете элемент в список, остальные элементы плавно расступаются. При удалении — схлопываются. Эта магия происходит благодаря ItemAnimator — механизму, который я сегодня разберу до последнего винтика. В этой статье мы погрузимся в архитектуру системы анимаций RecyclerView, проследим путь от вызова notifyItemInserted() до финальной анимации на экране.

habr.com/ru/articles/939594/

#android #recyclerview #animation #viewholder #layoutmanager #android_animation #itemanimator #view_animation #android_ui #android_development

2025-08-02

MAX: технический разбор неофициального клиента

Мессенджер MAX (ru.oneme.app) — одно из приложений, которое в последнее время активно продвигается как альтернатива известным платформам. Он позиционируется как современный, быстрый и безопасный инструмент для общения, с поддержкой звонков, каналов и ботов. Но что скрывается под капотом? В этой статье — глубокий технический анализ APK-файла, включая структуру, зависимости, разрешения и архитектурные особенности.

habr.com/ru/articles/933378/

#научнопопулярное #android #android_development #android_sdk #android_studio

2025-07-29

Бизнес требует стабильной работы мобильного приложения у всех пользователей. Что делать?

Как загружать большие объемы данных? Часть 1. Привет, друзья! Наша команда более 10 лет занимается вопросами эффективной передачи данных на мобильные устройства. Мы исследовали разные варианты: одни оказались слишком медленными, другие приводили к переполнению памяти на мобильном устройстве. Хотим рассказать, как мы в команде « Форсайт. Мобильная платформа» сделали синхронизацию больших объемов данных, чтобы это работало, в том числе, на ТСД (терминал сбора данных). Для экономии батареи ТСД специально снабжают слабыми процессорами. Весь подбор инструментов и алгоритмов мы уже апробировали в продукте «Форсайт. Мобильная платформа» (ФМП). Специфичные условия для мобильного приложения начнем РАЗБИРАТЬ С КРЫШИ, так будет проще подобраться к существу вопроса. В среднем, отличие общедоступных приложений от бизнес-приложений – в объеме потребляемых данных. У бизнес-приложений объем данных значительно больше. Но, как водится, ожидание бизнес-пользователей от приложения точно такие же, как и у всех: приложение должно работать не просто быстро, а моментально. А это значит, что нужно найти особые техники по ускоренной передаче данных. При подборе технологий для транспорта данных нам хотелось получить: А) Стабильный механизм передачи данных. Б) Самый быстрый/производительный протокол из возможных. Поскольку мы производим спецшину по транспорту данных, для нас это означает, что мобильный пользователь будет обращаться в наш инструмент за «чемоданом» данных, и мы должны как можно быстрее передать ему этот «чемодан» целиком. У разработчиков возникает вопрос -- насколько большой может быть «чемодан»? Насколько будет нескромен кейс, который нужно будет тащить? За ориентир мы взяли ½ миллиона записей табличных данных.

habr.com/ru/companies/fsight/a

#мобильная_разработка #android_development #Форсайт_мобильная_платформа #форсайт #многопоточность #загрузка_больших_объёмов_данных #Стабильный_механизм_передачи_данных #Скоростная_загрузка

2025-07-29

Под капотом Android: как создаются, управляются и восстанавливаются процессы приложений в системе

Эта статья родилась из практической задачи — понять, как устроен Android в общем и целом, как он сохраняет и восстанавливает состояния приложения (помимо БД и файлов) при внезапном завершении процесса, как управляет процессами. Я разберу ключевые системные компоненты (Zygote, SystemServer, AMS, Binder) и процесс восстановления состояния через Bundle. Привет, Хабр! Я Михаил Богатиков, Android‑разработчик в ПСБ. На одном из собеседований мне задали вопрос, про восстановление приложения после смерти, на который я не смог ответить. Мне стало интересно и я решил изучить этот вопрос и в результате появилась эта статья.

habr.com/ru/companies/psb/arti

#мобильная_разработка #android #android_development #разработка_под_android #разработка_под_андроид

2025-07-24

Mobile System Design. Проектируем новостную ленту

Элементы System Design уже прочно вошли в процесс собеседований. Однако в мобильной разработке довольно часто возникает недопонимание что же все-таки необходимо продемонстрировать чтобы получить заветный офер. В этой статье я разберу один из кейсов, который может встретиться на реальном собеседовании и кроме этого покажу примерный сценарий такого интервью. Данная статья будет интересна мобильным разработчикам, как Android, так и iOS. Сам формат System Design Interview я разбирал в предыдущей статье. Здесь же мы сконцентрируемся на практике. Итак, задача: спроектировать новостную ленту.

habr.com/ru/articles/930898/

#android_development #ios_development #system_design_интервью #собеседования #bigtech #подготовка_к_собеседованию

2025-07-09

Я написал свой VPN-клиент для Android. Зачем, если их сотни, и что скрывается под капотом?

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

habr.com/ru/articles/926150/

#android #vpn #vpnсервис #wireguard #мобильная_разработка #мобильные_приложения #мобильное_приложение #kotlin #android_development #android_studio

2025-06-23

Лаборатория в смартфоне: изучаем эффект Доплера на палочках в Android

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

habr.com/ru/articles/920738/

#Лаборатория_в_смартфоне #agalilov #эффект_доплера #физика #физика_в_смартфоне #android #android_development #научнопопулярное #образование

2025-05-27

Создание кастомного тултипа Jetpack Compose

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

habr.com/ru/companies/wildberr

#tooltip #тултип #jetpack_compose #android #android_development #tutorial #туториал #tooltips #тултипы #kotlin

2025-05-13

Мастерство фокусов на Compose 2: как работает запрос фокуса

Привет! Меня зовут Костя, я Android-разработчик в онлайн-кинотеатре PREMIER. В процессе работы над проектом PREMIER для AndroidTV я столкнулся с тем, что в Jetpack Compose механизм фокусов — достаточно сложная и неочевидная тема. А информации в интернете об этом очень мало, особенно о специфичных сценариев вроде ТВ-приложений или устройств без сенсорного ввода. Поэтому я решил разобрать тему фокусов в Compose максимально подробно, чтобы помочь разработчикам лучше понять этот механизм и избежать типичных ошибок. В первой статье на эту тему мы уже разобрали базовую структуру фокусировки в Compose. Теперь пришло время углубиться в технические детали: что именно происходит, когда вызывается requestFocus() , как Compose выбирает элемент для фокусировки и какие изменения были внесены в Compose 1.8, чтобы улучшить этот процесс. Если вы работаете с приложениями под Android TV, кастомными компонентами или просто хотите лучше понимать, как работает система фокусов, эта статья для вас.

habr.com/ru/companies/habr_rut

#android_tv #androidtv #compose #jetpack_compose #focus #android_development #android

2025-04-30

Халява приходит в программирование

Недавно прогремел пост Артура Думчева (@arturdumchev), как халява якобы уходит из программирования. Можете ознакомиться с ним, чтиво достойное. Особенно комментарии. У меня сегодня день рождения: 39 лет. С 2003 года я работаю разработчиком, и сейчас делаю кое-что для ИИ. Интуиция подсказывает, что халява только начинается , мои чюваки. Сейчас — лучшее время быть разработчиком. Давайте начнем с точно того же определения, как было у Артёма: «для меня халява — это гарантированный результат за вложенные усилия. Логика повествования требует такого определения, дальше всё будет ясно». А дальше ясно, что из неверно поставленного условия может следовать что угодно. Читать далее!

habr.com/ru/companies/bar/arti

#бекенд #мобильная_разработка #android_development #ios_development #llm #вайбкодинг #промптинжиниринг #ответственность #архитектура #computer_science

2025-04-29

Мастерство фокусов на Compose

Привет! Меня зовут Костя, я Android-разработчик в онлайн-кинотеатре PREMIER. Среди прочего у нас есть приложение для Android TV. Работая над ним, я столкнулся с тем, что система фокусов в Jetpack Compose устроена сложнее, чем кажется на первый взгляд. Поскольку для ТВ-приложений и устройств без сенсорного управления работа с фокусом играет ключевую роль в навигации, мне понадобилось детально разобраться в теме. Результатами делюсь в статье.

habr.com/ru/companies/habr_rut

#android_tv #androidtv #compose #jetpack_compose #focus #android_development #android

2025-04-27

Халява уходит из программирования

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

habr.com/ru/articles/904754/

#бекенд #мобильная_разработка #android_development #ios_development #llm #вайбкодинг #промптинжиниринг #ответственность #архитектура #computer_science

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst