KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)
在近期的Google I/O大会上,我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑,并在Google Workspace中采用了KMP。紧接着,KotlinConf 2024成为与Kotlin社区分享亮点并交流的重要时刻。
Kotlin Multiplatform (KMP) 的优势
Kotlin Multiplatform由JetBrains开发,允许开发者通过将Kotlin代码编译为平台原生的二进制文件来构建跨平台应用,同时利用现代内存管理语言的全部功能。这种方法是Google Workspace团队的长期投资,使他们能够在不同平台之间共享业务逻辑。
Android团队一直在努力支持KMP,并最近发布了支持KMP的Room的alpha版本。目前,Annotations、Collections和DataStore已经在支持KMP的稳定版中发布。我们还对Lifecycle、ViewModel和Paging库进行了通用化处理,以便与非Android平台集成。
大会主题演讲和技术会议
会议以主题演讲开始,Google的Jeffrey van Gogh概述了Google对Kotlin生态系统的贡献。Jeffrey深入探讨了Google如何利用Kotlin Multiplatform (KMP)简化其产品组合的开发。Jeffrey强调了KMP为Google项目带来的代码共享和效率提升的好处,这与我们最近对Android应用开发的建议一致。
在KotlinConf 2024上的技术会议涵盖了一系列主题:
-
《两种语言的故事》
由John Pampuch带来的这场演讲,通过对比Java和Kotlin的演变,展示了它们的共生关系和相互影响。 -
《启用Kotlin Multiplatform成功:Android Jetpack之旅》
由Elif Bilgin、Yigit Boyar和Daniel Santiago Rivera代表的Android Jetpack团队,分享了KMP在Jetpack中的当前状态,介绍了支持KMP的Jetpack库更新,并探讨了将一个成熟的Jetpack库迁移到KMP的过程。 -
《使用Kotlin加速开发》
由Andrei Shikov分享了优化Compose for Android的宝贵经验,强调了Kotlin中的一些有趣性能细节以及Compose团队为确保最佳性能而建立的保护措施。 -
《Google Workspace中的Kotlin Multiplatform》
由Jason Parachoniak讨论了Google Workspace从以Java为导向的多平台基础迁移到Kotlin Multiplatform的过程,分享了所学到的经验和这一雄心勃勃的过渡的当前状态。 -
《编写你自己的Kotlin Lint检查》
由Android Studio工程总监Tor Norbye带来的这场会议,帮助开发者通过创建自己的检查来扩展Android Lint,这是一种被数百万开发者使用的静态分析工具。尽管名字如此,它不仅仅针对Android——还用于分析Google内部的服务器端Kotlin和Java代码!
Android 支持 Kotlin Multiplatform (KMP) 实现跨移动、网页、服务器和桌面平台的业务逻辑共享
传统上,开发者需要为每个平台单独编写代码,或者在复用代码时做出许多妥协。自2017年以来,Android 一直积极支持 Kotlin。今天在 Google I/O 大会上,我们宣布支持 Kotlin Multiplatform (KMP),这使得跨移动、网页、服务器和桌面平台共享代码成为可能,从而提高开发者的生产力,并与 Android 的 Kotlin 优先策略完美契合,最终提升 Android 应用的质量。
Kotlin Multiplatform (KMP) 的长期投资
Google Workspace 团队长期以来一直投资于 KMP,这使得跨平台体验的交付更加灵活和快速。Google Workspace 团队对 KMP 作为多平台架构投资方向的潜力充满信心,认为其能够满足各种工作负载的性能预期。
首个应用案例
这一旅程的初始步骤是推出 Google Docs 应用,该应用利用 KMP 实现了 Android、iOS 和网页端的共享业务逻辑,验证了其在 Google 规模上的生产就绪性。Google Workspace 团队期待继续探索 KMP 在其产品套件中的可能性,旨在提高生产力,并为所有平台的用户提供无缝体验。
跨平台开发的成功案例
许多公司已经成功利用 KMP 进行跨平台应用开发,了解他们如何应用不同的代码共享策略。Kotlin Multiplatform 由 JetBrains 开发,通过将 Kotlin 编译为平台原生二进制文件,提供了一种共享代码的新方法。Kotlin 能够为本机平台提供完整、现代的内存管理语言,实现原生互操作性和渐进采用。结合其他平台上的 Kotlin Multiplatform,Kotlin 在 Android 上提供了一种提高生产力和质量的绝佳方式,同时不妥协性能和互操作性。
当前支持状态
许多广泛使用的库提供了对 Kotlin Multiplatform 的内置支持,简化了跨平台开发体验。这些库无缝协作,例如,Ktor 通过处理 REST 服务消费简化了网络任务,kotlinx.serialization 将数据转换为 JSON 等格式,而 Okio 处理基本的文件 I/O。此外,SKIE 支持在 iOS 上使用现代类型和协程,CocoaPods 集成则使得使用 iOS 特定依赖项成为可能。
我们与 JetBrains 及 Kotlin 开发者社区合作,为许多 Jetpack 库添加了 KMP 支持。在某些情况下,我们提供了 iOS 平台目标,而在其他情况下,JetBrains 和社区提供了多平台发行版。
目前,Annotations、Collections 和 DataStore 库均已在稳定版中支持 Kotlin Multiplatform。我们还在增加对 iOS 平台目标的二进制兼容性验证支持,使其达到与 Android 相同的质量标准。除了上述库之外,我们还开始为 Room、Lifecycle 和 ViewModels 添加 Kotlin Multiplatform 支持,alpha 版本现已可用。为了更好地理解哪些类和函数在哪些平台上可用,库参考文档现在标明了“common”和平台支持。
编译器和性能优化
Android 工程师与 JetBrains 合作改进 Kotlin/Native(用于 iOS 和原生桌面操作系统)的运行时性能,在编译器基准测试中显示出18%的运行时性能提升。此外,Android 团队还贡献了 Kotlin Native Compiler 的构建时间性能改进,速度提高了多达2倍。
Android Gradle 插件现在正式支持 Kotlin Multiplatform,能够通过简洁的构建定义将 Android 作为共享代码的平台目标,如下所示:
plugins {
id("org.jetbrains.kotlin.multiplatform")
id("com.android.library")
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "11"
}
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "Shared"
isStatic = true
}
}
sourceSets {
commonMain.dependencies {
// 在这里添加你的多平台依赖项
}
}
}
Android Gradle 插件 DSL 中的 KMP 支持
由于 Android Studio 基于 JetBrains 的 IntelliJ 平台,因此它继承了对 Kotlin Multiplatform 代码编辑和许多其他开发功能的支持。其他 Android 开发工具,如 Android Lint 和 Kotlin Symbol Processing (KSP),也开始增加更多的 Kotlin Multiplatform 支持。
Google Chrome 现在正式支持 WasmGC,这被 Kotlin Multiplatform 的 WebAssembly 平台目标使用,以高效且性能良好的方式实现与浏览器的代码共享。
了解更多KMP
此外,你可以查看更新的文档和一个新的移动示例项目。这些资源应该能够帮助你开始学习KMP,如果你有任何反馈或遇到任何问题,请通过此链接分享。
https://developer.android.com/kotlin/multiplatform
https://github.com/android/kotlin-multiplatform-samples
https://developer.android.com/jetpack/androidx/releases/room#version_27_2
展望未来
我们对Kotlin的未来充满期待,计划在更多的AndroidX库中添加对KMP的支持。我们期待看到你们如何采用并使用KMP构建下一代应用。
KotlinConf 2024不仅是展示最新技术和工具的平台,更是开发者之间交流和学习的盛会。通过KMP,开发者们可以更高效地在多个平台上共享业务逻辑,提升开发速度和质量。Google在Kotlin生态系统中的持续投入,展示了我们对这一技术的长期承诺和信心。
https://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html
在未来的开发过程中,我们将继续致力于优化KMP的使用体验,提供更多的资源和支持,帮助开发者们更好地利用这一强大的工具。期待在不久的将来,看到更多优秀的应用诞生,推动整个Kotlin社区的进步和发展。