home.social

#jetpack_compose — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #jetpack_compose, aggregated by home.social.

fetched live
  1. Погружение в One‑Time Events в Android

    Представьте, перед вами задача – после авторизации пользователя навигировать его на главный экран, или показать snackbar, например, об ошибке. В Android для таких событий есть специальное название – One-Time Events, или же просто Effects – события, которые мы отправляем UI из ViewModel и хотим, чтобы они обработались ровно один раз . И они отличаются от состояния экрана! Состояние существует всегда, а effect отправляется и обрабатывается единожды; в состоянии существуют данные, с которыми user взаимодействует, или которые повторно могут отображаться на экране, когда как effect — совершенно противоположное. Моделировать такой паттерн можно несколькими способами: через состояние, SharedFlow или Channel . В этой статье мы разберем на простом примере каждый подход и обсудим минусы и плюсы, а также обсудим лучшее обходное решение!

    habr.com/ru/articles/1067070/

    #Android #Kotlin #jetpack_compose #MVVM #Effects #One_line_events #Activity

  2. Погружение в One‑Time Events в Android

    Представьте, перед вами задача – после авторизации пользователя навигировать его на главный экран, или показать snackbar, например, об ошибке. В Android для таких событий есть специальное название – One-Time Events, или же просто Effects – события, которые мы отправляем UI из ViewModel и хотим, чтобы они обработались ровно один раз . И они отличаются от состояния экрана! Состояние существует всегда, а effect отправляется и обрабатывается единожды; в состоянии существуют данные, с которыми user взаимодействует, или которые повторно могут отображаться на экране, когда как effect — совершенно противоположное. Моделировать такой паттерн можно несколькими способами: через состояние, SharedFlow или Channel . В этой статье мы разберем на простом примере каждый подход и обсудим минусы и плюсы, а также обсудим лучшее обходное решение!

    habr.com/ru/articles/1067070/

    #Android #Kotlin #jetpack_compose #MVVM #Effects #One_line_events #Activity

  3. Погружение в One‑Time Events в Android

    Представьте, перед вами задача – после авторизации пользователя навигировать его на главный экран, или показать snackbar, например, об ошибке. В Android для таких событий есть специальное название – One-Time Events, или же просто Effects – события, которые мы отправляем UI из ViewModel и хотим, чтобы они обработались ровно один раз . И они отличаются от состояния экрана! Состояние существует всегда, а effect отправляется и обрабатывается единожды; в состоянии существуют данные, с которыми user взаимодействует, или которые повторно могут отображаться на экране, когда как effect — совершенно противоположное. Моделировать такой паттерн можно несколькими способами: через состояние, SharedFlow или Channel . В этой статье мы разберем на простом примере каждый подход и обсудим минусы и плюсы, а также обсудим лучшее обходное решение!

    habr.com/ru/articles/1067070/

    #Android #Kotlin #jetpack_compose #MVVM #Effects #One_line_events #Activity

  4. Одноразовые события в UI (Effect) — StateFlow, Channel или SharedFlow?

    Слышали про Effect — One-Time Events? Когда я о нём узнал — сразу стал использовать этот паттерн в своих ViewModel, дополнительно избавляясь от error: String? и подобных в моём стейте. Однако я столкнулся с тем, что реализовать паттерн Effect можно по-разному. Давайте кратко обсудим каждый способ и выберем самый лучший для вашего проекта!

    habr.com/ru/articles/1065784/

    #kotlin #android #mvi #mvvm #sharedflow #Channel #Jetpack_Compose

  5. Одноразовые события в UI (Effect) — StateFlow, Channel или SharedFlow?

    Слышали про Effect — One-Time Events? Когда я о нём узнал — сразу стал использовать этот паттерн в своих ViewModel, дополнительно избавляясь от error: String? и подобных в моём стейте. Однако я столкнулся с тем, что реализовать паттерн Effect можно по-разному. Давайте кратко обсудим каждый способ и выберем самый лучший для вашего проекта!

    habr.com/ru/articles/1065784/

    #kotlin #android #mvi #mvvm #sharedflow #Channel #Jetpack_Compose

  6. Одноразовые события в UI (Effect) — StateFlow, Channel или SharedFlow?

    Слышали про Effect — One-Time Events? Когда я о нём узнал — сразу стал использовать этот паттерн в своих ViewModel, дополнительно избавляясь от error: String? и подобных в моём стейте. Однако я столкнулся с тем, что реализовать паттерн Effect можно по-разному. Давайте кратко обсудим каждый способ и выберем самый лучший для вашего проекта!

    habr.com/ru/articles/1065784/

    #kotlin #android #mvi #mvvm #sharedflow #Channel #Jetpack_Compose

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

    Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое. В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo .

    habr.com/ru/companies/hh/artic

    #Jetpack_Compose #Android #навигация #Modo #Kotlin #rememberSaveable #SaveableStateHolder #ViewModel #Lifecycle #мобильная_разработка

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

    Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое. В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo .

    habr.com/ru/companies/hh/artic

    #Jetpack_Compose #Android #навигация #Modo #Kotlin #rememberSaveable #SaveableStateHolder #ViewModel #Lifecycle #мобильная_разработка

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

    Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое. В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo .

    habr.com/ru/companies/hh/artic

    #Jetpack_Compose #Android #навигация #Modo #Kotlin #rememberSaveable #SaveableStateHolder #ViewModel #Lifecycle #мобильная_разработка

  10. Топ-10 вопросов с Android-собеседований в 2026 — с разборами

    Думаю, многие из нас успели заметить стремительное изменение рынка в последние пару лет: он плавно превратился из рынка соискателя в рынок нанимателя и, пожалуй, стал наиболее конкурентным и жёстким за всё время существования IT в России. К тому же, старая проблема поиска работы тоже никуда не делась: умение писать классные Android-приложения не всегда гарантирует успешный найм. То, что спрашивают на интервью, и задачи, которые мы решаем каждый день, совпадают далеко не всегда. Поэтому навык прохождения собеседований становится всё важнее. В этой небольшой статье хотел бы разобрать 10 популярных вопросов, с которыми можно столкнуться на собеседованиях по Android в 2026, поехали 🚀 К вопросам

    habr.com/ru/articles/1053262/

    #android #kotlin #jetpack_compose #kotlin_coroutines #kotlin_flow #viewmodel #собеседование #подготовка_к_собеседованию

  11. Топ-10 вопросов с Android-собеседований в 2026 — с разборами

    Думаю, многие из нас успели заметить стремительное изменение рынка в последние пару лет: он плавно превратился из рынка соискателя в рынок нанимателя и, пожалуй, стал наиболее конкурентным и жёстким за всё время существования IT в России. К тому же, старая проблема поиска работы тоже никуда не делась: умение писать классные Android-приложения не всегда гарантирует успешный найм. То, что спрашивают на интервью, и задачи, которые мы решаем каждый день, совпадают далеко не всегда. Поэтому навык прохождения собеседований становится всё важнее. В этой небольшой статье хотел бы разобрать 10 популярных вопросов, с которыми можно столкнуться на собеседованиях по Android в 2026, поехали 🚀 К вопросам

    habr.com/ru/articles/1053262/

    #android #kotlin #jetpack_compose #kotlin_coroutines #kotlin_flow #viewmodel #собеседование #подготовка_к_собеседованию

  12. Топ-10 вопросов с Android-собеседований в 2026 — с разборами

    Думаю, многие из нас успели заметить стремительное изменение рынка в последние пару лет: он плавно превратился из рынка соискателя в рынок нанимателя и, пожалуй, стал наиболее конкурентным и жёстким за всё время существования IT в России. К тому же, старая проблема поиска работы тоже никуда не делась: умение писать классные Android-приложения не всегда гарантирует успешный найм. То, что спрашивают на интервью, и задачи, которые мы решаем каждый день, совпадают далеко не всегда. Поэтому навык прохождения собеседований становится всё важнее. В этой небольшой статье хотел бы разобрать 10 популярных вопросов, с которыми можно столкнуться на собеседованиях по Android в 2026, поехали 🚀 К вопросам

    habr.com/ru/articles/1053262/

    #android #kotlin #jetpack_compose #kotlin_coroutines #kotlin_flow #viewmodel #собеседование #подготовка_к_собеседованию

  13. Пять ошибок при работе с Jetpack Compose, из-за которых тормозит recomposition

    Привет, Хабр! Jetpack Compose в 2026 году стал стандартом разработки UI на Android, но в проектах регулярно повторяется одна и та же история: на экране со списком в пару сотен элементов прокрутка идёт рывками, профайлер показывает скачки кадров до 200 миллисекунд, а команда чешет голову и предлагает откатиться обратно на RecyclerView. Проблема почти всегда не в Compose, а в том, как написан UI: recomposition спроектирован как дешёвая операция, но эта дешевизна работает только при соблюдении ряда правил, которые в документации описаны рассыпанно и часто игнорируются. Разберём пять ошибок, из-за которых производительность Compose-экранов проседает заметно для глаза, и покажем, как их находить и чинить. Ускорить Compose

    habr.com/ru/companies/otus/art

    #jetpack_compose #android #recomposition #мобильные_приложения #Compose_Compiler #оптимизация_UI #производительность_Android

  14. Пять ошибок при работе с Jetpack Compose, из-за которых тормозит recomposition

    Привет, Хабр! Jetpack Compose в 2026 году стал стандартом разработки UI на Android, но в проектах регулярно повторяется одна и та же история: на экране со списком в пару сотен элементов прокрутка идёт рывками, профайлер показывает скачки кадров до 200 миллисекунд, а команда чешет голову и предлагает откатиться обратно на RecyclerView. Проблема почти всегда не в Compose, а в том, как написан UI: recomposition спроектирован как дешёвая операция, но эта дешевизна работает только при соблюдении ряда правил, которые в документации описаны рассыпанно и часто игнорируются. Разберём пять ошибок, из-за которых производительность Compose-экранов проседает заметно для глаза, и покажем, как их находить и чинить. Ускорить Compose

    habr.com/ru/companies/otus/art

    #jetpack_compose #android #recomposition #мобильные_приложения #Compose_Compiler #оптимизация_UI #производительность_Android

  15. Пять ошибок при работе с Jetpack Compose, из-за которых тормозит recomposition

    Привет, Хабр! Jetpack Compose в 2026 году стал стандартом разработки UI на Android, но в проектах регулярно повторяется одна и та же история: на экране со списком в пару сотен элементов прокрутка идёт рывками, профайлер показывает скачки кадров до 200 миллисекунд, а команда чешет голову и предлагает откатиться обратно на RecyclerView. Проблема почти всегда не в Compose, а в том, как написан UI: recomposition спроектирован как дешёвая операция, но эта дешевизна работает только при соблюдении ряда правил, которые в документации описаны рассыпанно и часто игнорируются. Разберём пять ошибок, из-за которых производительность Compose-экранов проседает заметно для глаза, и покажем, как их находить и чинить. Ускорить Compose

    habr.com/ru/companies/otus/art

    #jetpack_compose #android #recomposition #мобильные_приложения #Compose_Compiler #оптимизация_UI #производительность_Android

  16. Backend-Driven UI для умного дома: как обучить сервер верстать интерфейсы

    Привет, Хабр! Я Дмитрий, iOS-разработчик из команды Салют — мы делаем устройства и программное обеспечение для Умного дома Сбер. У нас много собственных устройств и ещё больше устройств брендов-партнёров, которые поддерживает платформа. Релизный круговорот фичей и интеграций заставляет думать: как оптимизировать процесс доставки новых функций пользователям? В статье расскажу про опыт разработки, внедрения и поддержки нашей собственной backend-driven UI парадигмы (BDUI) — подхода, в котором сервер управляет не только данными, но и вёрсткой интерфейсов.

    habr.com/ru/companies/sberdevi

    #iOS #Swift #SwiftUI #Android #Jetpack_Compose #BDUI #BackendDriven_UI #умный_дом #mobile #умныйдомСбер

  17. Backend-Driven UI для умного дома: как обучить сервер верстать интерфейсы

    Привет, Хабр! Я Дмитрий, iOS-разработчик из команды Салют — мы делаем устройства и программное обеспечение для Умного дома Сбер. У нас много собственных устройств и ещё больше устройств брендов-партнёров, которые поддерживает платформа. Релизный круговорот фичей и интеграций заставляет думать: как оптимизировать процесс доставки новых функций пользователям? В статье расскажу про опыт разработки, внедрения и поддержки нашей собственной backend-driven UI парадигмы (BDUI) — подхода, в котором сервер управляет не только данными, но и вёрсткой интерфейсов.

    habr.com/ru/companies/sberdevi

    #iOS #Swift #SwiftUI #Android #Jetpack_Compose #BDUI #BackendDriven_UI #умный_дом #mobile #умныйдомСбер

  18. Backend-Driven UI для умного дома: как обучить сервер верстать интерфейсы

    Привет, Хабр! Я Дмитрий, iOS-разработчик из команды Салют — мы делаем устройства и программное обеспечение для Умного дома Сбер. У нас много собственных устройств и ещё больше устройств брендов-партнёров, которые поддерживает платформа. Релизный круговорот фичей и интеграций заставляет думать: как оптимизировать процесс доставки новых функций пользователям? В статье расскажу про опыт разработки, внедрения и поддержки нашей собственной backend-driven UI парадигмы (BDUI) — подхода, в котором сервер управляет не только данными, но и вёрсткой интерфейсов.

    habr.com/ru/companies/sberdevi

    #iOS #Swift #SwiftUI #Android #Jetpack_Compose #BDUI #BackendDriven_UI #умный_дом #mobile #умныйдомСбер

  19. Интерфейсная биомимимикрия: может ли фрактальная навигация заменить «кладбище иконок» в SuperApp?

    В прошлом посте habr.com/ru/articles/1045002/ я рассказывал про ORDO как про приватный мессенджер с нестандартной навигацией. Но сегодня я хочу отложить тему анонимности и поговорить о чем-то более глобальном — о том, как мы взаимодействуем с информацией в 2026 году. У меня есть гипотеза, и я хочу проверить её вместе с вами.

    habr.com/ru/articles/1046706/

    #ordo #superapp #uxui_дизайн #дизайн_интерфейсов #биомиметика #фрактальная_навигация #пространственная_память #интерфейсы_будущего #jetpack_compose #когнитивная_нагрузка

  20. Интерфейсная биомимимикрия: может ли фрактальная навигация заменить «кладбище иконок» в SuperApp?

    В прошлом посте habr.com/ru/articles/1045002/ я рассказывал про ORDO как про приватный мессенджер с нестандартной навигацией. Но сегодня я хочу отложить тему анонимности и поговорить о чем-то более глобальном — о том, как мы взаимодействуем с информацией в 2026 году. У меня есть гипотеза, и я хочу проверить её вместе с вами.

    habr.com/ru/articles/1046706/

    #ordo #superapp #uxui_дизайн #дизайн_интерфейсов #биомиметика #фрактальная_навигация #пространственная_память #интерфейсы_будущего #jetpack_compose #когнитивная_нагрузка

  21. Интерфейсная биомимимикрия: может ли фрактальная навигация заменить «кладбище иконок» в SuperApp?

    В прошлом посте habr.com/ru/articles/1045002/ я рассказывал про ORDO как про приватный мессенджер с нестандартной навигацией. Но сегодня я хочу отложить тему анонимности и поговорить о чем-то более глобальном — о том, как мы взаимодействуем с информацией в 2026 году. У меня есть гипотеза, и я хочу проверить её вместе с вами.

    habr.com/ru/articles/1046706/

    #ordo #superapp #uxui_дизайн #дизайн_интерфейсов #биомиметика #фрактальная_навигация #пространственная_память #интерфейсы_будущего #jetpack_compose #когнитивная_нагрузка

  22. Impact Analysis в дизайн-системе: как мы сделали CI осмысленнее, а review понятнее

    Меня зовут Даниил, я Android-разработчик в «БКС Мир инвестиций». В первой статье мой коллега рассказывал, как мы использовали Kotlin IR Compiler Plugin, чтобы автоматически добавлять testTag и semantics в Compose-компоненты: Kotlin IR Compiler Plugin в дизайн-системе: автотесты с Compose без ручной разметки . Эта статья — следующий шаг: как мы начали использовать информацию о структуре дизайн-системы, чтобы понимать область влияния изменения.

    habr.com/ru/companies/bcs_comp

    #Android #Design_System #Jetpack_Compose #CI #Impact_Analysis

  23. Impact Analysis в дизайн-системе: как мы сделали CI осмысленнее, а review понятнее

    Меня зовут Даниил, я Android-разработчик в «БКС Мир инвестиций». В первой статье мой коллега рассказывал, как мы использовали Kotlin IR Compiler Plugin, чтобы автоматически добавлять testTag и semantics в Compose-компоненты: Kotlin IR Compiler Plugin в дизайн-системе: автотесты с Compose без ручной разметки . Эта статья — следующий шаг: как мы начали использовать информацию о структуре дизайн-системы, чтобы понимать область влияния изменения.

    habr.com/ru/companies/bcs_comp

    #Android #Design_System #Jetpack_Compose #CI #Impact_Analysis

  24. Impact Analysis в дизайн-системе: как мы сделали CI осмысленнее, а review понятнее

    Меня зовут Даниил, я Android-разработчик в «БКС Мир инвестиций». В первой статье мой коллега рассказывал, как мы использовали Kotlin IR Compiler Plugin, чтобы автоматически добавлять testTag и semantics в Compose-компоненты: Kotlin IR Compiler Plugin в дизайн-системе: автотесты с Compose без ручной разметки . Эта статья — следующий шаг: как мы начали использовать информацию о структуре дизайн-системы, чтобы понимать область влияния изменения.

    habr.com/ru/companies/bcs_comp

    #Android #Design_System #Jetpack_Compose #CI #Impact_Analysis

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

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

    habr.com/ru/articles/1035388/

    #Jetpack_Compose #Android #Recomposition #Performance #LazyLayout #Custom_UI #Kotlin #Оптимизация #Рендеринг

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

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

    habr.com/ru/articles/1035388/

    #Jetpack_Compose #Android #Recomposition #Performance #LazyLayout #Custom_UI #Kotlin #Оптимизация #Рендеринг

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

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

    habr.com/ru/articles/1035388/

    #Jetpack_Compose #Android #Recomposition #Performance #LazyLayout #Custom_UI #Kotlin #Оптимизация #Рендеринг

  28. Как мы считаем досрочное погашение кредита: что реально работает в коде

    Когда я начал делать кредитный трекер, казалось, что финансовая математика — самая простая часть проекта. Формула аннуитета есть в любом учебнике, Excel справляется за пять минут. Я ошибался. Небольшой контекст: до этого я довольно долго не делал ничего для Android — работал в других областях, экосистема успела заметно измениться. Вернуться оказалось неожиданно приятно: Compose после нескольких лет XML-вёрстки ощущается как глоток свежего воздуха, KSP вместо KAPT работает заметно быстрее, а Room с Flow и корутинами — это уже совсем другой уровень удобства по сравнению с тем, что я помнил. Так что статья отчасти и про это: как выглядит возвращение в Android-разработку после перерыва. Под катом — технический разбор того, как на самом деле устроен кредитный калькулятор внутри Android-приложения. С реальным кодом, реальными компромиссами и честным признанием того, что мы намеренно упростили.

    habr.com/ru/articles/1027196/

    #финтех #мобильная_разработка #Android #личные_финансы #Kotlin #Jetpack_Compose #алгоритмы #опыт #personal_finance #money_management

  29. Как мы считаем досрочное погашение кредита: что реально работает в коде

    Когда я начал делать кредитный трекер, казалось, что финансовая математика — самая простая часть проекта. Формула аннуитета есть в любом учебнике, Excel справляется за пять минут. Я ошибался. Небольшой контекст: до этого я довольно долго не делал ничего для Android — работал в других областях, экосистема успела заметно измениться. Вернуться оказалось неожиданно приятно: Compose после нескольких лет XML-вёрстки ощущается как глоток свежего воздуха, KSP вместо KAPT работает заметно быстрее, а Room с Flow и корутинами — это уже совсем другой уровень удобства по сравнению с тем, что я помнил. Так что статья отчасти и про это: как выглядит возвращение в Android-разработку после перерыва. Под катом — технический разбор того, как на самом деле устроен кредитный калькулятор внутри Android-приложения. С реальным кодом, реальными компромиссами и честным признанием того, что мы намеренно упростили.

    habr.com/ru/articles/1027196/

    #финтех #мобильная_разработка #Android #личные_финансы #Kotlin #Jetpack_Compose #алгоритмы #опыт #personal_finance #money_management

  30. Как мы считаем досрочное погашение кредита: что реально работает в коде

    Когда я начал делать кредитный трекер, казалось, что финансовая математика — самая простая часть проекта. Формула аннуитета есть в любом учебнике, Excel справляется за пять минут. Я ошибался. Небольшой контекст: до этого я довольно долго не делал ничего для Android — работал в других областях, экосистема успела заметно измениться. Вернуться оказалось неожиданно приятно: Compose после нескольких лет XML-вёрстки ощущается как глоток свежего воздуха, KSP вместо KAPT работает заметно быстрее, а Room с Flow и корутинами — это уже совсем другой уровень удобства по сравнению с тем, что я помнил. Так что статья отчасти и про это: как выглядит возвращение в Android-разработку после перерыва. Под катом — технический разбор того, как на самом деле устроен кредитный калькулятор внутри Android-приложения. С реальным кодом, реальными компромиссами и честным признанием того, что мы намеренно упростили.

    habr.com/ru/articles/1027196/

    #финтех #мобильная_разработка #Android #личные_финансы #Kotlin #Jetpack_Compose #алгоритмы #опыт #personal_finance #money_management

  31. Anubis: заморозка приложений по состоянию VPN

    Приложения на вашем телефоне могут обнаружить VPN через SOCKS5 на localhost и слить IP-адрес сервера. Рабочий профиль (Island, Insular, Shelter) скрывает VPN от ConnectivityManager, но не от tun0, маршрутов и локальных портов. Так родился open-souce Anubis, решает проблему иначе - автоматически отключает приложения через pm disable-user при смене состояния VPN. Мёртвое приложение не может ничего детектить, потому что его не существует. Под капот Anubis

    habr.com/ru/articles/1023352/

    #Android #VPN #Shizuku #pm_disableuser #приватность #заморозка_приложений #Kotlin #Jetpack_Compose #reverse_engineering #open_source

  32. Anubis: заморозка приложений по состоянию VPN

    Приложения на вашем телефоне могут обнаружить VPN через SOCKS5 на localhost и слить IP-адрес сервера. Рабочий профиль (Island, Insular, Shelter) скрывает VPN от ConnectivityManager, но не от tun0, маршрутов и локальных портов. Так родился open-souce Anubis, решает проблему иначе - автоматически отключает приложения через pm disable-user при смене состояния VPN. Мёртвое приложение не может ничего детектить, потому что его не существует. Под капот Anubis

    habr.com/ru/articles/1023352/

    #Android #VPN #Shizuku #pm_disableuser #приватность #заморозка_приложений #Kotlin #Jetpack_Compose #reverse_engineering #open_source

  33. Anubis: заморозка приложений по состоянию VPN

    Приложения на вашем телефоне могут обнаружить VPN через SOCKS5 на localhost и слить IP-адрес сервера. Рабочий профиль (Island, Insular, Shelter) скрывает VPN от ConnectivityManager, но не от tun0, маршрутов и локальных портов. Так родился open-souce Anubis, решает проблему иначе - автоматически отключает приложения через pm disable-user при смене состояния VPN. Мёртвое приложение не может ничего детектить, потому что его не существует. Под капот Anubis

    habr.com/ru/articles/1023352/

    #Android #VPN #Shizuku #pm_disableuser #приватность #заморозка_приложений #Kotlin #Jetpack_Compose #reverse_engineering #open_source

  34. Разбираем Remote Compose: как Google предлагает строить BDUI

    Технологии Backend-Driven UI уже давно используются во многих компаниях, включая Альфа-Банк. Существует множество реализаций этого подхода, и недавно Google представил собственное решение — Remote Compose . Remote Compose выглядит очень перспективной технологией. Фреймворк активно развивается и поддерживается командой Google. Однако на момент написания статьи технология всё ещё находится в alpha-версии, поэтому использовать её на проде пока рано. Но я изучил этот фреймворк и хочу поделиться своим опытом,а когда Remote Compose выйдет в бета-версию вы будете знать, как с ним работать В статье разберём: — общую концепцию Remote Compose, — чем он отличается от классического BDUI, — какие интересные технические решения используются внутри, — несколько практических примеров использования.

    habr.com/ru/companies/alfa/art

    #android #compose #jetpack_compose #bdui #sdui #google #backenddriven_ui #remote_compose #compose_remote

  35. Разбираем Remote Compose: как Google предлагает строить BDUI

    Технологии Backend-Driven UI уже давно используются во многих компаниях, включая Альфа-Банк. Существует множество реализаций этого подхода, и недавно Google представил собственное решение — Remote Compose . Remote Compose выглядит очень перспективной технологией. Фреймворк активно развивается и поддерживается командой Google. Однако на момент написания статьи технология всё ещё находится в alpha-версии, поэтому использовать её на проде пока рано. Но я изучил этот фреймворк и хочу поделиться своим опытом,а когда Remote Compose выйдет в бета-версию вы будете знать, как с ним работать В статье разберём: — общую концепцию Remote Compose, — чем он отличается от классического BDUI, — какие интересные технические решения используются внутри, — несколько практических примеров использования.

    habr.com/ru/companies/alfa/art

    #android #compose #jetpack_compose #bdui #sdui #google #backenddriven_ui #remote_compose #compose_remote

  36. Разбираем Remote Compose: как Google предлагает строить BDUI

    Технологии Backend-Driven UI уже давно используются во многих компаниях, включая Альфа-Банк. Существует множество реализаций этого подхода, и недавно Google представил собственное решение — Remote Compose . Remote Compose выглядит очень перспективной технологией. Фреймворк активно развивается и поддерживается командой Google. Однако на момент написания статьи технология всё ещё находится в alpha-версии, поэтому использовать её на проде пока рано. Но я изучил этот фреймворк и хочу поделиться своим опытом,а когда Remote Compose выйдет в бета-версию вы будете знать, как с ним работать В статье разберём: — общую концепцию Remote Compose, — чем он отличается от классического BDUI, — какие интересные технические решения используются внутри, — несколько практических примеров использования.

    habr.com/ru/companies/alfa/art

    #android #compose #jetpack_compose #bdui #sdui #google #backenddriven_ui #remote_compose #compose_remote

  37. Как автор книг по Kotlin проверял мой проект: разбор ошибок в Coroutines и архитектуре

    Проведя аудит GitHub, я обнаружил, что полноценных реализаций Gemini-клиента с глубокой проработкой архитектуры практически нет. Я решил стать первым, кто выложит в открытый доступ не просто обертку над API, а готовую архитектурную базу с точным повторением UI оригинального Gemini.

    habr.com/ru/articles/1018040/

    #Android #Kotlin #Coroutines #Jetpack_Compose #AI #Gemini_AI #Structured_Concurrency #Проектирование_систем

  38. Как автор книг по Kotlin проверял мой проект: разбор ошибок в Coroutines и архитектуре

    Проведя аудит GitHub, я обнаружил, что полноценных реализаций Gemini-клиента с глубокой проработкой архитектуры практически нет. Я решил стать первым, кто выложит в открытый доступ не просто обертку над API, а готовую архитектурную базу с точным повторением UI оригинального Gemini.

    habr.com/ru/articles/1018040/

    #Android #Kotlin #Coroutines #Jetpack_Compose #AI #Gemini_AI #Structured_Concurrency #Проектирование_систем

  39. Как автор книг по Kotlin проверял мой проект: разбор ошибок в Coroutines и архитектуре

    Проведя аудит GitHub, я обнаружил, что полноценных реализаций Gemini-клиента с глубокой проработкой архитектуры практически нет. Я решил стать первым, кто выложит в открытый доступ не просто обертку над API, а готовую архитектурную базу с точным повторением UI оригинального Gemini.

    habr.com/ru/articles/1018040/

    #Android #Kotlin #Coroutines #Jetpack_Compose #AI #Gemini_AI #Structured_Concurrency #Проектирование_систем

  40. Как я пытался чинить анимацию в LazyColumn

    Привет, Хабр! Я Витя Стро е ску, последние пять лет в свободное от отдыха время занимаюсь разработкой под Android, три из которых — в команде мобильного оператора Т-Мобайл. Поделюсь с вами опытом попытки конфигурации анимаций для айтемов у Compose LazyColumn. Мы переписывали наш главный экран с XML+View на Jetpack Compose, который состоит из списка с различного рода сложности айтемами. В статье разберем, почему возникает рассинхрон, как устроен механизм анимаций внутри LazyColumn, почему кастомный animateItem обречен с самого начала и к какому решению мы пришли в итоге.

    habr.com/ru/companies/tbank/ar

    #android #android_development #kotlin #compose #jetpack_compose #lazycolumn #animations #expand_collapse #issue #animate_item

  41. Как я пытался чинить анимацию в LazyColumn

    Привет, Хабр! Я Витя Стро е ску, последние пять лет в свободное от отдыха время занимаюсь разработкой под Android, три из которых — в команде мобильного оператора Т-Мобайл. Поделюсь с вами опытом попытки конфигурации анимаций для айтемов у Compose LazyColumn. Мы переписывали наш главный экран с XML+View на Jetpack Compose, который состоит из списка с различного рода сложности айтемами. В статье разберем, почему возникает рассинхрон, как устроен механизм анимаций внутри LazyColumn, почему кастомный animateItem обречен с самого начала и к какому решению мы пришли в итоге.

    habr.com/ru/companies/tbank/ar

    #android #android_development #kotlin #compose #jetpack_compose #lazycolumn #animations #expand_collapse #issue #animate_item

  42. Как я пытался чинить анимацию в LazyColumn

    Привет, Хабр! Я Витя Стро е ску, последние пять лет в свободное от отдыха время занимаюсь разработкой под Android, три из которых — в команде мобильного оператора Т-Мобайл. Поделюсь с вами опытом попытки конфигурации анимаций для айтемов у Compose LazyColumn. Мы переписывали наш главный экран с XML+View на Jetpack Compose, который состоит из списка с различного рода сложности айтемами. В статье разберем, почему возникает рассинхрон, как устроен механизм анимаций внутри LazyColumn, почему кастомный animateItem обречен с самого начала и к какому решению мы пришли в итоге.

    habr.com/ru/companies/tbank/ar

    #android #android_development #kotlin #compose #jetpack_compose #lazycolumn #animations #expand_collapse #issue #animate_item

  43. Todo Budget v5.0: переписал весь UI с нуля на Jetpack Compose — и теперь ищу тех, кто его сломает

    До пятой версии главный экран был функциональным, но визуально скучным. Типичный Material Design без характера. Я получил несколько честных отзывов — в том числе жёстких — и решил переделать всё.

    habr.com/ru/articles/1007530/

    #котлин #мобильная_разработка #приложения_для_android #андроид #kotlin #jetpack_compose #android

  44. Todo Budget v5.0: переписал весь UI с нуля на Jetpack Compose — и теперь ищу тех, кто его сломает

    До пятой версии главный экран был функциональным, но визуально скучным. Типичный Material Design без характера. Я получил несколько честных отзывов — в том числе жёстких — и решил переделать всё.

    habr.com/ru/articles/1007530/

    #котлин #мобильная_разработка #приложения_для_android #андроид #kotlin #jetpack_compose #android

  45. Todo Budget v5.0: переписал весь UI с нуля на Jetpack Compose — и теперь ищу тех, кто его сломает

    До пятой версии главный экран был функциональным, но визуально скучным. Типичный Material Design без характера. Я получил несколько честных отзывов — в том числе жёстких — и решил переделать всё.

    habr.com/ru/articles/1007530/

    #котлин #мобильная_разработка #приложения_для_android #андроид #kotlin #jetpack_compose #android

  46. Не Vibe-Coding, а инженерия с AI: как я за полгода сделал Android-приложение: социальный трекер привычек

    Не Vibe-Coding, а инженерия с AI: Как за полгода я сделал Android-приложение "Трекер привычек" с социальными функциями, синхронизацией, офлайн-режимом и виджетом

    habr.com/ru/articles/1005684/

    #android #kotlin #jetpack_compose #room #firebase #offlinefirst #mobile_development #mobile_architecture #ai_in_development #vibecoding

  47. Не Vibe-Coding, а инженерия с AI: как я за полгода сделал Android-приложение: социальный трекер привычек

    Не Vibe-Coding, а инженерия с AI: Как за полгода я сделал Android-приложение "Трекер привычек" с социальными функциями, синхронизацией, офлайн-режимом и виджетом

    habr.com/ru/articles/1005684/

    #android #kotlin #jetpack_compose #room #firebase #offlinefirst #mobile_development #mobile_architecture #ai_in_development #vibecoding

  48. Не Vibe-Coding, а инженерия с AI: как я за полгода сделал Android-приложение: социальный трекер привычек

    Не Vibe-Coding, а инженерия с AI: Как за полгода я сделал Android-приложение "Трекер привычек" с социальными функциями, синхронизацией, офлайн-режимом и виджетом

    habr.com/ru/articles/1005684/

    #android #kotlin #jetpack_compose #room #firebase #offlinefirst #mobile_development #mobile_architecture #ai_in_development #vibecoding

  49. Как я в одиночку написал полноценное финансовое Android-приложение на Jetpack Compose

    Это не очередной TODO-лист и не очередной трекер расходов. Это комбайн, в котором живут задачи, заметки, бюджет, аналитика, помодоро-таймер и цели накоплений

    habr.com/ru/articles/1003400/

    #android #kotlin #jetpack_compose #room #material_3 #разработка_мобильных_приложений

  50. Как я в одиночку написал полноценное финансовое Android-приложение на Jetpack Compose

    Это не очередной TODO-лист и не очередной трекер расходов. Это комбайн, в котором живут задачи, заметки, бюджет, аналитика, помодоро-таймер и цели накоплений

    habr.com/ru/articles/1003400/

    #android #kotlin #jetpack_compose #room #material_3 #разработка_мобильных_приложений

  51. Как я в одиночку написал полноценное финансовое Android-приложение на Jetpack Compose

    Это не очередной TODO-лист и не очередной трекер расходов. Это комбайн, в котором живут задачи, заметки, бюджет, аналитика, помодоро-таймер и цели накоплений

    habr.com/ru/articles/1003400/

    #android #kotlin #jetpack_compose #room #material_3 #разработка_мобильных_приложений

  52. Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0

    Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0 Привет, Хабр! Продолжаю серию о разработке Todo Budget — Android-приложения, объединяющего задачи, бюджет, заметки и помодоро-таймер в одном месте.

    habr.com/ru/articles/1003034/

    #android #kotlin #jetpack_compose #room #mobile_development

  53. Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0

    Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0 Привет, Хабр! Продолжаю серию о разработке Todo Budget — Android-приложения, объединяющего задачи, бюджет, заметки и помодоро-таймер в одном месте.

    habr.com/ru/articles/1003034/

    #android #kotlin #jetpack_compose #room #mobile_development

  54. Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0

    Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0 Привет, Хабр! Продолжаю серию о разработке Todo Budget — Android-приложения, объединяющего задачи, бюджет, заметки и помодоро-таймер в одном месте.

    habr.com/ru/articles/1003034/

    #android #kotlin #jetpack_compose #room #mobile_development

  55. Как я сделал полностью бесплатное Android-приложение для задач и финансов — и почему не взял ни копейки

    Мне нужен был простой инструмент: список задач, учёт расходов и таймер для фокусировки. Казалось бы — чего проще? Но вот реальность...

    habr.com/ru/articles/1002356/

    #android #kotlin #jetpack_compose #room #бесплатно #задачи #бюджет #помодоро #rustore

  56. Как я сделал полностью бесплатное Android-приложение для задач и финансов — и почему не взял ни копейки

    Мне нужен был простой инструмент: список задач, учёт расходов и таймер для фокусировки. Казалось бы — чего проще? Но вот реальность...

    habr.com/ru/articles/1002356/

    #android #kotlin #jetpack_compose #room #бесплатно #задачи #бюджет #помодоро #rustore

  57. Как я сделал полностью бесплатное Android-приложение для задач и финансов — и почему не взял ни копейки

    Мне нужен был простой инструмент: список задач, учёт расходов и таймер для фокусировки. Казалось бы — чего проще? Но вот реальность...

    habr.com/ru/articles/1002356/

    #android #kotlin #jetpack_compose #room #бесплатно #задачи #бюджет #помодоро #rustore

  58. 250 тестов вручную? Нет, спасибо. Автоматизируем screenshot-тестирование через Compose Preview

    Давайте представим типичную ситуацию для разработчика: вы делаете фичу, код проходит ревью, тесты «зеленые». На первый взгляд все хорошо, вы отправляете её в релиз. А потом на проде обнаруживается визуальный баг: текст наехал на текст, цвет оказался не тот, отступ съехал. Бывало такое? В чем проблема – ведь тесты были пройдены успешно? Дело в том, что юнит-тесты проверяют только логику. Им все равно на то, как выглядит экран. А screenshot-тесты нужно писать вручную в большом количестве. В классическом подходе мы прописываем каждый тест, но что если у вас 50 экранов по 5 состояний на каждый? Так как же быть, если не хочется писать 250 тестов вручную, а проверку сделать нужно? Узнать ответ на вопрос

    habr.com/ru/companies/sovcomba

    #Android #Jetpack_Compose #screenshotтесты #Roborazzi #автоматизация_тестирования #Kotlin #UIтесты #Preview #визуальное_тестирование #cicd

  59. 250 тестов вручную? Нет, спасибо. Автоматизируем screenshot-тестирование через Compose Preview

    Давайте представим типичную ситуацию для разработчика: вы делаете фичу, код проходит ревью, тесты «зеленые». На первый взгляд все хорошо, вы отправляете её в релиз. А потом на проде обнаруживается визуальный баг: текст наехал на текст, цвет оказался не тот, отступ съехал. Бывало такое? В чем проблема – ведь тесты были пройдены успешно? Дело в том, что юнит-тесты проверяют только логику. Им все равно на то, как выглядит экран. А screenshot-тесты нужно писать вручную в большом количестве. В классическом подходе мы прописываем каждый тест, но что если у вас 50 экранов по 5 состояний на каждый? Так как же быть, если не хочется писать 250 тестов вручную, а проверку сделать нужно? Узнать ответ на вопрос

    habr.com/ru/companies/sovcomba

    #Android #Jetpack_Compose #screenshotтесты #Roborazzi #автоматизация_тестирования #Kotlin #UIтесты #Preview #визуальное_тестирование #cicd

  60. 250 тестов вручную? Нет, спасибо. Автоматизируем screenshot-тестирование через Compose Preview

    Давайте представим типичную ситуацию для разработчика: вы делаете фичу, код проходит ревью, тесты «зеленые». На первый взгляд все хорошо, вы отправляете её в релиз. А потом на проде обнаруживается визуальный баг: текст наехал на текст, цвет оказался не тот, отступ съехал. Бывало такое? В чем проблема – ведь тесты были пройдены успешно? Дело в том, что юнит-тесты проверяют только логику. Им все равно на то, как выглядит экран. А screenshot-тесты нужно писать вручную в большом количестве. В классическом подходе мы прописываем каждый тест, но что если у вас 50 экранов по 5 состояний на каждый? Так как же быть, если не хочется писать 250 тестов вручную, а проверку сделать нужно? Узнать ответ на вопрос

    habr.com/ru/companies/sovcomba

    #Android #Jetpack_Compose #screenshotтесты #Roborazzi #автоматизация_тестирования #Kotlin #UIтесты #Preview #визуальное_тестирование #cicd