Kotlin
A concise multiplatform language developed by JetBrains
KMM Alpha 后的新面貌
Kotlin 移动端多平台(KMM),用于移动端跨平台开发的SDK,在2020年8月进入Alpha 在过去的9个月,KMM生态一直在迅猛发展:
- 每个新的Kotlin版本都会带来一系列特性和改善,以提升多平台开发的体验。
- KMM开发工具(例如用于Android Studio的KMM插件) 会持续收到更新,以让跨平台移动应用程序的开发过程更加高效和让人沉迷。
- 社区通过创建实用的库,创建有指导意义的示例以及分享他们在生产中使用KMM的经验,为KMM生态做出了积极的贡献。
请继续阅读Alpha之后其生态的主要亮点,以免错过重要更新。 或者,如果您迫不及待想要获得第一手资讯,请浏览KMM文档门户网站以了解更多信息,并尝试一下!
在这篇博文中,您将会看到以下内容的概述:
- KMM插件功能和改进,包括Cocoapods集成的支持。
- 与Kotlin多平台相关的更新,包括Kotlin/Native的性能改进。
- 主要社区内容亮点,包括新的示例项目和多平台库版本。
- 文档门户更新,包括新的“常见问题”页面。
KMM插件带来了什么新东西?
Android Studio的KMM插件可以帮助您开发跨平台应用程序。 您只需点击几下便可构建新的跨平台移动应用程序,并且与iOS开发生态系统紧密集成。
稳定且可定制的 iOS 集成
通过 KMM 插件,您可以直接在 Android Studio上的 iOS 目标上运行,测试和调试应用程序的 iOS 部分。 自从插件的第一个版本发布以来,它对 iOS 的集成变得更加稳定和可配置,并且现在支持最新的 iOS 工具。 请查阅已实现的 iOS 集成改进的完整列表。
灵活的项目向导
KMM插件是使用KMM时迈出第一步不可或缺的工具。 您可以通过插件的快捷向导快速创建新的多平台项目,或将多平台模块添加到现有项目中。
插件的最新版本允许将 Cocoapods 集成用于新的 KMM 项目和模块。 您要做的仅仅是提供一个额外的 KMM 模块描述,该插件将生成所有必需的配置代码。
有关 KMM 插件中的新功能和改进的完整列表,以及安装说明和兼容性详情,请访问 KMM插件发行页面。
KMM 为 Kotlin 带来了什么新东西?
KMM 基于 Kotlin 的多平台特性,并通过 Kotlin/JVM 和 Kotlin/Native 生成平台工件 —– Android 的 .jar 和 iOS的 .framework。 每次 Kotlin 的更新都会改善开发人员通过 KMM 构建跨平台移动应用程序的体验。
Kotlin/Native 对 iOS 更好的集成
Kotlin/Native 团队专注于KMM社区最期待的特性 —— Kotlin Native 新的内存管理方案。 我们计划在 2021 年夏末前展示新内存管理设计的开发预览。 在 Kotlin/Native 内存管理更新博文中阅读该项目的详细状态。
尽管我们在实施新的内存管理方案上取得了重大进展,但我们也没有遗忘使用 Kotlin/Native 进行 iOS 开发的其他功能:
- Kotlin/Native 得到了新的逃逸分析机制原型,该原型让 iOS 的运行时性能提高了 10%。
- Kotlin/Native 现在可以在运行时处理从 Objective-C 代码抛出的异常,以避免程序崩溃。 这使您可以获取最根本原因并适当处理。 了解如何引入。
- Kotlin/Native 编译器得到了一系列性能提升的更新。 例如,KMM 网络和数据存储示例中重新构建 iOS framework 所需的时间从 9.5 秒减少到 4.5 秒。 了解如何加快项目的 Kotlin/Native 编译过程。
- CocoaPods 集成得到了许多改进,例如仅在必要时才重新构建依赖关系,以及可添加更多不同类型库的依赖的能力。
稳定的适用于多平台项目的工具
只有稳定的工具,才能让您体验到不同类型项目的乐趣。 在 KMM 迈入 Alpha 并引入了大量多平台新特性后,Kotlin 多平台团队致力于改善多平台项目的前端和 IDE 导入的稳定性。 我们已经修复了在 IDE 的多平台项目中工作时,会导致“红色代码”的许多问题。 我们将继续改善多平台开发者的体验,为了做到这一点,我们需要您的反馈。 如果您有几分钟的时间,请将发现的所有问题报告给我们的问题跟踪器——YouTrack。
当然,这些只是主要亮点。 要查看 Kotlin 所提供的用于多平台移动应用程序开发的所有新功能简介,请查看 KMM 文档门户中的 What’s new in Kotlin for KMM。 该页面会随着 Kotlin 的版本更新,因此您不会错过任何重要新闻!
社区有什么新的消息?
社区是任何技术生态的核心。 您一定是我们灵感和反馈最大的来源! 自第一个版本发布以来,全世界的开发者一直通过分享他们在生产项目中使用 KMM 的经验,以及创建有用的库和示例项目来支持 KMM 的生态。
KMM 日渐增长的库
KMM 库的数量在不断增长,这意味着您能找到最适合您项目要求的库:
- Realm 是易于使用的开源本地数据库,现在拥有新的 Kotlin Multiplatform SDK。 了解新 SDK 开发的关键设计原则。
- Decompose 可帮助您在 KMM 更多地共享代码。 Decompose 为 Kotlin Multiplatform 提供了具有路由功能和可插拔式 UI 的生命周期感知业务逻辑组件。 得益于 KMM 的灵活性,以及允许您选择代码库里要共享的范围,因此您无需将其使用范围限制为项目的核心层或业务层,而是通过像 Decompose 这样的库帮助您达成目标。
KMM 开发人员还有许多待解决的需求,这意味着库作者有很多机会。 思考一下如何学习构建和发布多平台库,并加入这个迅猛生长的生态!
新的示例项目
示例项目对于技术的第一手体验可能非常有帮助。 到目前为止社区做出了巨大的努力,您可以根据分享的代码场景选择一个示例项目或全部都尝试一下:
- D-KMP 示例演示了如何与 KMM 完全共享 ViewModel(包括导航层),如何实现 MVI 和 CQRS 模式,以及如何使用最新的适用于 Android 的 Compose 和适用于 iOS 的 SwiftUI 的声明式 UI 工具套件。
- multiplatform-redux-sample 显示了如何使用 KMM 和 ReduxKotlin 构建跨平台应用程序。
- 著名的 people-in-space 项目是 Kotlin Multiplatform 完整技术最有力的展示。 除了共享所有业务逻辑并使用现代化移动UI工具套件之外,它还使用了 Compose Desktop,因此您可以在PC上运行这个示例应用程序!
最新的Kotlin多平台用户调查显示,社区最受欢迎的是更复杂的示例,这就是为什么我们引入了来自官方 KMM 团队的KMM 生产示例 。 它是一个简单的 RSS 阅读器,您可以从 App Store 或 Google Play 下载。 旨在演示如何在实际的生产项目中使用 KMM,它提供了全面的 readme 并展示了其架构,因此您可以在项目中应用这些方案。
受益于 KMM 的团队故事
通过 KMM 在移动平台之间共享代码,这在全球的公司和个人开发者中变得越来越普遍:
- Netflix切换到了Kotlin Multiplatform Mobile,以优化其studio应用程序的可靠性并提高其迭代速度。
- Philips也在使用KMM来加快新功能实现的速度。 他们还让团队中Android和iOS开发者之间实现了更多的互动。
- KMM正在帮助Down Dog在所有平台上同步上线功能,提高开发速度并减少错误的数量。 团队甚至将大部分iOS平台的代码从Swift迁移到了Kotlin。他们现在除了5个Swift文件外,整个项目都在Kotlin中。
请查看 KMM 门户的案例研讨部分,以了解来自各行各业公司以及个人开发者的更多鼓舞人心的故事。
KMM 门户带来了什么新东西?
在开发 KMM 的同时,我们将继续发展文档门户,让其成为您的日常帮手:
- 新的FAQ页面是您KMM之旅的优秀起点。 它包括对最常见问题的解答,例如如何在Windows上使用KMM。 如果您的问题未被覆盖,请告知我们!
- 新的步骤指南将帮助您让现有的Android应用程序实现跨平台,并允许在Android和iOS上使用。 请不要等到新项目的启动,才去享受跨平台的优势!
阅读文档不是了解 KMM 的唯一途径。 Kotlin YouTube 频道上新的“Kotlin Multiplatform Multiverse”系列视频,涵盖了诸如创建新项目和通过 Ktor 进行互联网开发等入门主题,因此您可以轻松地躺在沙发上开始深入了解 KMM。
接下来可以期待什么?
这9个月非常充实! 但是,未来会更好,因为KMM 仍然是 Kotlin 团队的最优先任务之一。
下一个重要且期待已久的里程碑是 KMM 迈向Beta。 我们正在为此制定详细的计划,并将在Beta公告之前发布单独的博文,介绍 KMM 即将实现的相关任务内容。 其中大多数正在开发中,包括在 Kotlin Multiplatform 工具中支持 Apple Silicon 目标和新的垃圾收集器原型。 有关我们当前优先级的更多信息,请参见 Kotlin 蓝图。
我们很高兴看到社区不断壮大,并且 KMM 被全世界越来越多的公司所采用。 立即加入我们的移动跨平台启程冒险!
更多的阅读和观看资料
在 YouTube 观看 Kotlin:
- Kotlin Multiplatform Multiverse 系列
- Talking Kotlin: Kotlin Multiplatform with John O’Reilly
- Talking Kotlin: MVIKotlin and Decompose with Arkadii Ivanov
阅读 Kotlin 博客:
Learn more from the Kotlin and KMM docs: