Обновить
256K+

Android *

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

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

Мобильный Vivaldi 8.0 — Лучший браузер для лета

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

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

Читать далее

Новости

Как я разработал PoC-конструктор для приложений Android

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

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

Читать далее

Gradle под капотом: как перестать страдать и заставить сборку летать

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

Привет, Хабр! На связи «Исходный Код». Сегодня разбираем инструмент, который мы все запускаем по сто раз на дню, но часто воспринимаем как черный ящик. Без него мы бы до сих пор собирали проекты руками, писали скрипты на bash и страдали от вечного «у меня собирается, а у тебя нет».

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

Читать далее

Как получить root на Urovo DT40 Pro (CT48): Android 12 (Проверено на практике)

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

Терминалы сбора данных (ТСД) - это не смартфоны. Производители корпоративного оборудования, такие как Urovo, стараются намертво закрывать систему: нет открытых прошивок, а Fastboot ведёт себя нестандартно, нет мануалов.

Читать далее

Capacitor: от веба к мобильным приложениям. Часть 4. Интегрируем локальный LLM в проект

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

В этой уже 5 по счету статье мы поговорим про актуальность локального AI в мобильных приложениях а также займемся интеграцией плагина для локальных LLM в Capacitor приложение.

Читать далее

Глубокая интеграция месседжинга с бизнес процессами в фреймворке NodaLogic

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

В NodaLogic добавились чаты и мессенджинг в широком смысле (как доставка сообщений и как пользовательские чаты) и это имеет целью стереть границы между классическим интерфейсом работы с бизнес-процессами и лентой чата, создать глубоко интегрированную пользовательскую среду работы с документами и событиями, а в будущем – переиспользование этой инфраструктуры для LLM. Кроме того инфраструктура обмена сообщениями используется для обмена между объектами и обработчиками, а не только в "человекочитаемых" чатах что позволяет разработчику избавиться от многих забот по организации обменов данными.

Читать далее

Мессенджер HalChat теперь в Google Play: 3 года разработки, ИИ в браузере и квест с модерацией

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

Всем привет!

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

Далее: итоги разработки, локальный ИИ в браузере без сторонних серверов и история о том, как я проходил квест с новыми жесткими правилами тестирования в Google Play.

Читать далее

Мобильная разработка за неделю #631 (18 — 24 мая)

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

В новом дайджесте лаги Телеграм на флагманах и анонсы Google I/O 2026, переезд с XML на Jetpack Compose и новый Flutter с Dart-ом, счет на €3167от ошибки в Firebase двухлетней давности, как Apple боролась с мошенничеством в App Store в 2025, ИИ-система code-review от DoorDash, которая действительно работает, и многое другое. Заходите!

Читать далее

Мессенджер Ласточка. Нас не пустили в Rustore

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

Короткий пост про текущий статус по развитию мессенджера.

Последние два месяца мы занимались бумажной работой. Той самой, которую стартапы обычно откладывают до последнего, а потом делают в пожарном режиме. Мы решили пойти иначе: сначала закрыть все юридические вопросы, потом запускать пользователей. В итоге получили официальный ответ Роскомнадзора, подали уведомление об обработке персональных данных, открыли whitelist-доступ для первых тестеров. Обо всём по порядку.

Читать далее

Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения

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

Меня зовут Родион, и я уже около 2,5 лет работаю в VK Android-разработчиком в крупном многомодульном проекте с сотнями экранов и довольно большой аудиторией. Когда я попал на проект, стек был классическим и проверенным: XML-вёрстка, навигация через Cicerone, Dagger 2 для DI, Coroutines и Flow для асинхронщины, а в качестве архитектурного паттерна — MVVM. 

Рано или поздно любая растущая кодовая база упирается в потолок своих архитектурных решений. У нас этот момент настал, когда количество экранов выросло до нескольких сотен и команда начала тратить больше времени на борьбу с неконсистентным состоянием UI. Классическая связка XML + ViewBinding + MVVM работала, но с каждым новым экраном мы всё острее чувствовали её ограничения: разрозненные StateFlow, дублирование кода во фрагментах, сложность переиспользования компонентов. 

Нужно было что-то менять — пересмотреть сам подход к построению UI. Так мы начали миграцию на Jetpack Compose (который на момент начала перехода уже был стабильным и самодостаточным). Полтора года спустя, пройдя через рефакторинг базовых классов, переход с MVVM на MVI и постепенную замену содержимого всех фрагментов, мы получили стек, на котором разработка ускорилась, а баги, связанные с состоянием экрана, практически исчезли. 

Полный переход на Jetpack Compose мы разделили на три больших этапа:

- переписываем содержимое всех фрагментов на ComposeView;

- переходим с Dagger2 на Koin;

- меняем навигацию с Cicerone на Compose-навигацию.

О втором и третьем этапах кратко расскажу ниже —  в главе стратегии перехода, а на первом этапе остановлюсь подробнее.

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

Читать далее

Flutter 3.44 Конец эпохи CocoaPods и начало расцвета Swift Package Manager

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

Экосистема Flutter совершила один из самых значительных скачков вперед. С выходом Flutter 3.44 команда официально сделала Swift Package Manager (SwiftPM) менеджером зависимостей по умолчанию для iOS и macOS, ознаменовав начало конца эпохи CocoaPods.

Но это еще не все. Этот релиз также знаменует собой серьезный архитектурный сдвиг в том, как поставляются виджеты Material и Cupertino. Давайте углубимся в детали.

Читать далее

Не только смартфоны: 5 сфер, где нужны мобильные разработчики

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

Хабр, привет! Меня зовут Борис Денисенко. Я мобильный разработчик и наставник на курсе «Android-разработчик» в Яндекс Практикуме. У себя в блоге я пишу про Android Automotive OS, но сегодня отойду от частностей и расскажу, в каких ещё сферах может работать мобильный разработчик, если он не занимается приложениями для смартфонов и планшетов.

Читать далее

Немного извращений из мира прокси и VPN

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

XTLS-Reality, XHTTP, Naiveproxy и всякие там AnyTLS - это не интересно. Давайте копнем чуть глубже и посмотрим, где прячется настоящее безумие. Особенно учитывая, что мы живем во времена, когда даже самые, казалось бы, безумные вещи, могут оказаться весьма полезными чтобы не сойти с ума.

Читать далее

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

Мобильная разработка за неделю #630 (11 — 17 мая)

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

Возвращаемся после небольшого майского перерыва с новым дайджестом - советы и хитрости Xcode 16 и как добиться 0 рекомпозиций в сложном кастомном UI, три раунда войны с Android-клавиатурой в WebView и обновление без разрешения пользователя, 10 оптимизаций Swift, которые улучшат производительность, тестирование Compose по-новому, декларативная навигация для Flutter, под капотом перезапуска приложения Бургер Кинг и многое другое. Заходите!

Читать далее

Push-уведомления в мессенджере: production-грабли которых нет в туториалах

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

Это девятая статья про инженерные решения в ONEMIX. Тема узкая, push-уведомления. Но я её давно хотел разобрать, потому что туториалов в интернете много, а production-граблей в них почти нет.

Если коротко, туториал по push выглядит так. Регистрируешь токен через Notifications.getExpoPushTokenAsync(). Отправляешь на бэкенд. Когда приходит пуш — addNotificationResponseReceivedListener ловит тап, навигируешь в нужный экран. Всё.

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

Читать далее

Как собрать пайплайн с LLM агентом который фиксит нативные Android UI автотесты

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

Что будем делать или что может быть интересного в статье:

- Пайплайн из двух независимых LLM агентов

- Запуск и анализ ошибки UI автотеста (Root Cause Analysis)

- Фикс автотеста в цикле с его запуском.

- Кастомизация MCP инструментов чтобы оптимизировать контекстное окно.

- Система приоритетов в работе LLM агентов.

Читать далее

Mission Impossible: как добиться 0 рекомпозиций в сложном кастомном UI

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

Сотня рекомпозиций в секунду при скролле — это приговор. Приговор батарее устройства, плавности анимаций и вашей репутации как инженера. Мы привыкли мыслить высокоуровневыми абстракциями: закинуть LazyColumn, добавить пару Modifier.padding и отправить в продакшен. Но что делать, когда стандартные компоненты начинают "захлебываться", а Layout Inspector горит красным от избыточных отрисовок?

Читать далее

Swagger-генерация на Android. Часть 1. Каких проблем нам подкинул бекенд и Android проект

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

Если ваше мобильное приложение общается с бэкендом, значит, скорее всего, живёт по контракту в виде OpenAPI-схемы. Смотреть на неё удобнее всего в Swagger, а все изменения в API можно отслеживать вручную.

Если проект начнёт расти, а ручная проверка станет дорогой и будет ломаться, на помощь придёт автогенерация из OpenAPI. Но в многомодульном Android-приложении точно всплывут нюансы: где хранить код, как не тянуть лишнее, как вписать сгенерённый код в архитектуру?

Привет! Меня зовут Дима Максимов, я Android-разработчик в Дринкит. Этой статьёй я открываю цикл, в котором мы разберёмся, как настроить генерацию из Swagger в Kotlin-код и как обуздать автогенерацию в условиях многомодульного проекта.

Читать далее

Создавая SetupWizard для кастомной AOSP: на что обратить внимание

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

Что скрыто за реализацией Setup Wizard на любом Android-устройстве? Как получается, что системное приложение появляется один раз при первом запуске, а потом исчезает? Можно ли сразу накатить свой Setup Wizard на устройство и точно ли нужно писать свою реализацию этапа настройки блокировки экрана? 

Меня зовут Олеся Шилова. Я инженер-программист в отделе разработки приложений в YADRO. Вместе с коллегами разрабатываю системные приложения операционной системы kvadraOS. Недавно я работала над «Мастером настройки» и сегодня хочу рассказать, как это приложение работает в AOSP и с какими подводными камнями можно столкнуться при его создании. Заодно покажу примеры конфигурации. 

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

Читать далее

«У нас было 230 тысяч строк легаси-кода». Как мы изменяли приложение «Настройки»

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

Привет, Хабр! Меня зовут Александр. В YADRO я разрабатываю приложения внутри оболочки kvadraOS: да, у нас есть своя оболочка на основе AOSP — в команде One UI, Color OS и MiUi прибыло. 

Сегодня расскажу о тайнах и тонкостях приложения «Системные настройки» — это наша реликвия, очень старое приложение с нагромождением костылей стилей и подходов. Когда наша команда взялась его перерабатывать, у нас было 230 000 строк legacy-кода на Java и около 300 активностей и фрагментов. Как вы понимаете, задача была не из легких.

Через что нам пришлось пройти, чтобы улучшить приложение, и почему мы не убежали не переписали его с нуля, расскажу дальше. Спойлер: было жестко, но все закончилось хорошо. Теперь у нас есть все основания утверждать, что работа над «внутренностями» Android — это высшая лига.

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