Обновить
116.85

Android *

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

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

Как превратить телефон в портативную консоль

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

Мы так или иначе уже касались, кажется, всех существующих портативных устройств для игр, от консолей из Китая до прекрасной Nintendo 3DS. 

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

Поэтому сегодня мы расскажем, как лучше всего превратить смартфон в портативную консоль на всех уровнях.

Читать далее

/e/OS 3.2: приватный Android без слежки, который только что стал еще лучше

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

В конце октября 2025-го вышла /e/OS 3.2 — свежая версия мобильной ОС на базе Android 15. Она полностью избавлена от Google-сервисов, телеметрии и скрытых трекеров, но сохраняет полную совместимость с приложениями. Проект основал Гаэль Дюваль, создатель Mandrake Linux. Он решил, что смартфон должен оставаться удобным, но без скрытой передачи личных данных — все хранится у пользователя и никуда не уходит без его ведома. Давайте посмотрим, что это за ОС и что в ней появилось нового.

Читать далее

Интернет радио, продолжение

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

Всем привет! Приемник интернет-радио, собранный в предыдущей статье Интернет-радио на базе ESP32 и ЦАП UDA1334A , имел некоторые недостатки. А именно: были частые потери сигнала wifi, медленная и глючная работа в целом, случайные перезагрузки. Короче, он перестал меня устраивать и я решил продолжить тему проигрывателя интернет радио, но на базе другой аппаратной платформы.

Читать далее

Пишем свою мобильную ОС с нуля на Rust

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

Почему бы не запустить своё ядро прямо на смартфоне? Без Android, без Linux — только Rust, загрузчик и паяльник. В этой статье расскажу о результатах своего эксперимента, как оживить голое ARM-железо, увидеть первые символы в UART и даже вывести что-нибудь на экран.

Читать далее

Публикация PWA в App Store и Play Store на github actions

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

Понадобилось мне как-то раз сделать из PWA мобильные приложения. Приключение на 20 минут, зашли и вышли - подумал я и пропал на пару месяцев. В статье будет гремучая смесь из Java, C#, NodeJS, Swift, bash, Dockerfile и github actions. Но в результате возможность непрерывно поставлять свежие сборки в магазины приложений.

Погружаемся

Кастомная сериализация с помощью kotlinx.serialization

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

Привет, Хабр! Меня зовут Антон Николаев, я senior android-разработчик в Okko, работаю в команде «Молодость» — занимаюсь мультипрофилем и всем, что связано с детским контентом.

Сегодня расскажу о JSON Schema и как мы используем эту спецификацию на проекте, а также о библиотеке kotlinx.serialization и том, как она упростила нам работу со схемами. Статья будет полезна разработчикам, которые интересуются библиотекой kotlinx.serialization и хотят глубже узнать её устройство. В ней обсудим:

Что такое JSON Schema 

Читать далее

Собираем «тот самый» экран блокировки: без лишних виджетов и с защищенным доступом

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

Меня зовут Светлана Палицына, я старший разработчик в мобильной команде «Лаборатории Касперского». Мы занимаемся разработкой EMM-решения для управления корпоративными телефонами и защиты хранящейся на них корпоративной информации. Защита мобильного начинается с экрана блокировки, и в этой статье расскажу про разные способы оформления этого экрана на Android, предоставляемые классом DevicePolicyManager.

Экран блокировки — своего рода визитная карточка всего мобильного интерфейса. Каждый виджет и UI-элемент тут требует особого внимания, чтобы не перегружать пользователя информацией и обеспечивать защиту корпоративных данных (например, скрывать показ содержимого уведомлений от посторонних, которым аппарат случайно может попасться на глаза). Но главное — важно, чтобы разблокировать его можно было исключительно одобренным корпоративными политиками методом. Многие компании, к примеру, запрещают биометрические методы разблокировки как не самые безопасные. В идеале для бизнеса (и самого пользователя) такой экран должен быть лаконичным, понятным и безопасным. И лучший способ достичь этого идеала — подробная кастомизация!

Читать далее

Как ускорить проверку приложения с помощью Impact-анализа (Часть 2): Unit-тесты

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

Когда проект растёт, а вместе с ним — количество проверок, CI превращается в марафон. Мы в Циан через это прошли: кодовая база растёт, тестов становится всё больше, и каждое изменение начинает тормозить весь пайплайн.

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

Примеры кода будут на JUnit, но подход подходит ко всем проверкам, которые гоняются через Gradle. В конце статьи — рабочий пример на GitHub, который можно адаптировать под себя.

Читать далее

Подстраиваемся под новые требования Google: переходим на 16 KB memory page (гайд для разработчиков React Native)

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

Ну как, вы уже обновили свои приложения для поддержки новых требований Google? Если нет, то эта статья будет вам особенно полезна =) Напомню, что с 1 ноября 2025 года приложения, таргетирующиеся Android 15 и выше, должны поддерживать 16-килобайтные страницы памяти.

Как вы помните по предыдущим статьям, я работаю в МойОфис в команде разработки мобильной версии высоконагруженного корпоративного мессенджера Squadus (бэкенд на Node.js, NestJS и Meteor, а веб-интерфейс на React). Мы уже успешно перестроились на новые стандарты Google, и поэтому могу компетентно рассказать, что именно требуется, как адаптировать под это React Native-приложение и что делать, если используемая библиотека ещё не успела обновиться.

Читать далее

Маленькая RAM vs новые фичи: как мы повышаем детализацию Карт и сохраняем стабильность

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

Яндекс Карты — это не просто приложение для навигации, а один из самых высоконагруженных мобильных сервисов с широкой аудиторией. В центре всех наших сценариев — сама карта, которая уже сегодня не уступает по сложности отдельным игровым движкам. Мы постоянно работаем над тем, чтобы сделать её более удобной для ориентирования, и постепенно идём к высокодетализированным и реалистичным картам будущего: добавляем трёхмерные здания, разметку на дорогах, детализированные развязки и другие городские объекты. 

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

Меня зовут Игорь Зверев, я руководитель группы разработки автонавигации в Яндекс Картах. Сегодня я расскажу, как мы подошли к решению этой задачи: что изменили в процессе разработки, как создали и используем систему RAM‑классов для выпуска требовательных функций и какие технические выводы сделали на этом пути.

Читать далее

Исследуем SharedFlow: emit vs tryEmit, как использовать replay и bufferCapacity

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

Всем привет! На связи Александр Гирев, Mobile Lead в команде ценообразования портала для продавцов в Wildberries. Однажды на собеседовании мы обсуждали с кандидатом кусочек кода, связанный с Kotlin Flow. Кандидату нужно было найти причину бага. И при помощи нейросети или своих глубоких познаний наш визави стал говорить о синхронности и асинхронности emit и tryEmit, которые используются для передачи новой порции данных в SharedFlow.

К сути проблемы его размышления не относились, однако я получил сигнал, что здорово было бы поглубже разобраться, как это работает. В статье разберём разницу между emit() и tryEmit(), для каких случаев подходят эти операторы, а также обсудим влияние параметров replay и bufferCapacity на работу MutableSharedFlow

Читать далее

Хромбук. Ограничение зарядки

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

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

По идее, Хромбуки имеют алгоритм, который ограничивает зарядку аккумулятора на 80%, если устройство работает от сети. Делается это для продления жизни этого самого аккумулятора. 

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

Вот как эту проблему можно решить через флаги. В браузере Хромбука (а это по определению браузер Хром) набираем команду chrome://flags и попадаем в большое меню флагов.

Читать далее

Мобильная разработка за неделю #608 (20 — 26 октября)

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

В новом выпуске 7 способов найти логи и поймать баг на iOS, разбираем «Telega» по винтикам и делаем эффект глюка, очки на Android XR, что ждёт Kotlin Multiplatform разработчика на собесе, реверс обфускации Amazon Kindle Web, удаление Tea и TeaOnHer из App Store и многое другое. Заходите!

Читать далее

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

Наш опыт публикации мобильных приложений. Часть 1: AppStore и Google Play

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

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

Но перед тем как приложение попадёт в руки пользователей, его должны одобрить модераторы App Store и Google Play. И вот тут начинается самое интересное. За последние годы требования стали такими, что даже опытные разработчики получают реджекты по полной программе. 

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

Читать далее

Разбираем «Telega» по винтикам: «бесплатный» сыр только в мышеловке

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

Hack Time, Хабр!

На днях мне на глаза попалось громкое расследование Dmytro Tarasenko (он же iTaysonLab).

Именно он провёл декомпиляцию APK нового приложения "Telega", выявил связи с инфраструктурой VK, Catogram и сделал публичную публикацию подробностей на Telegram-канале BruhCollective.

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

Я решил провести полный статический анализ APK, выполнив деобфускацию кода, чтобы составить максимально полную и технически подкрепленную картину.
Что же на самом деле скрывается за обещаниями «улучшенного» Telegram?

Давайте посмотрим.

Спойлер: небезопасно, неконфиденциально, но чертовски интересно. Поехали!

Лезем под капот

Из мобильной разработки в бэкенд. История и впечатления

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

Самый простой и логичный способ сменить стек — поменять направление внутри компании. Мог так сделать дважды, но тогда бы и писать было не о чем. Буду рад, если кому-то мой опыт окажется полезным или интересным.

Зачем менять стек?

В 2019 году, работая над android-приложением Auto.ru, я часто думал, что надо что-то менять в карьере. Вот несколько тезисов:

- Стать CTO в будущем будет проще с опытом в бекенде...

Погрузиться в историю

Твоё приложение никто не видит — ASO может это исправить

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

Если у вашего приложения 2–3 установки в день и кажется, что «ниша не та» — скорее всего, дело не в нише, а в том, что про вас просто никто не знает. В этой статье коротко и по делу расскажу о том, что такое ASO (App Store Optimization) и почему без него ваше даже классное приложение никто не найдёт.

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

Читать далее

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

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

🚀 Хотите создать регистрацию в стиле Google для своего Android-приложения? 🚀

Забудьте о скучных формах! Погрузитесь в мир плавной анимации, интуитивного дизайна и надежной безопасности – всё это с помощью Kotlin и Jetpack Compose.

Что вас ждет:

Пошаговый гайд: От первых строк кода до готового результата – разберемся вместе.

Рабочий код: Не просто теория, а готовые решения для вашего проекта.

Комментарии эксперта: Поймете каждый шаг и сможете адаптировать код под свои нужды.

Секреты профессионалов: Узнаете, как сделать регистрацию не только функциональной, но и привлекательной.

💪 Не упустите шанс прокачать свое приложение! 💪

Читать далее

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

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

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

Читать далее

Мобильная разработка за неделю #607 (13 — 19 октября)

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

В новом дайджесте трещины в Liquid Glass и опыт собеседования в Microsoft, шутки и веселье в Android и запрет программистам писать код, взлом на собеседовании, Supercell против ЕС, интеграция Predictive back и многое другое. Заходите!

Читать далее

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