https://itnext.io/dependency-injection-with-koin-the-minimal-setup-kmp-d696ae2db09f
Автор показывает DI с Koin в Compose Multiplatform - только база, без воды.
Два слова, которые нужно знать:
Правило: используй factory по умолчанию. Синглтоны живут в памяти пока жив Koin - злоупотребишь, заплатишь.
val koinConfiguration = KoinConfiguration {
modules(module {
factory { Engine(fuel = get()) }
single { Software(engine = get()) }
})
}
@Composable
fun App() = KoinApplication(configuration = koinConfiguration) {
val software = koinInject<Software>()
}
Для KMP - одна зависимость. Никаких platform-specific настроек.
——————
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍8🔥3
ИИ ломает высшее образование? Где учиться на программиста / ЧТУК
Youtube
Youtube
Youtube
Образование столкнулось с новыми вызовами. Как меняются процессы в университетах, что станет с нежелающими адаптироваться и какие результаты видны сейчас. Обсудили это с Павлом Клепининым, проректором по цифровизации в РАНХиГС
Приятного просмотра!
Youtube
Youtube
Youtube
Образование столкнулось с новыми вызовами. Как меняются процессы в университетах, что станет с нежелающими адаптироваться и какие результаты видны сейчас. Обсудили это с Павлом Клепининым, проректором по цифровизации в РАНХиГС
Приятного просмотра!
YouTube
ИИ ломает высшее образование? Где учиться на программиста / ЧТУК
Заказать стол можно по ссылке -
Промокод MobileDev дает скидку 10% на все столы или опции к ним
Реклама. ООО "СофтЭффект" ИНН 7735575262 CQH36pWzJqCcH5WrdP89cLmc9N7WWA76NeZeJ8zP8KTic7
Полный курс по Android от Middle до Senior - https://mobiledeveloper.tech/maw…
Промокод MobileDev дает скидку 10% на все столы или опции к ним
Реклама. ООО "СофтЭффект" ИНН 7735575262 CQH36pWzJqCcH5WrdP89cLmc9N7WWA76NeZeJ8zP8KTic7
Полный курс по Android от Middle до Senior - https://mobiledeveloper.tech/maw…
❤9🤷♂6🤣1🎅1
Forwarded from Алексей Гладков
О, ну ваша реакция заслуживает опроса. Итак конфы
Anonymous Poll
3%
Супер-полезные, постоянно хожу, готов даже пойти за свой счет
14%
Конфы полезные, там есть много интересного, но за свой счет максимум если будет супер дешевая цена
34%
Ну хожу, иногда что-то бывает полезное, но только если кто-то оплатит (компания, например)
12%
Не, бесполезная фигня, не пойду даже если компания оплатит
4%
Хожу только как спикер/участник
32%
Узнать результат
https://github.com/JetBrains/kotlin/releases/tag/v2.3.10
Вышел Kotlin 2.3.10 - патч-релиз с критическими исправлениями компилятора, включая data race в kotlinx.serialization, проблемы с type casting, и улучшения совместимости с Compose compiler.
• Исправлена data race при регистрации расширений protobuf-плагина - ранее вызывала непредсказуемые ошибки чтения метаданных в многопоточных сборках;
• Убран ClassCastException при приведении kotlin.UInt к java.lang.Number в compile-time константах
• Стабилизировано разрешение EnhancedNullability (проблемы с null-safety в неиспользуемом коде)
• Регресс в аннотации @NoInfer начиная с 2.2.20
• NoWhenBranchMatchedException в when-выражениях с non-sealed классами
sealed class Sealed
abstract class SubAbstract: Sealed()
class BranchB: SubAbstract()
fun takeSealed(): Sealed = BranchB()
fun foo() {
val isExhaustive = when (val x = takeSealed()) {
!is BranchB -> {
}
}
}
• Ошибка "Unsupported class file version 69" (Java 21) при генерации Compose mappings
• Добавлена генерация stack trace mappings для Compose compiler
• Возвращена поддержка androidTarget для AGP < 9
• Обновлены NPM-зависимости для JS/Wasm таргетов
———————
Более полно - в описании патч-релиза
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉8
Claude in Mobile MCP 2.10.0 Released
https://github.com/AlexGladkov/claude-in-mobile/releases/tag/v2.11.0
👉 Добавил новый tool для работы с пермишнами (дать пермишн, отозвать пермишн и тд). Работает на Android и iOS
👉 Добавил annotate screenshots. Теперь скриншоты приходят заранее размеченные, что экономит примерно 500-1000 токенов на каждый вызов
👉 Добавил юнит тесты. Пора уже, а то контрибуторов становится сильно больше и нужно хотя бы не ломать старое
P.S. Сразу же зарелизил версию 2.11.0
👉 Добавил batch комманд (сразу засылать пачкой 3-4-5 команд для экономии токенов)
👉 Добавил параллельность исполнения для Android
👉 Добавил assertions (проверки что элемент виден, что на него можно кликнуть и тд)
👉 Поправил несколько багов на iOS
👉 Добавил tool get_webview, который позволяет работать с элементами webview в приложениях
👉 Сделал ошибки от ADB/systemctl и тд более человекочитаемыми, а не просто generic ADBNotFound
https://github.com/AlexGladkov/claude-in-mobile/releases/tag/v2.11.0
👉 Добавил новый tool для работы с пермишнами (дать пермишн, отозвать пермишн и тд). Работает на Android и iOS
👉 Добавил annotate screenshots. Теперь скриншоты приходят заранее размеченные, что экономит примерно 500-1000 токенов на каждый вызов
👉 Добавил юнит тесты. Пора уже, а то контрибуторов становится сильно больше и нужно хотя бы не ломать старое
P.S. Сразу же зарелизил версию 2.11.0
👉 Добавил batch комманд (сразу засылать пачкой 3-4-5 команд для экономии токенов)
👉 Добавил параллельность исполнения для Android
👉 Добавил assertions (проверки что элемент виден, что на него можно кликнуть и тд)
👉 Поправил несколько багов на iOS
👉 Добавил tool get_webview, который позволяет работать с элементами webview в приложениях
👉 Сделал ошибки от ADB/systemctl и тд более человекочитаемыми, а не просто generic ADBNotFound
GitHub
Release v2.10.0 · AlexGladkov/claude-in-mobile
What's New in v2.10.0
New Tools
Permission Management
grant_permission — Grant app permissions programmatically
Android: runtime permissions (android.permission.CAMERA, android.permission.ACC...
New Tools
Permission Management
grant_permission — Grant app permissions programmatically
Android: runtime permissions (android.permission.CAMERA, android.permission.ACC...
🔥7
Forwarded from Алексей Гладков
Guardian CLI 0.1.2 Released
https://github.com/AlexGladkov/guardian-cli
Небольшая предыстория. Пока я работал руководителем множества команд я постоянно ловил одну и ту же проблему. Когда над проектом работает много людей есть проблема договоренностей. Сколько бы люди ни договаривались, ни вносили это в конфлюенс какой-нибудь, все равно все договоренности нарушаются и причин на это несколько
👉 Люди забывают договоренности
👉 Люди считают что "1 раз не копипаст"
👉 Людям не нравятся договоренности
👉 Люди не знали про наличие договоренностей (проблема новичка)
👉 Причины договоренностей могут исчезать и они могут устаревать
Поэтому, я создал инструмент, который призван решить эту проблему и назвал его Guardian
Что это такое? Это CLI tools, который работает поверх git и соединяется с любой LLM (даже локальной) и все хранится в гите.
Флоу очень простой
1. Есть служебная папка .agreements и в ней хранится конституция проекта. В конституции прописано кто принимает решения, каким способом принимаются решения (кворум, большинство, 2/3 или единогласно), есть ли файлы исключения и так далее
2. Дальше можно либо через
Почему это важно (особенно сегодня)?
👉 Уходит элемент человеческих сложных взаимоотношений и есть некие непредвзятый судья, который просто проверяет факты и здесь уже нет личного отношения и просто соблюдаются файлы
👉 Весь процесс изменений очень понятен и работает последовательно и все понимают, что происходит и почему
👉 Можно поднять историю голосований и понять как вы пришли к такому решению и почему есть какое-то правило
👉 Проверка идет недетерминировано, то есть regexp может не поймать, а LLM точно поймает
👉 В условиях когда код уже практически не пишется - это очень хорошо позволяет поймать потенциально места, где код пошел куда-то не туда
+ Есть возможность сгенерировать понятный onboarding, чтобы не объяснять почему мы не деплоимся по средам
+ Можно задавать правила, которые нельзя уложить в regexp (типа того же не деплоимся по средам)
+ Можно получить понятное объяснение почему так и сразу же сделать новый proposal
Все подробности ридми. Очень буду рад вашим Issues
P.S. Вот живой пример работы - https://github.com/AlexGladkov/JetHabit/pull/39
Тут было правило на запрет магических цифр
P.P.S. Кстати, это можно прям встроить в SKILL для вашего агента и он са проверит и если что поправит под договоренности принятые на вашем проекте
https://github.com/AlexGladkov/guardian-cli
Небольшая предыстория. Пока я работал руководителем множества команд я постоянно ловил одну и ту же проблему. Когда над проектом работает много людей есть проблема договоренностей. Сколько бы люди ни договаривались, ни вносили это в конфлюенс какой-нибудь, все равно все договоренности нарушаются и причин на это несколько
👉 Люди забывают договоренности
👉 Люди считают что "1 раз не копипаст"
👉 Людям не нравятся договоренности
👉 Люди не знали про наличие договоренностей (проблема новичка)
👉 Причины договоренностей могут исчезать и они могут устаревать
Поэтому, я создал инструмент, который призван решить эту проблему и назвал его Guardian
Что это такое? Это CLI tools, который работает поверх git и соединяется с любой LLM (даже локальной) и все хранится в гите.
Флоу очень простой
1. Есть служебная папка .agreements и в ней хранится конституция проекта. В конституции прописано кто принимает решения, каким способом принимаются решения (кворум, большинство, 2/3 или единогласно), есть ли файлы исключения и так далее
2. Дальше можно либо через
guardian check, либо на CI встроить проверку нарушены ли были договоренности и какие именно. Также договоренности можно отозвать, изменить или какие-то новые продвинутьПочему это важно (особенно сегодня)?
👉 Уходит элемент человеческих сложных взаимоотношений и есть некие непредвзятый судья, который просто проверяет факты и здесь уже нет личного отношения и просто соблюдаются файлы
👉 Весь процесс изменений очень понятен и работает последовательно и все понимают, что происходит и почему
👉 Можно поднять историю голосований и понять как вы пришли к такому решению и почему есть какое-то правило
👉 Проверка идет недетерминировано, то есть regexp может не поймать, а LLM точно поймает
👉 В условиях когда код уже практически не пишется - это очень хорошо позволяет поймать потенциально места, где код пошел куда-то не туда
+ Есть возможность сгенерировать понятный onboarding, чтобы не объяснять почему мы не деплоимся по средам
+ Можно задавать правила, которые нельзя уложить в regexp (типа того же не деплоимся по средам)
+ Можно получить понятное объяснение почему так и сразу же сделать новый proposal
Все подробности ридми. Очень буду рад вашим Issues
P.S. Вот живой пример работы - https://github.com/AlexGladkov/JetHabit/pull/39
Тут было правило на запрет магических цифр
P.P.S. Кстати, это можно прям встроить в SKILL для вашего агента и он са проверит и если что поправит под договоренности принятые на вашем проекте
GitHub
GitHub - AlexGladkov/guardian-cli: Simple LLM tool to check and create project agreements
Simple LLM tool to check and create project agreements - AlexGladkov/guardian-cli
🔥9❤2
https://proandroiddev.com/building-a-claude-skill-xml-to-jetpack-compose-converter-bc4b68268499
Автор устал от inconsistent конверсий Claude: Material 2 вместо 3, неправильный порядок модификаторов, пропущенные атрибуты. Решил научить Claude делать правильно.
✍️ Что такое Claude Skills?
Инструкции, которые Claude загружает для domain-specific задач. Документируешь паттерны один раз - Claude следует им всегда.
Структура:
xml-to-compose/
├── SKILL.md # Ядро правил
├── references/ # Маппинги (подгружаются по требованию)
└── assets/examples/
Внутри скилла:
→ Маппинги 20+ виджетов (TextView → Text, RecyclerView → LazyColumn)
→ Правила конверсии атрибутов (margin → Spacer, visibility → if)
→ Порядок модификаторов - где Claude чаще всего лажает
——————
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥7🐳2
🚀 Android Studio Panda 1 (2025.3.1) stable
https://developer.android.com/studio/releases
Вышла стабильная версия Android Studio Panda 1 (2025.3.1) с упрощённым управлением JDK через Gradle Daemon JVM Criteria и новыми экспериментальными AI-функциями в Studio Labs.
👉 Упрощённое управление JDK с помощью Gradle Daemon JVM Criteria
Gradle теперь автоматически определяет совместимый JDK для вашего проекта или загружает необходимую версию, если она не найдена локально. Функция стабилизирована в Gradle 9.2.0 и включена по умолчанию для новых проектов.
Как включить для существующих проектов:
Настройки доступны в Settings > Build, Execution, Deployment > Build Tools > Gradle
👉 Studio Labs - экспериментальные AI-функции
Доступны новые AI-возможности в стабильной версии Android Studio:
• Создание Compose Preview - Gemini автоматически генерирует предварительные просмотры Compose, включая фиктивные данные для параметров, для конкретного или всех компонентов в файле.
• Трансформация UI - обновление пользовательского интерфейса приложения на естественном языке прямо из панели предварительного просмотра Compose.
• Journeys for Android Studio - описание шагов и утверждений для end-to-end тестирования на естественном языке.
👉 Дополнительные улучшения
• Расширенная совместимость - поддержка Android Gradle Plugin (AGP) версий 4.0-9.0
• Новая политика облачных сервисов - интеграция с Gemini, Play Vitals и Firebase Crashlytics доступна в стабильной версии и основных релизах за последние 10 месяцев
—————
💭 Возможно обновиться стоит ради упрощения JDK management. Но делайте это на свой страх и риск - уже появились сообщения в наших чатиках, что "впслывают баги". Или подождать до появления патчей)
https://developer.android.com/studio/releases
Вышла стабильная версия Android Studio Panda 1 (2025.3.1) с упрощённым управлением JDK через Gradle Daemon JVM Criteria и новыми экспериментальными AI-функциями в Studio Labs.
Gradle теперь автоматически определяет совместимый JDK для вашего проекта или загружает необходимую версию, если она не найдена локально. Функция стабилизирована в Gradle 9.2.0 и включена по умолчанию для новых проектов.
Как включить для существующих проектов:
Настройки доступны в Settings > Build, Execution, Deployment > Build Tools > Gradle
Доступны новые AI-возможности в стабильной версии Android Studio:
• Создание Compose Preview - Gemini автоматически генерирует предварительные просмотры Compose, включая фиктивные данные для параметров, для конкретного или всех компонентов в файле.
• Трансформация UI - обновление пользовательского интерфейса приложения на естественном языке прямо из панели предварительного просмотра Compose.
• Journeys for Android Studio - описание шагов и утверждений для end-to-end тестирования на естественном языке.
• Расширенная совместимость - поддержка Android Gradle Plugin (AGP) версий 4.0-9.0
• Новая политика облачных сервисов - интеграция с Gemini, Play Vitals и Firebase Crashlytics доступна в стабильной версии и основных релизах за последние 10 месяцев
—————
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
https://kt.academy/article/compose-stability
Марцин Москала (автор Effective Kotlin) чётко объясняет, в чём суть.
Stable — через equals, Unstable — по ссылке.
——————
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤1
https://developer.android.com/jetpack/androidx/releases/compose
Обновление библиотек Jetpack Compose: стабильные релизы UI 1.10.3, альфа-версии 1.11.0 для UI, Material, Foundation и Animation, а также новая Remote Compose 1.0.0-alpha04.
Стабильная версия Compose UI 1.10.3 с улучшениями производительности и исправлениями багов.
androidx.compose.ui:ui-*:1.10.3Обновлены библиотеки Material Design компонентов:
- Compose Material
1.11.0-alpha05 - классические Material компоненты- Material 3
1.5.0-alpha14 - современный Material Design 3Новые компоненты и улучшения существующих делают UI более отзывчивым и "красивым".
Remote Compose позволяет рендерить UI удаленно - это открывает новые возможности для:
- Server-driven UI
- Динамические экраны без обновления приложения
- A/B тестирование интерфейсов
androidx.compose.remote:remote-*:1.0.0-alpha04
——————
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
https://blog.flutter.dev/whats-new-in-flutter-3-41-302ec140e632
Вводит публичные release windows, модульные design-системы, улучшения accessibility и новый RepeatingAnimationBuilder для создания непрерывных анимаций.
Flutter теперь публикует прозрачные временные окна релизов, чтобы разработчики и контрибьюторы могли точно знать, когда их изменения попадут в стабильную версию. Это упрощает планирование и делает процесс разработки более предсказуемым.
Material и Cupertino библиотеки мигрируют в отдельные пакеты с независимыми циклами релизов. Теперь команда Flutter может выпускать обновления дизайн-систем сразу, как только они готовы, не дожидаясь квартальных релизов SDK.
• Быстрая реакция на изменения дизайна iOS и Android (например, "Liquid Glass" или "Material 3 Expressive")
• Разработчики на старых версиях SDK могут обновлять дизайн-пакеты независимо
CircularProgressIndicator и LinearProgressIndicator теперь поддерживают нативную accessibility, позволяя вспомогателям автоматически объявлять обновления прогресса. Flutter также теперь следит за настройками text spacing в браузерах для улучшения читаемости.
Новые testing matchers:
-
isSemantics - проверка семантических свойств-
accessibilityAnnouncement - валидация accessibility объявленийНовый декларативный способ создания непрерывных анимаций - идеально для loading индикаторов, пульсирующих кнопок или эффектов шиммеров для placeholder'ов.
——————
Так же RepeatingAnimationBuilder - приятное дополнение, которое упростит код для многих типовых анимаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3❤1
https://reactnative.dev/blog/2026/02/11/react-native-0.84
React Native 0.84 делает Hermes V1 движком по умолчанию на всех платформах, полностью убирает Legacy Architecture из iOS сборок и переходит на precompiled binaries для ускорения разработки.
🔹 Hermes V1 стал JavaScript движком по умолчанию
Hermes V1 теперь используется автоматически, без дополнительных настроек.
Что это дает:
• Значительно улучшенная производительность JavaScript кода
• Оптимизация компилятора и виртуальной машины
• Лучшее время запуска приложений
• Меньшее потребление памяти
🔹 Полное удаление Legacy Architecture из iOS
Legacy Architecture код больше не включается в iOS сборки по умолчанию.
Преимущества:
• Значительно сокращено время компиляции проектов
• Уменьшен размер финального приложения
• Упрощена кодовая база - меньше legacy кода
• Проще поддержка и обновление проектов
Новая архитектура становится стандартом де-факто.
🔹 Precompiled iOS Binaries по умолчанию
React Native теперь поставляется с предкомпилированными iOS binaries, что кардинально ускоряет процесс разработки:
Теперь не нужно компилировать React Native с нуля при каждом pod install - используются готовые binaries.
Плюсики:
• Первичная установка зависимостей выполняется в 2-3 раза быстрее
• CI/CD пайплайны работают значительно быстрее
• Меньше нагрузки на CPU при сборке
🔹 Node.js 22 - новое минимальное требование
React Native 0.84 требует минимум Node.js 22 для работы. Это позволяет использовать современные возможности JavaScript и улучшает совместимость с экосистемой.
Как обновиться:
# Используя nvm
nvm install 22
nvm use 22
# Или загрузите с nodejs.org
——————
Подробнее - по ссылке в заголовке)
*Принадлежит компании Meta, которая признана в РФ экстремистской и запрещена на территории страны.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
https://android-developers.googleblog.com/2026/02/the-first-beta-of-android-17.html
Новый метод updateOutputConfigurations() для бесшовного переключения между camera use cases без пересоздания всей сессии.
Пример использования:
// Переключение с preview на video recording без разрыва
val newOutputConfig = OutputConfiguration(videoSurface)
cameraDevice.updateOutputConfigurations(listOf(newOutputConfig))
Logical Multi-Camera Metadata:
Новый ключ LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS для одновременного получения метаданных от всех активных физических камер в logical multi-camera setup.
val physicalCameraResults = captureResult.get(
CaptureResult.LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS
)
physicalCameraResults?.forEach { (cameraId, metadata) ->
// Обработка метаданных каждой физической камеры
val exposure = metadata.get(CaptureResult.SENSOR_EXPOSURE_TIME)
}
Поддержка стандарта VVC — следующего поколения видеокодеков после HEVC.
Новый MIME type и profiles:
val codecInfo = MediaCodecInfo.forVideoCodec(
MediaFormat.MIMETYPE_VIDEO_VVC,
MediaCodecInfo.CodecProfileLevel.VVCProfileMain10
)
val format = MediaFormat.createVideoFormat(
MediaFormat.MIMETYPE_VIDEO_VVC,
width,
height
)
Constant Quality Recording:
Метод setVideoEncodingQuality() обеспечивает более точный контроль качества видео, выходя за рамки простого битрейта.
Атрибут android:usesCleartextTraffic deprecated. Приложения должны мигрировать на Network Security Configuration.
Миграция:
<!-- res/xml/network_security_config.xml -->
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">example.com</domain>
</domain-config>
</network-security-config>
<!-- AndroidManifest.xml -->
<application
android:networkSecurityConfig="@xml/network_security_config">
</application>
Новый Service Provider Interface для Hybrid Public-Key Encryption с поддержкой AEAD symmetric encryption.
————————
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔5❤1
https://android-developers.googleblog.com/2026/02/the-first-beta-of-android-17.html
Google выпустила первую бета-версию Android 17, радикально изменив модель разработки платформы. Вместо традиционных Developer Preview теперь используется Continuous Canary Updates - функции выходят сразу после внутреннего тестирования. Релиз фокусируется на обязательной адаптивности для больших экранов, производительности и новых медиа-возможностях.
Google отказывается от многолетней практики Developer Preview в пользу непрерывного канала Canary.
Три основных преимущества:
• Быстрый доступ к функциям: Features и APIs попадают в Canary сразу после внутреннего тестирования, без ожидания квартальных релизов
• Улучшенная стабильность: Раннее тестирование делает Beta-версии более отполированными с почти финальными API
• Упрощенное тестирование: OTA-обновления исключают ручную прошивку; легче интегрировать в CI-процессы
Приложения, таргетирующие Android 17, обязаны поддерживать гибкую ориентацию и изменение размеров на больших экранах (≥600dp smallest width).
Критические изменения:
• Portrait/landscape orientation locks игнорируются на больших экранах
• Ограничения aspect ratio (
minAspectRatio, maxAspectRatio) больше не применяются• Игры освобождены от требования при использовании
android:appCategory="game"• Пользователи могут переопределить поведение через системные настройки
Новый manifest атрибут:
<activity
android:name=".MyActivity"
android:recreateOnConfigChanges="keyboard|uiMode">
<!-- Activity пересоздается при изменении клавиатуры или UI mode -->
</activity>
Атрибут
android:recreateOnConfigChanges позволяет приложению пересоздавать Activity при конкретных configuration changes, таких как видимость клавиатуры или переключение UI mode.Lock-free MessageQueue:
Новая реализация без блокировок для приложений, таргетирующих SDK 37+. Уменьшает количество пропущенных фреймов и улучшает отзывчивость UI.
Generational Garbage Collection:
Более частые, но менее ресурсоемкие сборки young-generation объектов. Снижает общие CPU-затраты на GC, улучшая плавность работы приложений.
Важно: Оба улучшения активируются автоматически для приложений с
targetSdkVersion="37".————————
Продолжение в предыдущем посте...ох уж эта небагованная телега...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3