Обновить
188.19

Android *

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

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

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

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

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

Читать далее

Новости

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

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

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

Читать далее

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

Время на прочтение3 мин
Количество просмотров1.8K

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

Погружаемся

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

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

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

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

Что такое JSON Schema 

Читать далее

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

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров740

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Время на прочтение11 мин
Количество просмотров2.5K

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров876

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

N месяцев — столько ушло на то, чтобы ваше приложение стало тем, каким вы хотели его видеть. И вот оно – готово. Пора показать миру!

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

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

Читать далее

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

Время на прочтение5 мин
Количество просмотров63K

Hack Time, Хабр!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров654

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

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

Читать далее

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

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

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

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

Что вас ждет:

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

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

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

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

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

Читать далее

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

Время на прочтение5 мин
Количество просмотров946

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

Читать далее

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

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

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

Читать далее

Вайбуем в закрытом корпконтуре с Android Studio, Continue и Ollama в локальном режиме

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

Привет! Меня зовут Александр Карташов, и я Android-lead в IT-подразделении компании Спортмастер. Сегодня я расскажу вам о том, как настроить Android Studio для работы с LLM в режиме агента, получить максимум эффекта даже от небольших моделей на компьютерах, не обладающих мощной видеокартой, о тонкостях и некоторых важных настройках плагинов, особенностях запросов к нейронке. Эта статья-гайд поможет вам развеять страх того, что локальные модели для кодинга — это сложно, и позволит вам почувствовать лёгкий корпоративный вайб-кодинг даже внутри закрытого корпоративного контура.

Проблема

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

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

Погрузиться в вайб

Интеграция Predictive back в Android

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров746

В Android 13 Google представил новую «фишку»: predicitve‑навигация. Это API позволяет пользователю «посмотреть» на какой экран он вернется, не выполняя непосредственно возврат. Подобный функционал довольно давно есть в iOS и, например, в Telegram на Android. Теперь же данный функционал должен работать в Android «из коробки», а с Android 16 будет включен по умолчанию. Немного поресерчив тему можно найти для его работы необходимо включить флаг enableOnBackInvokedCallback и мигрировать на BackPressedDispatcher. Посмотрим так ли это.

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