RU

NetFix Mobile: как я сделал Android-приложение, которое чинит YouTube, Discord и Telegram на телефоне и ТВ

Сделал Android-приложение, которое одной кнопкой чинит YouTube, Discord и Telegram на телефоне и Smart TV. Оно само подбирает рабочие настройки под…

AndroidKotlinDPITelegramYouTubeDiscordJetpack Composeпроксиркнобход
Habr
RU

Хватит блокировать спам. Пусть все звонки проходят

Антиспам годами играет в одну и ту же игру: спамер звонит, система пытается понять, кто это, сверяет номер с базой, смотрит жалобы, рисует предупреж…

AndroidKotlinInCallServiceTelecom APIROLE_DIALERантиспамтелефонные звонкиCall.answerавтоматический ответспам-звонки
Habr
RU

Экран перестал обновляться, и виноват оказался не ваш код

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

StateFlowSharedFlowKotlin CoroutinesAndroidR8Kotlinуправление состояниемжизненный цикл Androidоптимизация Android-приложенийрелизная сборка
Habr
RU

Почему значок VPN в Android не гарантирует, что VPN действительно работает

Значок VPN в шторке Android говорит только одно: интерфейс существует. Он ничего не говорит о том, реально ли через этот интерфейс сейчас проходит т…

VPNблокировка VPNAndroidвиджетмониторинг сетипроверка VPNKotlinразработка Android-приложенийпубликация в Google Playnetwork capabilities
Habr
RU

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

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

KMPAndroidGradleKotlinkotlin multiplatformмобильная разработкаандроидсборка проектаgradle kotlin dsl
Habr
RU

Конвертация docx на сервере: LibreOffice headless против Apache POI, и где каждый ломается

Задача звучит безобидно: «нам нужно на бэкенде превращать .docx в .html (а иногда .html в .pdf )». В тикете это одна строчка. На практике конвертаци…

конвертация документовApache POILibreOfficedocx в htmlUNO APIheadless LibreOfficeJavaKotlinJODConverterhtml в pdf
Habr
RU

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

На демо корутины выглядят почти безошибочно, но под нагрузкой один неверный выбор области, диспетчера или способа обработки искл…

KotlinкорутиныKotlin Coroutinesструктурная конкурентностьобработка исключенийотмена корутинасинхронное программированиеDispatchersFlowсерверная разработка
Habr
RU

Уведомления на Android без Google: почему UnifiedPush через публичный ntfy у вас не работает

Как вы помните мы делаем мессенджер. Google-сервисы в нашем основном регионе недоступны, значит FCM отпадает, что мы с этим сделали? Стандартный отв…

UnifiedPushntfypush-уведомленияAndroid без GoogleFCMWebPushforeground serviceKotlinself-hostedобход блокировок
Habr
RU

Один фреймворк для Android и iOS: звучит круто, работает?  Нет

Почему единый кроссплатформенный фреймворк для автотестов Android и iOS не работает на практике и когда стоит разделить его на два отдельных проекта…

JavaТестированиеAndroidGitРаспознаваниеiOSРаботаSwiftHRGitLabKotlinФинтехQAПриложениеdevСерверБиблиотекиТестирование приложений и сайтов плюсИнфраструктураСтатьи
Tproger
RU

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

Добавлял в свою читалку офлайн-словари и упёрся в MDX, формат словарей MDict. Проприетарный, официальной спеки от создателей нет. Готовые Java-парсе…

MDXMDictсловарипарсинг форматовKotlinreverse engineeringRIPEMD-128Androidшифрование
Habr
RU

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

Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять  mutableStateOf  со…

Jetpack ComposeAndroidнавигацияModoKotlinrememberSaveableSaveableStateHolderViewModelLifecycleмобильная разработка
Habr
RU

Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом

Если после релиза Android‑приложения вы внезапно получаете краши, утечки памяти и жалобы на пропадающие данные, проблема может скрываться в&nbs…

AndroidKotlinжизненный цикл ActivityFragmentViewModellifecycleScopeутечки памятиSavedStateHandleкорутиныAndroid-разработка
Habr
RU

Девять лет, 514 коммитов и один посёлок: как я делал приложение с расписанием автобусов

Уже девять лет я делаю приложение с расписанием автобусов для посёлка Иртышский в Омской области. И почти всё это время сам там не&nb…

расписание автобусовAndroidKotlinpet-проектинди-разработкахобби-проектGoogle Playмонетизация приложения9 лет разработки
Habr
RU

Как я сделал личный центр управления VLESS для Android TV, потому что устал руками менять конфиги

Привет, Хабр. Меня зовут Валиев Артур. Пока мы активно работаем над EvertyDesk , я продолжаю писать небольшой цикл статей о том, что рождается вокру…

Android TVVLESSVPNVpnServiceKotlinXrayWordPressPHPsplit tunnelAndroid
Habr
RU

Архитектура Android-приложений. Как повысить качество архитектуры, не говоря об архитектуре

Салют, Хабр! Я Марк, Android-разработчик, работаю над мобильным приложением для управления умным домом Салют. Для мира Android-разработки вопросы ар…

доменная система типовKotlinтипыdesign by contractAndroidархитектура приложений
Habr
RU

Сравнение моделей конкурентности JVM языков: Нужен ли еще ThreadPool после coroutines, ZIO и Virtual Threads?

В последней части про модели конкурентности JVM языков мы сравним разные подходы друг с другом. И ответим на вопрос “А зачем теперь тред пулы, если…

JavaJVMKotlinClojureZIOcoroutinesvirtual threadsthread poolsProject Loomconcurrency
Habr
RU

Почему главные конфликты в разработке не связаны с технологиями

Почему конфликты в IT-командах возникают не из-за технологий, а из-за коммуникации, идентичности и инженерной культуры. Разбор споров вокруг Scala,…

Алгоритмы и структуры данныхФункциональное программированиеОпросБотыScalaHRKotlinТимлидLegoСтатьи
Tproger
RU

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

Сотня рекомпозиций в секунду при скролле — это приговор. Приговор батарее устройства, плавности анимаций и вашей репутации как инженера. Мы привыкли…

Jetpack ComposeAndroidRecompositionPerformanceLazyLayoutCustom UIKotlinОптимизацияРендеринг
Habr