Все потоки
Поиск
Написать публикацию
Обновить
338.34

Android *

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

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

Укрощаем Android UI-тесты на Compose: как Page Object спас нас от рутины

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

Привет, Хабр! Вы когда-нибудь тратили слишком много драгоценного времени на поиск нужного testTag в иерархии Compose Screen? А потом ещё полдня чинили тесты после каждого чиха в UI? Или, может быть, несколько недель ждали, пока в дизайн-систему добавят недостающий тег или семантику, чтобы вообще начать писать свой UI-тест? Если вы хоть на один вопрос ответили «Да», эта статья для вас. Давайте навсегда покончим с этой рутиной и займемся более креативными задачами!

Цель статьи — НЕ представить очередной фреймворк написания UI-тестов для приложений на Android, а упростить их написание с помощью всем знакомого Page Object. Мы будем прятать рутину поиска нужных компонентов и одновременно повышать устойчивость тестов к изменениям. Всё для того, чтобы тесты стали удобнее, надёжнее и проще поддерживались.

Меня зовут Дмитрий Омельченко, я Android-разработчик в Райффайзенбанке. Несколько лет назад мы с командой начали внедрять автоматизацию тестирования в приложение online-банка, и за это реализовали несколько интересных решений, об одном из которых хочу вам рассказать.

Читать далее

Новости

Почему loadKoinModules и unloadKoinModules в Koin могут ломать ваши зависимости и как этого избежать

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

В Android-проектах Koin остаётся одной из самых популярных DI-библиотек, особенно в MVP/MVI и Compose-приложениях. Она проста в настройке, гибкая и хорошо работает в больших кодовых базах.

Но многие команды, стремясь к модульности и тестопригодности, начинают активно использовать функции loadKoinModules() и unloadKoinModules(). И здесь разработчики часто натыкаются на странную ошибку -_-

Читать далее

Эффект Манделы или как одновременно вывести звук на две bluetooth колонки c Samsung на андроиде 15

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

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

Красную таблетку (читать далее)

Верификация разработчиков Android по паспорту

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

25 августа 2025 года компания Google объявила о «новом уровне безопасности для сертифицированных устройств Android». Для защиты против вредоносного ПО принято решение ввести обязательную верификацию разработчиков, которые подписывают Android-приложения (здесь и далее имеются в виду приложения для сертифицированных устройств с предустановленными программами Google, производители таких устройств перечислены здесь).

В данный момент все все APK-файлы в Android должны быть подписаны цифровой подписью с помощью сертификата, прежде чем будут установлены на устройство или обновлены. В будущем, что

Читать далее

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

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

В этом выпуске рассуждения о месте Rust в iOS и MAX в Android, погружение в JNI и опыт Shopify с React Native, архитектурный сдвиг оффлайна, быстрый старт в CI, мобильный рынок Турции, продукты для бумеров и многое другое. Заходите!

Читать далее

Как требование к навигации повлияло на архитектуру мобильного приложения

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

Привет! Меня зовут Никита и я Android-разработчик. Сегодня я хочу рассказать, как нам вместе с командой Nexign удалось реализовать сборку бизнес-сценариев в приложении для регистрации новых клиентов с особыми требованиями по навигации.

Читать далее

Kotlin QA: как перейти с Java и писать тесты в 2 раза быстрее

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

С момента официального объявления Kotlin как предпочтительного языка для Android‑разработки в 2017 году язык стремительно завоевал популярность не только в мобильной сфере, но и в автоматизации тестирования.

Многие команды QA-инженеров сталкиваются с выбором: остаться на привычном Java‑стеке или перейти на Kotlin. В этой статье мы рассмотрим некоторые ключевые различия, преимущества и практические аспекты перехода на Kotlin в контексте автоматизации тестирования.

Читать далее

Быстрый старт в CI на примере Flutter (под банальный Android и интересную «Аврору»)

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

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

Читать далее

Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

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

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

Как показывает обсуждение в Твиттере, многие разработчики загружают данные в блоке init {} во ViewModel. Хотя подход кажется логичным, у него есть архитектурные недостатки. Автор статьи описал проблемы такого подхода и предложил гибкую альтернативу с использованием Flow.

Читать далее

Как поддержать Flutter в своей Библиотеке. Опыт VK ID SDK

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

Привет! Меня зовут Даниил, я работаю в команде SDK в VK. Одно из направлений, которым занимается наша команда, — разработка SDK для авторизации через сервисы экосистемы VK. Он состоит из нескольких компонентов: авторизации, логина в один клик, шторки для входа с более удобным интерфейсом и поддержкой Mail и OK как провайдеров авторизации. 

Мы давно задумывались о поддержке Flutter, поскольку это быстроразвивающаяся платформа, которой уже пользуется много клиентов. Было видно, что поддержка Flutter нужна клиентам, даже на фрилансовых биржах публиковали заказы на поддержку VK ID. Логичным поступком стало сделать официальное решение от VK, чтобы клиентам не приходилось делать одинаковую работу. В этой статье поделюсь опытом поддержки Flutter в нашем SDK. Статья будет полезна любому разработчику, который хочет добавить поддержку Flutter в свою библиотеку. Материал рассчитан на разработчиков, которые ничего не знают о Flutter и будут разбираться с ним с нуля. Приведены примеры кода только под Android, поскольку под iOS всё делается аналогично.

Читать далее

Гайд по File Templates: как шарить шаблоны с однотипным кодом

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

Всем привет! На связи Дима Котиков, ведущий Android-разработчик в Т-Банке. Я все еще люблю разбираться в технологиях, разрабатывать под Android и KMP и пить латте на фундучном молоке :)

Расскажу, как можно шарить File Templates для своей команды, чтобы облегчить жизнь другим и сэкономить немного времени. Причем коллегам ничего самостоятельно не придется настраивать: подтянутый из git-а репозиторий с кодом все сделает сам. Эта статья — бонус к трем предыдущим, в которых я рассказывал, как уменьшить написание boilerplate-кода. Ссылки на них оставлю в конце статьи.

Читать далее

Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом

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

Привет! Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.

Читать далее

Какие запросы и куда отправляет MAX

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

Моя вторая статья — анализ сетевых запросов MAX и почему этот анализ — моё самое большое разочарование! Не ожидал я такого конечно, но описал все как есть.

Читать далее

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

Мобильная разработка за неделю #603 (15 — 21 сентября)

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

В новом дайджесте Swift Runtime и производительность iOS-приложений, вопрос на 16К и полный айсберг Android, проектирование интерфейсов по азиатски, 17 платящих клиентов за час из Tinder, реклама на холодильниках и многое другое. Заходите!

Читать далее

Смартфон с настоящей QWERTY-клавиатурой…

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

В наше время сложно себе представить человека, который носит смартфон с аппаратными кнопками. Всего каких-то 15 лет назад, Nokia E72 считался эталоном быстрой и удобной печати на смартфоне, однако даже он уступил место экранной клавиатуре и Swype. Я с таким положением дел не согласен и продолжаю повседневно пользоваться смартфоном с аппаратной QWERTY-клавиатурой...

Но тот гаджет, что я совершенно случайно купил в Китае за 1.500 рублей просто перевернул моё представление о QWERTY-клавиатурах в смартфонах и о таком забытом классе устройств, как коммуникаторы. И да, он действительно выполнен в форм-факторе ноутбука!

Читать далее

UPDATE: Разрешения MAX для Android. Cравниваем с Telegram и WhatsApp*

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

В своей первой статье «Разрешения MAX для Android. Cравниваем с Telegram и WhatsApp*» я сравнил резрешения, которые запрашивает приложение MAX для Android с разрешениями, которые запрашивают Telegram и WhatsApp.

18 сентября вышла новая версия MAX — 25.11.0 и вы знаете, произошло то, чего я не ожидал. MAX стал запрашивать 50 разрешений, вместо 59, т. е. на 9 меньше!

Давайте посмотрим, какие же разрешения убрали разработчики.

Читать далее

Ваш смартфон вам не принадлежит. И вот как я в этом убедился…

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

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

Вы купили телефон. Он лежит у вас в кармане. Вы за него заплатили. Казалось бы, он ваш. Но так ли это на самом деле? Моя недавняя история заставила меня усомниться в этом фундаментальном, казалось бы, факте.

Все началось с батареи. Мой телефон стал разряжаться подозрительно быстро. Будучи технически подкованным пользователем, я решил копнуть глубже. Без рут‑прав, но с помощью Android Debug Bridge (ADB) и команды ps, я начал изучать запущенные процессы. На первый взгляд — все чисто, только системные службы. Ничего криминального.

Потом случился инцидент с обновлением приложения Альфа‑Банка. Оно запросило доступ к «Неизвестным источникам» (разрешение на установку приложений). Я разрешил, обновил и... благополучно забыл об этом. Но позже вспомнил: держать приложение в списке источников — серьезный риск! Это как выдать кому‑то ключ от вашей крепости — оно может устанавливать другие приложения без вашего ведома. Я всегда строго контролирую этот список, оставляя там только абсолютно доверенные программы.

Каково же было мое изумление, когда, заглянув в настройки безопасности (Настройки > Безопасность > Установка неизвестных приложений), я обнаружил там несколько программ, которых точно не добавлял! Среди них было какое‑то безликое «Обратная связь» и загадочный «oms‑core».

«Ладно, — подумал я, — Сейчас исправим». Я спокойно снял галочки напротив этих приложений, лишив их статуса источника установки. Чувство выполненного долга длилось недолго. Какое‑то сомнение грызло меня. Я вернулся в настройки буквально через минуту... и обомлел. Галочки стояли на месте! Я проделал операцию еще раз — результат был тот же. Отключить эту функцию у этих приложений оказалось невозможно.

Читать далее

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

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

Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое «смогло». Но не стоит спешить, друзья!

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

Читать далее

Полный айсберг Android. Часть 1

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

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

Читать далее

«Большие вызовы»: как школьники за 3 недели собрали модуль для офлайн-распознавания документов на Android

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

Привет, Хабр! Меня зовут Олег Милосердов, я руковожу проектами по компьютерному зрению в ВТБ. В июле мы с коллегами приняли участие в научно-технологической программе «Большие вызовы» от образовательного центра «Сириус» в качестве наставников. Мы предложили школьникам спроектировать и внедрить автономный модуль распознавания MRZ-зоны документов, удостоверяющих личность, прямо на мобильном устройстве под Android, которое работает без интернета, серверов и облака. В этой статье расскажу, как талантливые старшеклассники справились с задачей, какой опыт получили и какие выводы мы можем сделать как наставники.

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

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