Обновить
256K+

Android *

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

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

AI‑агент вместо ручного регресса: архитектура, метрики, инсайты

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

Привет, Хабр! На связи Владимир Бойко, ведущий iOS‑разработчик в Т‑Банке. В статье расскажу, как мы построили AI‑QA‑агента, который проходит тест‑кейсы так же, как это делает человек: запускает приложение на симуляторе, выполняет сценарий шаг за шагом, анализирует экраны с помощью VLM и автоматически сравнивает ожидаемый результат с фактическим.

Идея родилась из бытовой боли. В нашем мобильном приложении десятки тысяч тест‑кейсов, регресс проводится дважды в месяц, и каждый цикл съедает значительную часть ресурсов QA‑команд. Во время регресса QA фактически недоступны для остальных задач. А с учетом санкционных ограничений окна для релизов ограничены и цена пропущенного дефекта возрастает: следующий шанс исправить может появиться не скоро.

Примерно в то же время я заканчивал задачи с VLM для Умной камеры и плотно общался с командой VLM Core — ребятами, которые развивают инфраструктуру мультимодальных моделей внутри банка. Вопрос напрашивался сам собой: а что если агент на базе VLM сможет выполнять эти проверки вместо людей?

Читать далее

Новости

Вышла Крипто Шифр — моя игра головоломка

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

Однажды я задумался о том, как бы мне занять себя в свободное время, пока я нахожусь не дома. Мне хотелось что-то сложное и притом близкое к компьютеру, чтобы можно было неплохо прокачать себя в анализе. Увлекаясь криптографией, я вдруг понял, что я хочу и сделал программу на C, чтобы попробовать расшифровать первые шифры, о чем я написал в последствии в моей предыдущей статье. Книги я решил скачивать с Project Gutenberg в текстовом формате.

Далее я опишу интерфейс программы.

Экран меню я не стал показывать и сразу перейду к новой игре.

Читать далее

Я всегда не любил Duolingo всей душой. Но когда в моем приложении оказалось 70% новичков, то кое‑что сделал так же

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

Когда я начинал делать VibeLing, то был уверен — чем больше свободы дает продукт, тем он лучше. Поэтому вместо готового курса сделал приложение, в котором каждый сам решает, что ему учить. Но когда пошел поток пользователей, выяснилось, что проблема была совсем не в количестве возможностей. Большинству не хватало самого простого: понятного следующего шага.

Читать далее

Цифровая слежка в кармане: аудит 11 популярных российских Android-приложений

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

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

Продолжаю серию аудитов. В прошлый раз я разобрал семь яндексовских приложений — и там было на что посмотреть: буфер обмена, WebRTC-утечки, распознавание ключевых слов в аудиопотоке. На этот раз расширяю выборку и меняю фокус.

Одиннадцать приложений. Банки, госсервисы, маркетплейсы, навигация, магазин приложений. Все — из топа российского Android-рынк. Методология — статический анализ (SAST) плюс пассивный перехват logcat. Трафик не вскрывался, SSL Pinning не обходился, в Secure Folder не залезал.

237 уязвимостей суммарно (включая расширенную проверку). Шесть приложений с ключами подписи образца прошлого века. ВК с 11 трекерами и рейтингом риска 98/100. И Госключ, который неожиданно оказался единственным, кто делает всё правильно.

Читать далее

Как создавать необычные усложнения для часов на Wear OS

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

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

Читать далее

Vivaldi 8.2 для мобильных устройств: Ваш браузер. Ваши правила. Ваши расширения

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

Vivaldi предоставляет вам все необходимые инструменты для работы в сети. С нашим последним обновлением Vivaldi 8.2 мы даём вам больше — с полной поддержкой расширений на Android, так что вы можете настроить свой мобильный браузер именно так, как вам нужно.

Читать далее

Скорость команды разработки — свойство системы, а не скорость самого быстрого ковбоя на Диком Западе

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

Скорость команды часто пытаются измерить количеством сильных разработчиков. Но самый быстрый человек в хаотичной системе обычно не ускоряет команду. Он просто первым начинает компенсировать её проблемы.

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

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

В такой среде архитектура нужна не для красивой схемы. Она нужна, чтобы изменения были дешёвыми.

Читать далее

Используем Buildozer для компиляции python в apk. Проблемы, решения и личный опыт

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

В статье мы познакомимся с Buildozer и научимся собирать APK из python с его помощью. Я собрал готовое решение, как без плясок с бубном и вызова “Богов кодинга” собрать проект.

Читать далее

Калькулятор для iOS, который не округляет

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

Идущий в составе iOS калькулятор показывает округлённый результат. Constructive Calculator всегда готов показать следующую значащую цифру, так же, как калькулятор Android.

Читать далее

Пиротерапия от выгорания, или как я стал вайбкодером

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

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

Представляю твоему вниманию AcroTab — приложение, которое должно быть у каждого уважающего себя гитариста (у меня, например, есть).

кг/ам tl;dr: https://acrotab.org

Читать далее

Что умеет ассистент по умолчанию на Android — на примере Алисы AI

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

На устройствах под управлением ОС Android можно выбрать ассистента по умолчанию — почти так же, как браузер. Один раз выбираете в настройках — и дальше открываете его системным жестом поверх любого приложения. Удобно.

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

Меня зовут Ваня, я руководитель команды Android-разработки SDK Алисы и техлид проекта дефолтного ассистента. Сегодня мы с вами разберёмся, где проходят эти границы, на примере Алисы AI.

Читать далее

Drama RAT — вредоносное приложение, после установки которого действительно становится печально

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

Недавно на исследование в департамент комплексного реагирования на киберугрозы Positive Technologies (PT ESC IR) поступил ряд образцов банковского трояна для Android с функциями удаленного управления — Drama RAT. Это вредоносное семейство распространяется с помощью фишинговых сообщений в мессенджерах и маскируется под VPN-сервисы, банковские приложения и другие взломанные утилиты со встроенной платной функциональностью. Ранее о нем писали в УБК МВД.

Читать далее

От ручного тестирования к автоматизированному: пишем compose UI-тест под Android

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

Автоматизация тестирования не только упрощает рутинные процессы и экономит время, но и позволяет проверять приложение на десятках и сотнях устройств за считанные минуты. Однако настроить ее бывает не так просто. Разные версии Android, кастомные оболочки вендоров, особенности экранов — все это часто становится неприятным сюрпризом после нажатия кнопки Deploy

Меня зовут Максим, я QA-специалист команды развития мобильной фермы Selectel. В этой статье я проведу вас от уже привычного многим ручного тестирования до полноценной автоматизации с доступом к коллекции из ~400 разных устройств и интеграцией в CI/CD. В качестве примера приведу простую инструкцию по созданию Compose UI-теста под Android-устройство для проверки логики и верстки в вашем приложении.   

Читать далее

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

Вари меня нежно: какой смартфон будет работать нормально, пока Google и Apple душат установку приложений

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

Скажу честно, я сама не до конца верила, что это произойдет, но мировые гиганты продолжают медленно но верно затягивать гайки. Наверное, только ленивый не видел новостей о том, что в Android появляется замечательная функция (Developer Verification), которая заставляет 24 часа ждать перед установкой стороннего приложения через APK. Не прошло и недели, как новостные ленты наводнили сообщения о запрете iMazing и других сервисов для устройств Apple — а именно они позволяли устанавливать запрещенные американцами программы, которыми пользуются у нас в стране. Меня эта новость зацепила, как говорится, "по живому", потом что я как раз решила переустановить приложение Сбера...и не смогла! Поэтому я, скрепя зубами, все-таки решила слезать с iOS и попыталась выяснить, какой смартфон можно купить, чтобы в ближайшем будущем он не превратились в тыкву. Под катом делюсь всей информацией, какую нашла.

Читать далее

Складской учёт на трёх платформах без дублирования логики: расширение Chrome, мобилка и SaaS из одного кода

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

Я довольно давно вожусь с сервисами вокруг товарных данных: делаю price‑matrix (обработка прайсов поставщиков) и CatalogLoader (парсеры сайтов). InventoryMod вырос из той же темы, но с другого конца — не «собрать и разобрать данные», а «вести по ним складской учёт».

InventoryMod — учётная система для склада: товары, остатки, движения, заказы, закупки, инвентаризация, отчёты. Начал где‑то в середине апреля 2026-го с расширения для Chrome с локальной базой (первый коммит в git датирован 19 мая — до него первая версия довольно долго собиралась «в столе»), потом добавились мобильное приложение и полноценный SaaS с сервером.

Главная проблема, с которой я жил всё это время, формулируется просто: как не писать три раза одну и ту же бизнес‑логику, когда база данных в каждой среде своя. Где‑то SQLite прямо в браузере, где‑то удалённый сервер по HTTP.

Дальше разберу на реальном коде из репозитория, как из query‑модулей выводится API‑контракт, почему я в итоге слез с IndexedDB на SQLite‑WASM и что творилось с транзакциями в резервировании остатков. Про сам продукт скажу ровно столько, сколько нужно для контекста.

Читать далее

Продуктовая гипотеза или баг фронтенда: как перестать угадывать почему пользователи не дошли до цели

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

Возьмём типичный отчёт воронки интернет‑магазина: «Каталог → Товар → Корзина → Оформление заказа → Оплата». До последнего шага дошло 38% сессий, остальные 62% потерялись между «Оформлением» и «Оплатой». Для продуктовой аналитики эти 62% — повод для гипотезы «форма оформления слишком длинная» и задачи на редизайн. Для команды разработки те же 62% — конкретная JavaScript ошибка. Но пока данные о конверсии и данные об ошибках лежат в разных системах, выбор между ними происходит наугад. Как перестать «угадывать» почему отвалились пользователи и какую в этом роль играет Customer Journey Map разберу в статье.

Читать далее

Как я делал self‑host медиатеку на Kotlin Multiplatform и почему сервер «стримит» интерфейс на клиент

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

Я пользовался для трекинга фильмов и сериалов Кинопоиском, Trakt, Letterboxd, IMDb, TMDB, MyShows — и по-честному ни один из них не бесил настолько, чтобы стать поводом всё бросить и писать своё. У каждого свои шероховатости: у Кинопоиска в какой-то момент стало слишком много рекламы, а заодно убрали подробную статистику по жанрам и странам, которая раньше была. У Trakt банально медленный сайт, лимит в 1000 фильмов в списке и ограниченные возможности с созданием списков. У IMDb так и не появилось нормального трекинга сериалов. TMDB — просто не нравится интерфейс. С Letterboxd — не могу даже сформулировать, почему, просто не зашло. А MyShows,устраивает почти во всём: удобно, есть оповещения о новых сериях, реклама ненавязчивая, лёгкая подписка для поддержки сервиса.

Так в чём тогда была зацепка? Не в том, что существующие сервисы плохие — большинство из них вполне рабочие. А в том, что ни один не даёт того сочетания, которое хотелось: self-host, где данные и инфраструктура твои, а не чужие; стриминг собственного контента внутри того же интерфейса, где ты его трекаешь; и просто инженерный азарт — я долгое время обдумывал архитектуру гибридной SDUI/BDUI на Kotlin, когда сервер стримит слоты на клиент, а клиент рендерит заранее заготовленные UI-элементы, при этом чтобы приложение ощущалось и выглядело как нативное. Это была отдельная задача, которую хотелось решить независимо от недостатков конкурентов.

Клиент — минималистичный интерфейс с трекингом фильмов и сериалов: статусы просмотра, оценки, свои списки.

Читать далее

Мы переизобрели Gradle Flavors на KMP и вот почему

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

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

Но спустя 5 минут поисков до вас доходит осознание:Gradle Flavor на KMP нет и не планируется, а вместо них нам достается expect/actual, разбивающий код по платформенным сорц сетам

Читать далее

Локальный компаньон для Genshin, HSR и ZZZ: как я упаковал три игры в офлайн‑приложение без бэкенда

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

Забыли забрать ежедневные гемы или потеряли счёт круткам до гаранта? Рассказываю, как я решил собственную проблему и разработал GachaPoint — бесплатный офлайн‑компаньон для Genshin Impact, Honkai: Star Rail и Zenless Zone Zero без бэкенда и рекламы.

В статье разбираю техническую изнанку проекта для Android (Java / Architecture Components): Зачем использовал «плоскую» таблицу в SQLite (Room) для календаря и как это ускоряет выборки за один запрос, Почему для сетки дней кастомный GridLayout оказался удобнее RecyclerView, Как настроить точные ежедневные напоминания через WorkManager с учётом жестких ограничений Doze Mode в Android 12/13+.

Исходники проекта открыты, буду рад обсудить архитектуру и UI‑решения в комментариях!

Читать далее

Мобильная разработка за неделю #645 (24 — 30 августа)

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

В этом дайджесте надежное выполнение фоновых задач в iOS и детекция лица в реалтайме для биометрии в Android, забавные анимации с меш-градиентами в Jetpack Compose и кастомизация пейволов с Apple Foundation Models, Kotlin Coroutines Channels и Actor‑модель, фоновые задачи в KMP с API как у WorkManager, разработка на Авроре под Аврору, двуногий робот в форме утёнка от Hugging Face и многое другое. Заходите!

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