Обновить
128K+

Android *

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

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

Границы универсального, или Интеграция протокола Matter over Wi-Fi в интеллектуальные колонки Сбер

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

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

Недавно мы выпустили интеллектуальные колонки СберБум 2.0 — хаб умного дома, который поддерживает протоколы Zigbee и Matter over Wi-Fi. Zigbee у нас был и прежде, а вот Matter over Wi-Fi — нет. Внедрение оказалось предсказуемо сложным: требовалась архитектура, глубоко интегрированная в наш бэкенд. Тем не менее, получилось перевести генерацию операционных кредов из библиотеки в бэкенд; реализовать передачу роли контроллера между смартфоном и колонкой, чтобы пользователю было удобнее подключать устройства; решить проблему типизации end-устройств в Matter (да, это проблема), переиспользовав собственный скриптовый язык, который применяем в хабе. Рассказываем.

Читать далее

Новости

Анимация iPhone Duo на Galaxy Fold: от красивой демки до работающего приложения

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

Повторить анимацию складного iPhone на Samsung уже успели в эффектных демках. Но что потребуется, чтобы переход работал поверх открытого приложения, переживал блокировку и следующее складывание? На своём Fold 8 я разбирался, почему датчик присылает свежие ответы с застывшим углом, зачем включённому экрану ещё нужна картинка и как неудачный перенос одного приложения может сломать следующий переход в новом приложении.

Читать далее

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

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

В новом выпуске почему игры лагают и как я всё‑таки опубликовать игру в Google Play из России, iPhone Duo для iOS-разработчика и кросс-компиляция под Android, Flutter Web с WebAssembly Week, ИИ-агент для мобильного тестирования в hh.ru, биологическая лаборатория Anthropic, новые премиальные Googlebook на Android и многое другое. Заходите!

Читать далее

Primary и Secondary: как устроен мультидевайс WhatsApp*

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

Когда вы открываете WhatsApp* Web или ставите приложение на ноутбук, оно не «входит в аккаунт» так же, как телефон. Оно привязывается к телефону и становится его спутником. Внутри WhatsApp это два разных сорта устройств - primary (главное) и secondary, оно же companion (связанное). Разница между ними определяет почти всё: как устройство логинится, что оно умеет и что произойдёт, если его отключить.

Это разбор на пальцах: без протокольных деталей, только модель и следствия из неё. Термины primary и secondary я взял из кода нашего клиента - в нём это буквально два режима запуска одного бинарника.

* Meta Platforms Inc. (владелец Facebook, Instagram, WhatsApp и Messenger) признана экстремистской организацией, её деятельность запрещена на территории РФ. Facebook и Instagram запрещены в РФ.

Читать далее

«Щелчок Таноса» или искусство в разработке

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

Ресурсы Вселенной ограничены, а постоянно растущее население планеты может привести к голодному вымиранию всего человечества в ближайшем будущем. Чтобы спасти людей от голодного вымирания, киновселенная Marvel придумала оригинальный способ решения проблемы. Создав могущественного титана по имени Танос, взявшего на себя миссию спасителя. Идея Таноса состояла в том, чтобы собрав шесть Камней Бесконечности и объединив их силу в специальной Перчатке, раз и навсегда избавиться от половины населения планеты, просто щелкнув пальцами.

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

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

Читать далее

Как я всё‑таки опубликовала игру в Google Play из России

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

Когда я только начала разбираться, как опубликовать приложение в Google Play из России, у меня довольно быстро появилось ощущение, что я занимаюсь чем‑то если не запрещённым, то как минимум подозрительным. Почти везде логика была примерно одинаковой: из России вроде бы можно, но желательно иметь иностранную карту, иностранный адрес, иностранный номер телефона, жить где‑нибудь в Сербии, Грузии или Казахстане и, по возможности, вообще перестать быть российским разработчиком.

Очень обнадёживающе.

Но у меня уже была готовая игра PanzerShrek, российский паспорт, российский банковский счёт и вполне серьёзное желание проверить, действительно ли Google Play для российских разработчиков полностью закрыт или всё‑таки не настолько страшно.

Спойлер: PanzerShrek в Google Play в итоге появился. Но местами путь туда оказался интереснее, чем разработка самой игры.

Читать далее

Кросс-компиляция под андроид и не только

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

Сегодня широко используют cmake add_subdirectory и сборку через Gradle для кросс-компиляции сишных библиотек под андроид. Мы же рассмотрим более продвинутый и универсальный способ, который работает со множеством систем сборки и позволяет любым проектам найти свои зависимости без написания отдельных костылей под каждый проект: будем отдельно собирать каждую библиотеку ее собственной системой сборки в общий $PREFIX

Читать далее

Из 165 крупнейших банков в App Store остались 37. Почему сейчас в России проще быть Android-разработчиком

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

Привет!

15 июля истёк срок, который ФАС дала Apple на предустановку RuStore и MAX. Требования не выполнены, дело возбуждено, потолок штрафа доходит до 4 млрд рублей. Ну, вроде очередной эпизод в переписке ведомства с корпорацией, таких за последние годы набралось много.

Но через пару дней я ко всей этой истории и понял, что смотрю на верхушку истории, которая тянется с 2022 года, а целиком я её не видел ни разу. Захотелось разложить всё в разрезе: что за эти четыре года случилось с мобильной разработкой в России. С продажами устройств, с доставкой приложений до живых людей, со стеком, с тем, где сейчас работа.

Скажу сразу: любимой платформы у меня тут нет, болеть ни за кого не собираюсь.

Читать далее

Как мы вдвоем писали кроссплатформенный мессенджер: Compose Multiplatform, SFU на Go и сжатие трафика

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

Как силами двух разработчиков создать мессенджер под шесть платформ на Compose Multiplatform и Go. Рассказываем об оптимизации бандла до 10 МБ, разработке собственного SFU на pion/webrtc и синхронизации сообщений на слабых сетях.

Читать далее

Как я перестал бояться своего TV Box и начал им пользоваться

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

Купил H96Max M9S ради Steam Link, а потом выяснил, что заводская прошивка оставляет слишком много вопросов к безопасности. Рассказываю, что удалось найти при аудите Android TV-приставки, как я отключил опасные функции, включил SELinux Enforcing, обновил WebView и сохранил Steam, Bluetooth и VLC.

Читать далее

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

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

Возвращаюсь со своим еженедельным дайджестом для мобильных разработчиков. В этом выпуске адаптация приложений под iPhone Duo и Shared Transition как требования дизайнеров, прозрачный Яндекс.Навигатор и нативная разработка в Shopify, фронтенд без готового бэкенда, путь к Chaos As A Service, ошибка после оформления подписки, которая приводит к оттоку и многое другое. Заходите!

Читать далее

Тайна кнопочного Android‑смартфона за 900 рублей, который мощнее чем ПК из середины нулевых: разбираем и изучаем девайс

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

Глаза вас не обманывают: речь о новом устройстве. Пару лет назад на Ozon и AliExpress появилась невиданная диковинка: полноценный кнопочный смартфон с 4х-ядерным процессором, поддержкой 4G и Android всего за 800 рублей. Звучит как что-то невероятное, учитывая что даже в условном DNS цена на простые тапики превышает 1.000 рублей, но китайским инженерам удалось добиться этого путём некоторых ухищрений...

Сегодня мы с вами подробно изучим этот смартфон изнутри, узнаем, почему у него всегда тормозит интерфейс несмотря на достаточно мощный 4х-ядерный процессор, и проверим - можно ли пользоваться таким аппаратом как повседневным устройством. Интересно? Тогда жду вас под катом!

Читать далее

Сервер был нужен ради одного заголовка: порт на Dart, future, который ждёт сам себя, и загрузчик без ffmpeg

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

Неделю назад я писал, почему видео из аниме-плеера нельзя просто вставить в <video>. Вывод был такой: нужен серверный видеопрокси, и никуда вы от него не денетесь.

Потом я перенёс тот же проект на телефон, и прокси перестал быть нужен. Не потому, что я придумал обход, а потому, что оба ограничения, из-за которых он существовал, оказались браузерными, а не сетевыми.

Под катом: что именно делал сервер, почему на Android его нет, и что оказалось не переносом библиотеки с Python на Dart, а её переписыванием — вместе с багом, который жил в оригинале, стрелочной функцией в Dart, из-за которой whenComplete начинает ждать сам себя, и релизом, который подписывает не человек.

Читать далее

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

Переносим дизайн-систему в код: риски, решения, лучшие практики

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

Задумались о том, чтобы вынести все UI-компоненты вашего проекта в дизайн систему? Или уже находитесь в процессе её разработки? Тогда эта статься, думаю, будет для вас интересна. И возможно даже поможет избежать потенциальных проблем и оптимизировать процесс её разработки и внедрения в проект.

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

И хотя речь пойдёт о разработке на стеке Jetpack Compose для платформы Android , большинство мыслей и рекомендаций не привязаны к конкретной платформе и технологии.

Итак, поехали...

Как разрабатывать фронтенд без готового бэкенда: инструменты перехвата трафика, мокирования и принцип их работы

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

Всем привет, на связи Дима Котиков! Я все еще люблю разрабатывать под Android/KMP, разбираться с инструментами для упрощения работы и латте на фундучном молоке. За пять лет мобильной разработки я неоднократно сталкивался с ситуацией, когда бэкенд запаздывает, а дедлайн горит. 

Зимой 2026 мы получили задачу: новый финансовый инструмент, дедлайн через три месяца, готовность бэкенда — через полтора. Команда начала работу на моках и успела. В статье я расскажу, какие инструменты перехвата и мокирования трафика помогли нам выпустить фичу в срок без готового бэкенда, как настроить их за один вечер и почему понимание принципов работы TLS и MITM-атаки экономит часы отладки.

Читать далее

Эволюция рендеринга в Zenith Engine: многопоточная загрузка GPU-ресурсов

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

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

Всем привет! Я Андрей, разработчик 3D-графики в 2ГИС.

Если вы пишете рендер на C++ и у вас есть отдельный RenderThread, то, скорее всего, вы уже сталкивались с подобным: данные грузятся в фоне, а вот создание GPU‑ресурсов всё равно происходит в потоке отрисовки через прямое обращение к графическим API Vulkan, Metal, Direct3D 12. И пока RenderThread в длинном цикле создает буферы и текстуры, он не рисует — он стоит, пока не обработает список загруженных ресурсов.

У нас это выглядело так на типичной средней сцене: до появления первого кадра на поток отрисовки приходило 532 текстуры и 2713 буферов, которые удерживали 45 МБ и 20 МБ временной памяти в RAM соответственно. Всё это нужно было доставить до GPU, создать наборы буферов и текстур, далее всё освободить и только потом начинать собирать батчи и рисовать.

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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