Обновить
256K+

Android *

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

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

Как подружить Urovo DT40 Pro (он же CT48) с «Магазином 15»

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

Задача стояла простая: настроить интеграцию с «Магазином 15» от компании Cleverence. На сайте Cleverence в списке поддерживаемых устройств значилась модель DT40 (без приставки Pro). «Ну, - подумал я, - Pro-версия - это же просто небольшое обновление, наверняка всё совместимо».

Приложение установилось без проблем. Открываю - и в настройках вижу грустное сообщение: «No built-in barcode scanner found or integrated», т.е. встроенный сканер не определился софтом.

Читать далее

Новости

Мне надоело писать один и тот же код. Поэтому я сделал Featuregen

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

Привет, Хабр. Я уже не тот беззаботный парнишка, что собирал 486-й компьютер. Время бежит, я скуф успел поработать с C++, C#, Java и Kotlin, последние 10 лет занимаюсь мобильной разработкой. Программирование я до сих пор люблю потому что больше ничего не умею. Но чем дольше работаешь, тем чаще ловишь себя на мысли, что от некоторых вещей начинает подгорать. Сегодня я расскажу, как я попытался избавиться хотя бы от части таких вещей.

Читать далее

Как ускорить проверку приложения с помощью Impact-анализа. Часть 3: UI-тесты

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

Когда проект растёт, дольше всего начинают тянуться самые «тяжёлые» проверки – UI-тесты. Один-два модуля поменял, а CI всё равно гоняет сотни тестов на эмуляторах и ждёт их десятки, а то и сотни минут. Знакомо?

Это третья, финальная статья цикла о том, как мы в Циане перешли от полного прогона всех проверок к выборочному с помощью Impact-анализа. В первой части я показывал, как мы ускорили статические анализаторы, во второй — как в два раза сократили unit-тесты, научившись обходить граф Gradle-модулей. В заключительной части я расскажу, как у нас на проде реализован выборочный запуск UI-тестов.

Читать далее

Лучшая архитектура KMP-приложений и когда её не использовать. Часть 1

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

В архитектуре KMP+CMP-приложений главный вопрос не в том, сколько кода можно пошарить. Он в том, где нужно остановиться.

Я покажу два рабочих подхода. Первый — архитектура для большого мобильного продукта: общий Kotlin-слой для бизнес-логики и нативный UI на каждой платформе. Второй — стартаповый путь, где Compose Multiplatform помогает быстро запустить мобильные продукты, web- и desktop-приложения. И даже backend на общих моделях данных.

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

Читать далее

Голосовой ИИ-репетитор изнутри: архитектура разговора в реальном времени

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

Доброго времени суток!

меня зовут Кирилл, хочу рассказать вам о своем проекте Aisha – ИИ репетиторе английского языка для разговорной практики. Об идее, отличиях, технических аспектах.

Читать далее

Как я искал себе читалку и придумал новый формат электронных книг для изучающих язык

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

Небольшая история о том, как я искал для себя читалку, как в итоге придумал новый формат для электронных книг — и, главное, как я месяцами воевал с дешёвыми LLM, чтобы они генерировали этот формат без ошибок. Будет и про устройство формата, и про то, как он «затюнен» под копеечные модели, и про основные проблемы.

Читать далее

Пишем мобильную ОС на Rust. Часть 3. Путь от bare-metal эксперимента к capability-based микроядру

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

В первой части мы загрузили своё ядро на настоящий телефон, вывели «Hello world» в UART и нарисовали квадратик на экране. Во второй — научили ядро управлять памятью и завели кучу.

С тех пор прошло более 4 месяцев, и проект тихо перешагнул важную черту: из bare-metal эксперимента получилось микроядро. В привилегированном режиме остались только процессы, память и передача сообщений, а всё остальное — драйверы, сервисы, будущая графика — обычные программы снаружи. Само ядро при этом выросло с неполной тысячи строк до сорока пяти тысяч.

В этой статье разберёмся, что такое capability и handle и при чём здесь seL4 и Zircon, запустим свой процесс-"калькулятор" на телефоне и поговорим с ним по IPC, а под конец напишем userspace-драйвер часов для устройства, про которое в ядре нет ни строчки.

Получить хэндл на статью

Мобильная разработка за неделю #637 (29 июня — 5 июля)

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

В новом дайджесте UISlider изнутри и навигация в Jetpack Compose без магии, миграция приложения на Navigation 3 и сборщик мусора в Dart, мобильное тестирование в 2026, как меняется разработка в эпоху ИИ, новые модели Anthropic и Google и многое другое. Заходите!

Читать далее

Словари MDict в закрытом приложении, или зачем я писал RIPEMD-128 вручную

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

Добавлял в свою читалку офлайн-словари и упёрся в MDX, формат словарей MDict. Проприетарный, официальной спеки от создателей нет. Готовые Java-парсеры под GPL, а у меня закрытое приложение, тащить нельзя. Значит, пишу свой, с нуля и без зависимостей. Рассказываю, как формат устроен внутри, где я споткнулся, и почему пришлось руками писать RIPEMD-128, чтобы прочитать даже оглавление словаря.

Читать далее

Мобильное тестирование в 2026: от истоков к трендам

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

Какова ситуация в мобильном тестировании в 2026-м году?

На связи Ильнур – ведущий тестировщик: начал свой путь в ИТ 10 лет назад как специалист технической поддержки. Со временем понял, что хочу не просто «чинить», а понимать, как всё устроено. Так я пришёл в тестирование и уже через год стал тимлидом команды.

На протяжении следующих 5 лет участвовал в запуске более 10 приложений – от MVP до многомиллионных. Я учился на ошибках, пропускал через себя сотни релизов, «съел собаку» в ручном тестировании, понял, как работают платформы, сети, железо. Хочу поделиться своими мыслями о мобильном тестировании как человек, который знает сферу изнутри.

Читать полностью

Как энергосбережение на Android мешало Seamless-авторизации

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

Всем привет! Я Никита, тимлид команды Android в Банки.ру. 

Недавно, внедряя в приложение фичу авторизации без SMS-кода (seamless), мы столкнулись с тем, что она в упор отказывалась работать – но только на Android. Мы дебажили ее полторы недели, перепробовали все возможные варианты и закошмарили всех доступных операторов связи, прежде чем узнали, что все дело было… в энергосбережении.

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

Читать далее

Как врач на пенсии создал AI‑приложение для определения биологического возраста на Flutter + TFLite

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

Я врач с более чем 30-летним стажем, последнее время работал доцентом медицинского вуза. Недавно вышел на пенсию и получил то, о чем мечтал всю трудовую жизнь — много свободного времени, и часть его желательно тратить с пользой (а не только играть на ПК, что я, конечно, тоже люблю).

Я давно, со студенчества, интересовался проблемами старения организма. Поработав с десятками тысяч пациентов, я уже не удивлялся, что паспортный (хронологический) возраст и реальное состояние организма — это две разные вещи. Один пациент в 60 бегает марафоны, другой в 45 еле ходит по дому. Но причины этого медицине, честно говоря, до ситх пор непонятны. Мне хотелось как‑то объективизировать, оцифровать, что ли, эту разницу без сложных анализов и дорогостоящих исследований. И чтобы каждый человек мог легко и просто оценить свой биологический возраст — не просто для того, чтобы его узнать — а сделать определенные выводы и, возможно, изменить свои привычки и даже обратиться к специалистам. Теперь для этого есть общедоступные инструменты — смартфоны с фотокамерой, искусственный интеллект и модели, способные анализировать, состояние кожи и другие показатели по фотографии. Надо попробовать, решил я. Но для этого нужно создать мобильное приложение. Раньше я бы на такое не замахнулся, ну а сейчас — время есть, инструменты есть, желание есть — why not?

Читать далее

Навигация в Jetpack Compose без магии: что на самом деле делают библиотеки навигации

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

Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое.

В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo.

Читать далее

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

«Гражданин, обновитесь»: анализ вредоносной кампании Falcon

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

«Обновите приложение». Для большинства пользователей это привычное сообщение, а для хакеров - один из самых надежных и эффективных способ получить контроль над устройством. В этой статье разберем вредоносную кампанию, начавшуюся с apk, замаскированного под российский сервис. То, что сначала выглядело как очередная вариация банковского трояна, при ближайшем рассмотрении оказалось гораздо интереснее.

Читать далее

Как я превратил OnePlus 3T в домашний сервер на базе postmarketOS

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

Я давно хотел захостить свой небольшой проект — бота, которым пользуюсь сам. Останавливал меня не код, а хостинг. Не хотелось арендовать VPS и настраивать всё удалённо — а потом обновлять и следить, чтобы не упало. Переплачивать за готовый хостинг, лишь бы этим не заниматься, тоже не хотелось. Так это и оставалось идеей.

Зато был старый OnePlus 3T в ящике: флагман 2016 года, Snapdragon 821, 6 ГБ оперативной памяти — рабочий, но не включавшийся годами. Выбрасывать рабочий компьютер не хотелось, а для одного небольшого always-on сервиса это более чем достаточно: пара ватт в простое, своя батарея, никаких ежемесячных платежей.

Читать далее

Как мы настраивали терминалы сбора данных на складах Ozon

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

Привет, Хабр! В 2022 году я пришёл в Ozon Tech на позицию специалиста технической поддержки склада и начал разбираться, как настраивать и поддерживать оборудование на ФФ (фулфилмент), огромном складе площадью 70 000 м², где проходят операции от приёмки и хранения товаров до их подготовки к отправке на сортировочные центры. В тот момент всё работало стабильно. На складах использовались терминалы Zebra (ТСД — терминал сбора данных), вендор был на рынке, поддержка оставалась доступной, и никто особенно не задумывался, как всё устроено внутри. 

После изменения условий работы с вендором нам пришлось глубже разобраться в процессе настройки и поддержки устройств, чтобы сохранить стабильную работу терминалов на объектах. Оказалось, что поддерживать работу десятков тысяч терминалов по всей стране стало задачей с множеством неизвестных. Притом именно через них проходит большая часть складских операций, от приёмки и размещения товара до сборки и отгрузки заказов. Впереди нас ждали несколько лет разборов, ошибок, временных решений и постепенной перестройки всей системы. В какой-то момент казалось, что мы зашли в тупик. Но в итоге справились. Сейчас мы сократили время настройки терминала с 30 до 6 минут, управляем тысячами устройств удалённо и имеем единый лаунчер. В этой статье расскажу, как мы заново выстроили процесс настройки и управления терминалами на складах. Поехали!

Читать далее

Продолжаем рассказывать о создании продолжения DogPlanner…

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

Ну что же…, на дворе 2026 год, первый DogPlanner живёт своей жизнью, доступен на многих площадках мобильных приложений, мы о нём много писали в соцсетях и различных блогах. С тех пор как мы сделали его, а опубликовали мы его аж в июне 2020 года, вы прислали нам много различных идей по его доработке, написали множество отзывов, а также мы узнали о приличном количестве проблемных мест по его функциональности и содержанию, и всё это было абсолютно заслуженно! Хотим сказать вам огромное спасибо за всю обратную связь, которую мы получили, и получаем до сих пор от вас! Но давайте снова вернёмся к критике…

Читать далее

Топ-10 вопросов с Android-собеседований в 2026 — с разборами

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

Думаю, многие из нас успели заметить стремительное изменение рынка в последние пару лет: он плавно превратился из рынка соискателя в рынок нанимателя и, пожалуй, стал наиболее конкурентным и жёстким за всё время существования IT в России.

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

Поэтому навык прохождения собеседований становится всё важнее. В этой небольшой статье хотел бы разобрать 10 популярных вопросов, с которыми можно столкнуться на собеседованиях по Android в 2026, поехали 🚀

К вопросам

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

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

В этом выпуске хардкорная агентская разработка под iOS и Preview-Driven скриншот тестирование для Android, кольца-расстояния и инерция пальца, пять ошибок начинающих Android‑разработчиков и пять ошибок при работе с Jetpack Compose, динамические иконки приложения на Flutter, ручной DI в Kotlin Multiplatform, расширенные возможности оплаты и низкие комиссии в Google Play, и многое другое. Заходите!

Читать далее

Мессенджер с Web3 размером в 3.5 Мб: инди-разработка с нулевым бюджетом

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

ПРЕКРАСНОЕ ДАЛЕКО

Мир цифровых технологий постоянно удивляет. Сначала появились супер процессоры с тактовой частотой аж 8 мегагерц (КР1810ВМ86М — до 8 МГц), затем память (К565РУ7 - Клон Intel 41256), удивляющая своими гигантскими объемами в 256 килобай при наборе из 8 штук. Казалось, мир сошел сума и достиг поистине фантастических возможностей. Но это было в далекие 90-е.

Вспоминаю как спустя пару лет впервые запустил установку своей Windows 95 ставя будильник на два часа позже, чтобы не пропустить фееричный запуск окончания установки на моем первом DX386 с 40 мегагерцами в турборежиме. Чуть позже написал своё первое приложение на Turbo Basic, размер которого составлял всего пару десятков килобайт. Славные были времена, ведь мне тогда было около 20-ти лет.

ВСЕ ВЫШЕ И ВЫШЕ

Время шло. Технологический прорыв казалось никак не мог затихнуть. Процессоры, память, интернет, все стремительно развивалось и уже никто не думал об ограничениях. Появились первые мессенджеры. ICQ со своим уникальным "ку-ку" звучал во всех офисах. Помню даже на некоторых фирмах штрафовали своих сотрудников за использовании мессенджера на рабочем компьютере. Появились первые программы по автоматизации финансовой деятельности предприятий. 1С-ку кажется уже знают все. Встроенный язык программирования, да ещё и с русским диалектом. Вау, вот времена наступили. Всё крутиться, сверкает и манит в магазин компьютерной техники прикупить очередную видюху с двумя или даже тремя куллерами. Эх, где же вы мои любимые Trident TVGA или Cirrus Logic с одним мегабайтов видеопамяти?

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