Kotlin Multiplatform
2.62K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
Почему надо использовать toolchains вместо jvmTarget в конфигурации билда 🧑‍💻
https://jakewharton.com/kotlins-jdk-release-compatibility-flag/

(надо бы свои визарды обновить ☺️)
штош: Джейк сдержал слово и аргументированно рассказал, почему не стоит использовать toolchain-ы в ваших билдах! Приглашаю к ознакомлению 🧑‍💻
https://jakewharton.com/gradle-toolchains-are-rarely-a-good-idea/
С новой моделью памяти и мультиплатформенными корутинами писать общий код стало гораздо удобнее и проще. В статье показано, что теперь создавать шаренные ViewModel не требует знания платформенных особенностей совсем 👍

https://habr.com/ru/companies/usetech/articles/802111/
Мультплатформенный DI фреймворк. 🌈
Быстрее Dagger 2 и удобнее Hilt. 🔥
С поддержкой compile time проверок графа зависимостей! 😻
С большим количеством интеграций к другим библиотекам и фреймворкам 🤝

Небольшая статья о том, как всю эту Koin радость использовать в своих проектах!

https://medium.com/koin-developers/getting-to-know-koin-annotations-ae20155d1b59
Обновил свой визард:
👉 генерится новый проект
👉 анимации в семпле
👉 из коробки используются ресурсы: иконки, текст и кастомный шрифт
👉 самые свежие версии всех компонентов
👉 самый актуальный билд конфиг (от гредл пропертей до советов Джейка В.)

https://terrakok.github.io/Compose-Multiplatform-Wizard/
Меня так вдохновили ваши лайки, что решил вместо сна допилить пару вещей ❤️
🧑‍💻 добавил WasmJs таргет (учтите, что большинство библиотек его не поддерживает)
🌈 добавил генерацию common Compose UI тестов
🥳 тесты можно запустить прямо на иОС или андроид симуляторе из терминала

P.S: js и wasm экспериментальные, поэтому там с тестами не так гладко. Есть еще над чем поработать 😉

https://terrakok.github.io/Compose-Multiplatform-Wizard/
Включить proguard на андроид просто, и скорее всего он сразу заработает как надо, потому что для этого много сделано внутри, например библиотеки публикуют свои правила для него, и это автоматически подхватывается при сборке. С десктопом все не так, и для каждой зависимости надо будет самому настраивать правила минимизации и обфускации. Но это того стоит!
Статья рассматривает эти проблемы и объясняет пути решения:
https://medium.com/@mike_21858/using-proguard-with-jetpack-compose-desktop-size-reduction-performance-gains-and-pain-481a014c6b0a
https://github.com/ShreyashKore/wonderous_compose

Я уже упоминал этот проект как-то раз. Очень красиво и работает на всех возможных платформах! (не надо только пробовать веб версию на мобильных устройствах)
А теперь там появились встроенные карты на всех платформах - стоит изучить 😉
Я только что опубликовал небольшой гредл плагин, чтобы было проще понимать HMPP структуру в проекте.
просто применяете
plugins {
id("io.github.terrakok.kmp-hierarchy").version("1.1")
}


и вызываете ./gradlew :printHierarchy
☺️
https://github.com/terrakok/kmp-hierarchy
https://touchlab.co/touchlab-build-only-what-you-need

Очередная хорошая статья о KMP от TouchLab! Рассматриваются проблемы скорости билда и пути их решения 🐘
https://funkymuse.dev/posts/kmp-firebase/

Пошаговая инструкция, как интегрировать Firebase в KMP приложение с iOS и Android таргетами 🤠
Введение во все основные концепции корутин с удобными блоками кода и поясняющими диаграммами 🧑‍💻

https://proandroiddev.com/kotlin-coroutines-101-async-programming-in-practice-062b359d502b
https://kotlinlang.org/docs/apple-privacy-manifest.html

Apple выкатила новые требования для публикации приложений! Теперь, если ваше приложение использует некоторые системные API (например platform.posix.fstat), то необходимо при публикации описать причины для этого. Почему это важно? Так как это может делать одна из библиотек, а позаботиться надо вам! (авторы библиотек от Apple туллинга не получили, само собой 👍)

Как пример: библиотека multiplatform-settings или compose-imageloader 🫠

Update: чтобы увидеть проблему в своем приложении можно воспользоваться https://github.com/Wooder/ios_17_required_reason_api_scanner 🔥