KMP, XCode и 5% мазохистов: как мы писали AI-агентов на 4 платформы

Все говорят, что AI заменит разработчиков. Я решил зайти с другой стороны — написать AI-агента, который заменит пользователей. Альфа версию для macOS уже зарелизил. Послдение полгода работали с коллегой над двумя приложениями, одно десктопное (по ссылке выше), другое на 4 платформы — android, ios, web, backend. Много чего повидали, хочу поделиться опытом. Дисклеймер . Статья содержит последствия массового использования expect/actual, сцены жестокого обращения с XCode и эпизоды длительного ожидания нотаризации на релизных сборках под OSX. Не рекомендуется лицам, планирующим запуск KMP-проекта на несколько платформ без предварительной консультации с психотерапевтом.

https://habr.com/ru/articles/1002744/

#java #kotlin #llm #agent #koog #ииагенты #kotlin_multiplatform #compose_multiplatform #кросплатформенная_разработка

KMP, XCode и 5% мазохистов: как мы писали AI-агентов на 4 платформы

Последние полгода работали с товарищем над двумя приложениями. Оба с Kotlin Multiplatform, одно десктопное, уже в альфе , другое — на 4 платформы: android, ios, web, backend. Много чего повидали, хочу...

Хабр

Navigation3 + Koin в Compose Multiplatform

В этой статье я бы хотел поделиться своими наработками по тому, как можно удобно совмещать библиотеку Navigation3 и Koin в Compose Multiplatform проекте и какие подводные камни есть на текущий момент.

https://habr.com/ru/articles/984552/

#compose_multiplatform #kotlin_multiplatform #kmp #navigation3 #koin

Navigation3 + Koin в Compose Multiplatform

Всем привет! Я Android разработчик с 5 летним стажем и недавно я решил погрузиться в кроссплатформенную разработку с Compose Multiplatform. Как мне кажется, сейчас очень хорошее время для этого, т.к....

Хабр

Анимация смены темы в Compose Multiplatform

Анимация смены темы в Android-версии Telegram на протяжении долгого времени вдохновляет разработчиков на попытки реверс-инжениринга этого красивого трюка: в сети немало подробных гайдов, как сделать подобную анимацию при помощи традиционных XML View и даже Flutter. Но реализаций этой элегантной (хоть и совершенно бесполезной) анимации на Jetpack Compose мне найти так и не удалось, что привело к созданию маленькой библиотеки для анимирования смены темы. Вера в будущее KMP также подтолкнула меня к тому, чтобы сделать ее из коробки готовой к установке в Compose-Multiplatform проекты, с поддержкой всех основных платформ (Android, iOS, Desktop JVM, Web WASM+JS). Хотя сама библиотека вышла крайне компактной, ее реализация оказалась довольно нетривиальной на мой субъективный взгляд и может быть интересна каждому, кто изучает Compose или ищет подобные решения для своего проекта. На старте написания библиотеки сами собой возникли ряд требований, которым она должна была отвечать:

https://habr.com/ru/articles/983488/

#compose_multiplatform #kotlin_multiplatform #jetpack_compose #android #animations

Анимация смены темы в Compose Multiplatform

Анимация смены темы в Android-версии Telegram на протяжении долгого времени вдохновляет разработчиков на попытки реверс-инжениринга этого красивого трюка: в сети немало подробных гайдов, как сделать...

Хабр

Kick: Kotlin Inspection & Control Kit — единый модульный инструмент отладки прямо в приложении

При разработке и тестировании приложений порой требуется заглянуть под капот - проанализировать HTTP-трафик или проверить кэш данных в базе данных. Ранее для этих целей мы использовали Inspektify и Delight SQL Viewer . Но в какой-то момент нам понадобился еще и удобный доступ к логам приложения и тащить ещё одно отдельнее решение не хотелось. Был нужен один инструмент, который объединит всё самое необходимое в одном месте. Так появился Kick — расширяемый модульный набор инструментов, позволяющий разработчикам и тестировщикам легко инспектировать приложение.

https://habr.com/ru/articles/932992/

#multiplatform #kotlin_multiplatform #android #ios #desktop #compose #compose_multiplatform

Kick: Kotlin Inspection & Control Kit — единый модульный инструмент отладки прямо в приложении

При разработке и тестировании приложений порой требуется заглянуть под капот - проанализировать HTTP-трафик или проверить кэш данных в базе данных. Ранее для этих целей мы использовали Inspektify и...

Хабр

Индикация клика на стероидах в Compose: пишем свою IndicationNodeFactory

При работе с Jetpack Compose разработчики часто не замечают, как элементы Material и Material 3 дизайн систем вплетаются в их код. Один из таких элементов - это индикация клика, реализованная в Material как круги на воде (англ. ripple effect). В этой статье мы разберем, в чем недостатки дефолтной реализации риппл-эффекта в Compose и как сделать свою.

https://habr.com/ru/articles/914506/

#compose #compose_multiplatform #jetpack_compose #material_design #design_system

Индикация клика на стероидах в Compose: пишем свою IndicationNodeFactory

При работе с Jetpack Compose и Compose Multiplatform разработчики часто не замечают, как элементы Material и Material 3 дизайн-систем вплетаются в их код. Один из таких элементов - это индикация...

Хабр

Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping

За последнее время Jetpack Compose и его кроссплатформенный собрат Compose Multiplatform прошел большой путь от ранних альфа релизов и скептического отношения комьюнити до статуса главного UI-фреймфорка под Android и production-ready состояния на iOS. Тем не менее одна из важных тем, касающихся runtime-производительности фреймворка, все еще остается полной темных пятен, и это тема stability. Как ни странно, ведь на эту тему сделано множество статей и докладов. Проблема заключается в том, что стремительное развитие фреймворка очень быстро делает эти статьи, доклады и даже документацию устаревшими, а новые посты на эту тему вторят старым, дальше распространяя ложную информацию о том, как работает рекомпозиция, пропускаемость (skippability) и перезапускаемость (restartability). Использование LLM для получения актуальной информации не очень поможет. Простой пример - спросим у ChatGPT, будет ли перезапущена Composable функция, если она имеет нестабильные аргументы, и получим неправильный ответ:

https://habr.com/ru/articles/912490/

#kotlin_multiplatform #compose_multiplatform #jetpack_compose

Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping

За последнее время Jetpack Compose и его кроссплатформенный собрат Compose Multiplatform прошел большой путь от ранних альфа-релизов и скептического отношения комьюнити до статуса главного...

Хабр

Compose Multiplatform 1.8.0: поддержка iOS переходит в stable

Привет! Меня зовут Максим, я управляющий партнер и руководитель мобильной разработки в KTS . Мы разрабатываем приложения на KMP еще с 2021 года, а в прошлом году начали экспериментировать с Compose Multiplatform. Вчера JetBrains официально объявили о выходе CMP 1.8.0 , c которой поддержка iOS переходит в статус stable . Это важный этап, поскольку теперь CMP можно всерьез рассматривать как основу для кроссплатформенной мобильной разработки. В этой статье мы познакомимся с обновлением и рассмотрим заявленные фишки, а заодно поговорим о результатах наших опытов с CMP на ‭наших проектах.

https://habr.com/ru/companies/kts/articles/907678/

#compose_multiplatform #кроссплатформенность #кроссплатформенная_разработка #обновление #kotlin_multiplatform #kotlin #мобильная_разработка #мобильные_приложения

Compose Multiplatform 1.8.0: поддержка iOS переходит в stable

Привет! Меня зовут Максим, я управляющий партнер и руководитель мобильной разработки в KTS . Мы разрабатываем приложения на KMP еще с 2021 года, а в прошлом году начали экспериментировать с Compose...

Хабр

Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS

Привет, Хабр! В этой статье я делюсь решением, как настроить версионирование приложения для Android и iOS с помощью Kotlin Multiplatform. Я рассказываю о том, как минимизировать человеческий фактор, автоматизировав процесс обновления версий, и как избежать дублирования информации в разных частях проекта. В статье представлен пример кода, который можно адаптировать под свой проект.

https://habr.com/ru/articles/895362/

#kmp #multiplatform #versioning #android #ios #compose_multiplatform #kotlin_multiplatform #kmm #mobile #kotlin

Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS

Привет! Меня зовут Антон, я Android-разработчик. Недавно у меня появилась идея создать приложение, которое в будущем можно будет опубликовать в сторы. С самого начала я знал, что хочу, чтобы оно...

Хабр

Delight SQL Viewer: отладка SQLDelight-базы прямо в приложении

Привет! Хочу поделиться инструментом, который значительно упростит жизнь тем, кто использует SQLDelight для работы с базами данных в Kotlin Multiplatform-проектах. Этот инструмент называется Delight SQL Viewer .

https://habr.com/ru/articles/886214/

#kotlin_multiplatform #sqldelight #compose_multiplatform #sqlite

Delight SQL Viewer: отладка SQLDelight-базы прямо в приложении

Привет! Хочу поделиться инструментом, который может существенно упростить жизнь тем, кто использует SQLDelight для работы с базами данных в Kotlin Multiplatform-проектах. Этот инструмент называется...

Хабр

Взаимодействие с клавиатурой в Compose: особенности и подводные камни

Привет, Хабр! На связи Глеб Гутник, мобильный разработчик из компании xStack. В этой статье мы рассмотрим, как можно эффективно кастомизировать взаимодействие с клавиатурой в Jetpack Compose и Compose Multiplatform для создания комфортного UX. Для того, чтобы пользователь мог полноценно взаимодействовать с интерфейсом, мы, мобильные разработчики, ежедневно решаем простую, казалось бы, задачу: поля ввода формы на экране всегда должны быть видны и находиться выше клавиатуры. На Android для этого предусмотрен флаг android:windowSoftInputMode="adjustResize" , но он сжимает окно приложения без учета анимации клавиатуры, поэтому пользователь видит пустое поле долю секунды, пока клавиатура открывается:

https://habr.com/ru/articles/845124/

#kmp #kotlin #kotlin_multiplatform #compose_multiplatform #jetpack_compose

Взаимодействие с клавиатурой в Compose: особенности и подводные камни

Привет, Хабр! На связи Глеб Гутник, мобильный разработчик из компании xStack. В этой статье мы рассмотрим, как можно эффективно кастомизировать взаимодействие с клавиатурой в Jetpack Compose и Compose...

Хабр