Kotest: Современный фреймворк для моков и тестов на мультиплатформе
Немного непривычный, в традиционном понимании, фреймворк для написания тестов:
В самой статье еще 9 примеров разных стилей написания тестов. Лучше 1 раз это увидеть...
Сам проект: https://kotest.io/
Немного непривычный, в традиционном понимании, фреймворк для написания тестов:
class StringSpecExample : StringSpec({
"length of hello should be 5" {
"hello".length shouldBe 5
}
})В самой статье еще 9 примеров разных стилей написания тестов. Лучше 1 раз это увидеть...
Сам проект: https://kotest.io/
🥴9👍3😨1
Линтер отдельно для Compose
Если, по каким-то причинам, ваша команда только-только вкатывается в Compose, а бить всех по рукам в каждом втором пулреквесте надоело - вот линтер с кучей правил и бест практисов, делающий это за вас. Решение только для тех кто только-только начинает и не хочет дописывать в базовый линт/detekt очевидные кастомные правила
Кстати, а у detekt полноценный мажорный апгрейд до версии 2.0!
Если, по каким-то причинам, ваша команда только-только вкатывается в Compose, а бить всех по рукам в каждом втором пулреквесте надоело - вот линтер с кучей правил и бест практисов, делающий это за вас. Решение только для тех кто только-только начинает и не хочет дописывать в базовый линт/detekt очевидные кастомные правила
Кстати, а у detekt полноценный мажорный апгрейд до версии 2.0!
GitHub
GitHub - AndroidPoet/compose-guard: Real-time detection of Jetpack Compose best practices and rule violations directly in Android…
Real-time detection of Jetpack Compose best practices and rule violations directly in Android Studio. - AndroidPoet/compose-guard
👍7🔥5❤1
Android Good Reads
Какое совпадение. Пост про вайбкодинг и снова cloudflare упал
Сделать похожую штуку в шуточной манере для своего проекта можно тут:
https://stacktower.io/
https://stacktower.io/
😁5
Android Good Reads
Оркестрация Maestro UI тестов Тесты могут гоняться очень долго, особенно end-2-end. Тут разбирают Maestro фреймворк. В статье гоняют их в Firebase Test Lab, так что время буквально деньги!
Android UI-тесты с Maestro без тяжелой инфраструктуры
Еще немного практики про Maestro тесты.
Не совсем согласен с автором на счет расположения их в
Еще немного практики про Maestro тесты.
Не совсем согласен с автором на счет расположения их в
pre-push, однако такой флоу можно легко поместить в наиболее удобное для вас место.👍4
Если у вас есть свободный час времени, подключайтесь на традиционный новогодний стрим подкаста Подлодка – будем подводить итоги года, рассказывать про наши главные открытия, самые полезные книги и всякое такое. А главное – разыграем среди зрителей Switch 2!
👉Начинаем через 10 минут
👉Начинаем через 10 минут
👎8👍4🥴3❤1
Подборка лучших постов за 2025 год 📱
👉 А как вы работаете с ожиданиями пользователя?
👉 keepScreenOn в Jetpack Compose
👉 Glitch effect в Compose. А тут вышла интересная серия постов. Мы закинули собственную реализацию, а так же сравнительный анализ с шейдерами
👉 Шпаргалка по размещению Composable элементов
👉 Rich Errors в Kotlin 2.4. Анонс был пол года назад, а 2.4 версия еще не близко!
👉 Разбираем порядок вызова DisposableEffect, LaunchedEffect и Composable
👉 С чего мне начать изучать про KMP
👉 Рефлексия по поводу инцидентов cloudflare под конец года
Полезный контент занимает львиную часть топа, но есть и пара мемов, попавших в боль! Ну и вообще, с наступающим, держитесь там, продолжайте ставить реакты к статьям и вести холивары в комментариях!
👉 А как вы работаете с ожиданиями пользователя?
👉 keepScreenOn в Jetpack Compose
👉 Glitch effect в Compose. А тут вышла интересная серия постов. Мы закинули собственную реализацию, а так же сравнительный анализ с шейдерами
👉 Шпаргалка по размещению Composable элементов
👉 Rich Errors в Kotlin 2.4. Анонс был пол года назад, а 2.4 версия еще не близко!
👉 Разбираем порядок вызова DisposableEffect, LaunchedEffect и Composable
👉 С чего мне начать изучать про KMP
👉 Рефлексия по поводу инцидентов cloudflare под конец года
Полезный контент занимает львиную часть топа, но есть и пара мемов, попавших в боль! Ну и вообще, с наступающим, держитесь там, продолжайте ставить реакты к статьям и вести холивары в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5❤3
Так как KMP занимаем отдельное место в моем сердечке - с ним напрямую связана моя работа нынче. Вот вам подборка статей про вкатывание в KMP:
👉 Зачем этот ваш KMP нужон?
👉 Как перекатывать на него свой проект
👉 А как перекатывать всю команду в него?
👉 Истории внедрения, возникшие проблемы и решения
👉 Большой гайд если вы работаете в бигтехе, как внедрить?
👉 Ну и простой пример как сделать апку
👉 Зачем этот ваш KMP нужон?
👉 Как перекатывать на него свой проект
👉 А как перекатывать всю команду в него?
👉 Истории внедрения, возникшие проблемы и решения
👉 Большой гайд если вы работаете в бигтехе, как внедрить?
👉 Ну и простой пример как сделать апку
👍6🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Анимируем смену на темную/светлую тему
Красиво/аккуратно прям как в Telegram клиенте, но без тонны легаси и с поддержкой Compose MP
Github (5⭐️ ) : https://github.com/gleb-skobinsky/ThemeAnimator
Красиво/аккуратно прям как в Telegram клиенте, но без тонны легаси и с поддержкой Compose MP
Github (5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5
Очередная напоминалка от Google Play. 31 Марта 2026 года немного изменится вид иконок в Google Play Store, увеличив радиус скругления.
Я хотел было возмутиться, что им там делать нефиг, но они, на самом деле, подгоняют всё под material3
Гайдлайны тут
Я хотел было возмутиться, что им там делать нефиг, но они, на самом деле, подгоняют всё под material3
Гайдлайны тут
😱7🤣6👍4
Android Good Reads
Продолжаем историю с Glitch эффектом. Как сделать этот же эффект не через Composable, а с помощью Android AGSL shaders. Внутри вас ждет: 👉 Что такое шейдеры 👉 Реализация 👉 Детальный сравнительный анализ производительности обоих подходов В статье очень много…
This media is not supported in your browser
VIEW IN TELEGRAM
Еще про шейдеры
👉 Внутри пошагово, с примерами и объяснениями разбирают применение шейдеров
👉 Это важно, чтоб ваше приложение было более производительное
👉 Чуть более хайповая статья от того же автора про то как сделать Upside-Down эффект из Stranger Things
👉 Про шейдеры на BottomNavBar - совсем простенько, зато юзкейз!
Репозиторий с кодом и примерами: https://github.com/makzimi/glitch-shader
👉 Внутри пошагово, с примерами и объяснениями разбирают применение шейдеров
👉 Это важно, чтоб ваше приложение было более производительное
👉 Чуть более хайповая статья от того же автора про то как сделать Upside-Down эффект из Stranger Things
👉 Про шейдеры на BottomNavBar - совсем простенько, зато юзкейз!
Репозиторий с кодом и примерами: https://github.com/makzimi/glitch-shader
🔥4👍2
Jetpack Compose Memory Leaks: A Reference-Graph Deep Dive
Разбор ошибок при работе с Compose приводящим к утечкам памяти. В итоге:
👉 Чаще используйте
👉 Никогда не храните
👉 Избегайте использования
👉 Используйте
👉 Добавляйте ключи к
👉 Не захватывайте контекст
Разбор ошибок при работе с Compose приводящим к утечкам памяти. В итоге:
👉 Чаще используйте
DisposableEffect(owner) во избежании проблем с зануливанием слушателей👉 Никогда не храните
Composable-лямбды или UI-объекты во ViewModel или синглтонах. Вместо этого храните состояние (StateFlow) и события (SharedFlow)👉 Избегайте использования
GlobalScope и областей видимости всего приложения для работы, связанной с UI👉 Используйте
LaunchedEffect или viewModelScope в зависимости от того, к чьему жизненному циклу привязана задача👉 Добавляйте ключи к
remember. Если объект зависит от X, используйте remember(X)👉 Не захватывайте контекст
Activity в долгоживущие колбэки . Используйте rememberUpdatedState или перепроектируйте архитектуру так, чтобы UI-слой занимался UI-задачами. Актуально не только для ComposeHackernoon
Jetpack Compose Memory Leaks: A Reference-Graph Deep Dive | HackerNoon
Jetpack Compose memory leaks are usually reference leaks. Learn the top leak patterns, why they happen, and how to fix them.
👍10❤2
Compose MP 1.10
👉
👉 Navigation 3 поддерживается, но пока сыровато
👉 Compose Hot Reload стабильный
Не из пресс релиза
👉 Депрекейтнули dependency aliases,
👉 Депрекейтнули
👉 Минимальная версия Kotlin - 2.2.10
👉 Вытащили
👉 Поддержка AGP 9.0.0 - я пытался перехать на AGP 9.0, но то кастомные плагины ломаются, то зависимости перестают работать. Не могу ничего сказать
👉
@Preview теперь и в commonMain👉 Navigation 3 поддерживается, но пока сыровато
👉 Compose Hot Reload стабильный
Не из пресс релиза
👉 Депрекейтнули dependency aliases,
compose.ui теперь всё👉 Депрекейтнули
PredictiveBackHandler 👉 Минимальная версия Kotlin - 2.2.10
👉 Вытащили
DialogProperties и PopupProperties в стабильные 👉 Поддержка AGP 9.0.0 - я пытался перехать на AGP 9.0, но то кастомные плагины ломаются, то зависимости перестают работать. Не могу ничего сказать
👍3🔥3❤1👎1
Android Good Reads
Про Server Driven UI. Ранее автор разбирал ограничение Client Driven UI. А теперь продает нам преимущества SDUI. 👉 Как следует из названия, экраны отрисовываются по инструкциям с сервера 👉 Несмотря на кажущуюся независимость клиента от сервера, ваше приложение…
Remote Compose
Отдельный пласт приложений - SDUI, сложно-тяжко и не всегда нативно выглядит. Можно почитать в предыдущем посте. А тут очень тихо релизнулся нативный аналог. Под релиз даже статья выходила:
https://proandroiddev.com/remotecompose-another-paradigm-for-server-driven-ui-in-jetpack-compose-92186619ba8f
Основная фишка - полная интеграция в
Отдельный пласт приложений - SDUI, сложно-тяжко и не всегда нативно выглядит. Можно почитать в предыдущем посте. А тут очень тихо релизнулся нативный аналог. Под релиз даже статья выходила:
https://proandroiddev.com/remotecompose-another-paradigm-for-server-driven-ui-in-jetpack-compose-92186619ba8f
Основная фишка - полная интеграция в
Compose, что позволяет вам сделать частично динамический кусок вашего интерфейса без встраивания такого монстра как SDUIAndroid Developers
Remote Compose | Jetpack | Android Developers
🔥5👍3
Android Good Reads
JetBrains представила новую IDE - AIR Сделана только для кодинга через агентов, поддерживает только claude (Удивительно, что не их Junie). И что? Я верю что такой стиль разработки прочно впишется на долго и рад видеть не очередной форк VSCode, а IDE от…
AI по чуть чуть и до Android'а добирается. Почти все тулзы уже поддерживают SKILLS - я нашел базовый минимум для Android разработки
https://t.me/androidraft/87
https://t.me/androidraft/87
Telegram
Антоха Разраб c AI
Нашел удобную сеттилку SKILLS и конкретный скилл для Android
https://skills.sh/alinaqi/claude-bootstrap/android-kotlin
Зачем нужны эти скиллы в AI? - проактивное применение правил. Вам не надо переживать что вы забыли указать в контексте или в запросе информацию…
https://skills.sh/alinaqi/claude-bootstrap/android-kotlin
Зачем нужны эти скиллы в AI? - проактивное применение правил. Вам не надо переживать что вы забыли указать в контексте или в запросе информацию…
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Я устал писать боилерплейт в Compose и написал свой Emmet-like плагин для Android Studio
Мы все любим Compose, но "Nesting Hell" и бесконечный бойлерплейт из
Встречайте YARC (Yet Another Rapid Compose) — плагин для Android Studio, который привносит скорость Emmet в разработку Android UI.
Вместо того чтобы писать 15 строк кода вручную, просто наберите:
👉 Быстрее, чем ИИ: Не нужно ждать ответа сервера или исправлять "галлюцинации"
👉 Умнее, чем Live Templates: Поддерживает динамическую вложенность и математику
👉 Open Source: От Android-разработчика для Android-разработчиков
IntelliJ Marketplace
GitHub (11 ⭐️) https://github.com/andrew-malitchuk/yet-another-rapid-compose
Мы все любим Compose, но "Nesting Hell" и бесконечный бойлерплейт из
Column, Row и Modifier убивают продуктивность.Встречайте YARC (Yet Another Rapid Compose) — плагин для Android Studio, который привносит скорость Emmet в разработку Android UI.
Вместо того чтобы писать 15 строк кода вручную, просто наберите:
col/row/txt*3 и нажмите Cmd+Opt+E. Вы мгновенно получите готовое дерево компонентов.👉 Быстрее, чем ИИ: Не нужно ждать ответа сервера или исправлять "галлюцинации"
👉 Умнее, чем Live Templates: Поддерживает динамическую вложенность и математику
👉 Open Source: От Android-разработчика для Android-разработчиков
IntelliJ Marketplace
GitHub (11 ⭐️) https://github.com/andrew-malitchuk/yet-another-rapid-compose
👍15😁9🔥3
Save for later
Новая фича в Google Play консоли. Помогает дробить изменения перед отправкой на ревью. Будет полезно, чтобы не блокировать весь релиз целиком из-за сторонних изменений.
Новая фича в Google Play консоли. Помогает дробить изменения перед отправкой на ревью. Будет полезно, чтобы не блокировать весь релиз целиком из-за сторонних изменений.
👍5🔥3
Навыки, которые мы теряем, пока AI делает скучную работу
Чот я всё хвалю и хвалю AI, надо и поругать в сегодняшней статье. Автор проводит параллель с пилотами, которые теряют навыки ручного управления из-за надежды на автопилот, и утверждает, что то же самое происходит сейчас с разработчиками
👉 Скука — это тренировка. Написание тестов, документации и бойлерплейта — это не просто рутина. Это «повторения», которые формируют интуицию и помогают предугадывать баги и граничные сценарии
👉 Невидимая атрофия. Потеря навыка происходит незаметно. Вы по-прежнему закрываете тикеты, метрики выглядят хорошо, но способность глубоко понимать систему и находить сложные баги (которые AI пропускает) исчезает
👉 Иллюзия продуктивности. Ссылаясь на исследования (включая отчет GitClear 2025), автор отмечает, что с приходом AI количество рефакторинга упало, а копипасты — выросло. Опытные инженеры могут даже замедляться, используя AI, не замечая этого
Отказываться от AI глупо, но важно не превратиться в оператора, который не может работать без инструмента. Решение — периодически писать код и тесты самому, чтобы поддерживать форму
Чот я всё хвалю и хвалю AI, надо и поругать в сегодняшней статье. Автор проводит параллель с пилотами, которые теряют навыки ручного управления из-за надежды на автопилот, и утверждает, что то же самое происходит сейчас с разработчиками
👉 Скука — это тренировка. Написание тестов, документации и бойлерплейта — это не просто рутина. Это «повторения», которые формируют интуицию и помогают предугадывать баги и граничные сценарии
👉 Невидимая атрофия. Потеря навыка происходит незаметно. Вы по-прежнему закрываете тикеты, метрики выглядят хорошо, но способность глубоко понимать систему и находить сложные баги (которые AI пропускает) исчезает
👉 Иллюзия продуктивности. Ссылаясь на исследования (включая отчет GitClear 2025), автор отмечает, что с приходом AI количество рефакторинга упало, а копипасты — выросло. Опытные инженеры могут даже замедляться, используя AI, не замечая этого
Отказываться от AI глупо, но важно не превратиться в оператора, который не может работать без инструмента. Решение — периодически писать код и тесты самому, чтобы поддерживать форму
freedium-mirror.cfd
The Skills You're Losing While AI Handles the Boring Parts | by Alvis Ng - Freedium
There's a moment you recognize after you've been using AI long enough.
💯18👍6😱3👌2🔥1
Android Studio Panda 1 | 2025.3.1 Canary 5
Обрастает фичами. Хотелось бы верить что по клику на
Это градловая таска, которую он запихивает в агента, чтобы там уже править ошибки. Спасибо 😡
Обрастает фичами. Хотелось бы верить что по клику на
Update all libraries with AI агент сходит, посмотрит релиз ноутсы, сопоставит зависимости, подскажет или сам поправит минорные изменения, но нетЭто градловая таска, которую он запихивает в агента, чтобы там уже править ошибки. Спасибо 😡
😁14😱2
Shared Internals: кросс-модульная видимость
Разбираем KEEP-0451, предлагающий ввести
Кратко весь сехматоз описывают так
Сценарий простой и вы с ним сталкивались в многомодульном приложении: модуль с тестами хочет иметь доступ к internal функциям основного модуля.
Как по мне, это извращенная
Оригинальный KEEP-0451 почитать тут
Разбираем KEEP-0451, предлагающий ввести
shared internal, как еще один скоуп видимости внутри модуля и некоторых зависящих модулейКратко весь сехматоз описывают так
A ──shares──▶️ B ──shares──▶️ C
C имеет доступ к A shared internals
Сценарий простой и вы с ним сталкивались в многомодульном приложении: модуль с тестами хочет иметь доступ к internal функциям основного модуля.
Как по мне, это извращенная
friends декларация из плюсов. Плохо ли? Оригинальный KEEP-0451 почитать тут
🤯5😐3😢2