[KMP翻译]KMP:Kotlin Multiplatform 应用开发的必备工具和插件

340 阅读5分钟

本文由 简悦 SimpRead 转码, 原文地址 medium.com

在这篇文章中,我尝试提供一个关于各种工具和插件的简要概述,这些工具和插件可以帮助优化使用 Kotlin Multiplatform 开发应用程序的过程......

在本文中,我尝试对开发 Kotlin Multiplatform 应用程序时可以优化体验的多种工具和插件进行简要介绍。我探讨了每种工具的功能和优势,包括 SKIE、KMMBridge、Xcode Kotlin、KMM Plugin、Dokka 和 DeteKt。每个部分详细介绍了这些工具的主要特性、与其他开发工具的集成方式,以及如何提高开发者体验。整体来看,这是一份供开发者探索和理解 Kotlin Multiplatform 工具生态的全面指南。

KDoctor (开发环境诊断工具)

KDoctor 确保所有 必需组件 安装完毕并可以正常使用。如果有遗漏或未正确配置的内容,KDoctor 会指出问题并给出修复建议。

KDoctor 进行以下诊断:

  • 系统 - 检查操作系统的版本。
  • JDK - 检查 JDK 的安装情况以及是否正确配置了 JAVA_HOME 环境变量。
  • Android Studio - 检查 Android Studio 的安装状况以及 Kotlin 和 Kotlin Multiplatform Mobile 插件。
  • Xcode - 检查 Xcode 的安装和配置情况。
  • CocoaPods - 检查 Ruby 环境以及 CocoaPods 插件的安装。

额外诊断环节:

  • 生成的项目样例 - 从 GitHub Kdoctor 模板 下载并构建项目。
  • 本地 Gradle 项目 - 检查当前目录下的用户项目。

a

SKIE (强化 Swift 与 Kotlin 互操作性的编译器插件)

Kotlin Multiplatform 的主要缺点之一是缺乏与 Swift 的直接交互。不支持这种直接交互意味着 Swift 必须通过 Objective-C 间接与 Kotlin 通信。这种方法虽然可行,但存在诸多局限性,并导致 Kotlin 无法支持某些语言特性。

SKIE 是 Kotlin Native 编译器的一个专用插件,能通过修改 Kotlin 编译器生成的 Xcode 框架恢复对部分特性的支持。

SKIE 的特点 安全的接口导出:验证跨平台的类型兼容性,确保多平台的互操作性。 自动化导出流程:自动生成必要的代码,可通过 Gradle DSL 简化配置。 多平台兼容:支持所有 Kotlin Multiplatform 目标,能与现有工具良好集成。 支持和可扩展:提供丰富的文档,并允许进行扩展以适应项目需求。 积极维护:TouchLab 团队对 SKIE 进行定期更新,并拥有一个活跃的社区支持。 下面展示了在 Swift 中使用 密封类 (Sealed Classes) 的具体示例:

Kotlin 的密封类定义:

sealed class Status {
    object Loading : Status()
    data class Error(val message: String) : Status()
    data class Success(val result: SomeData) : Status()
}

使用 Swift(未集成 SKIE):

func updateStatus(status: Status) {
    switch status {
    case _ as Status.Loading:
        showLoading()
    case let error as Status.Error:
        showError(message: error.message)
    case let success as Status.Success:
        showResult(data: success.result)
    default:
        fatalError("Unknown status")
    }
}

使用 Swift(集成了 SKIE):

func updateStatus(status: Status) {
    switch onEnum(of: status) {
    case .loading:
        showLoading()
    case .error(let error):
        showError(message: error.message)
    case .success(let success):
        showResult(data: success.result)
    }
}

SKIE 是 Kotlin Multiplatform 开发者不可或缺的强大工具。它通过自动化的导出和类型检查功能,很大程度上提升了开发体验,同时减少了错误的可能性,更易于维护。

KMMBridge(简化二进制发布工具)

KMMBridge 是一个 Gradle 工具,用于简化为 Xcode 发布 Kotlin Multiplatform 框架二进制文件的过程。它支持以下功能:

自动创建并发布 XCFramework 压缩包。 通过 CocoaPods 或 Swift Package Manager(SPM)集成模块。 提供适用于本地开发与线上分发的全流程支持。 它面向需要从 Kotlin 发布框架给 iOS 开发者的团队,尤其适用于模块化项目或 SDK 发布场景。

更多详情请查看 KMMBridge 文档。

Xcode Kotlin 插件(Native iOS 项目中的调试支持)

Xcode Kotlin 插件允许您直接从 Xcode 调试运行在 iOS 应用中的 Kotlin 代码。

预览

插件特点

  • 提供对 Xcode 的直接支持,强化 Swift 和 Objective-C 与 Kotlin 代码的互操作性。
  • 自动生成绑定代码,简化跨语言接口的管理。
  • 提供易于配置的集成脚本,减少复杂性。

KMM 插件(Android Studio 中的强大工具)

KMM 插件是 Kotlin Multiplatform 开发中不可或缺的工具。它支持在 Android Studio 内:

  • 快速创建、编译及调试共享模块。
  • 提供完善的代码补全与重构工具。
  • 支持跨平台代码的单元测试与调试。

Dokka(文档生成工具)

Dokka 是一种专门为 Kotlin 项目设计的文档生成工具,可为 Kotlin Multiplatform 项目生成 HTML、Markdown 或类似 Javadoc 的格式文档。同时,它通过解析源代码中的 KDoc 注释生成 API 文档,方便团队成员掌握共享代码的结构与使用方法。

DeteKt(代码质量分析工具)

DeteKt 是一款静态代码分析工具,旨在提升 Kotlin 项目的代码质量。它用于检测潜在错误、不一致命名、冗余代码等问题,并生成详细的报告,帮助开发者改进代码。

Kover(代码覆盖率工具)

Kover 是 JetBrains 开发的代码覆盖率工具。它支持评估 Kotlin Multiplatform 项目的测试覆盖情况,生成多种格式的详细报告,并与 CI/CD 流程无缝集成,帮助识别未被测试的代码部分。

Fleet(现代化轻量 IDE)

Fleet 是 JetBrains 新推出的一款轻量级 IDE,它既提供快速启动和流畅性能,又支持实时协作和丰富的代码工具。其功能包括:

  • Kotlin Multiplatform 项目支持。
  • 集成调试器、高级导航和智能补全。
  • 可扩展性强,可通过插件定制开发体验。

Amper(专为 Kotlin 设计的构建系统)

Amper 是 JetBrains 开发的一种优化的构建工具,适用于 Kotlin Multiplatform 项目。其主要功能包括:

  • 更高效的增量编译。
  • 对多平台模块的支持。
  • 强大的依赖管理与任务调度。

总结

本文全面概述了 Kotlin Multiplatform 开发中使用的各种工具和技术:从增强 Swift 互操作性的 SKIE 到简化文档生成的 Dokka,再到优化代码质量的 DeteKt 与代码覆盖率工具 Kover。这些工具共同作用,提供了顺畅高效的开发体验,帮助开发者专注于构建跨平台应用程序。

工具链接: