KMM实现iOS与Android业务逻辑共享

Viewed 0

Kotlin Multiplatform Mobile (KMM) 允许在 iOS 和 Android 间共享核心业务逻辑,同时保持平台特定的 UI 实现。本文通过一个计算器示例展示 KMM 的实现流程。

共享模块(Common Code)

在共享模块的 shared/src/commonMain/kotlin 目录中创建核心逻辑:

class Calculator {
    fun add(a: Double, b: Double): Double = a + b
    fun multiply(a: Double, b: Double): Double = a * b
}

Android 端实现

在 Android 模块中调用共享逻辑:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val calculator = Calculator()
        val result = calculator.add(3.0, 5.0)
    }
}

iOS 端实现

通过生成的 Framework 在 Swift 中调用共享代码:

import shared

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let calculator = Calculator()
        let result = calculator.multiply(a: 4.0, b: 6.0)
    }
}

配置依赖

build.gradle.kts 中配置 KMM 依赖:

kotlin {
    androidTarget()
    iosX64()
    iosArm64()
    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
        }
    }
}

技术优势

  • 代码复用率:业务逻辑代码复用率可达 70% 以上。
  • 性能:KMM 提供接近原生的执行效率,确保应用性能。
  • 维护成本:修改共享模块即可同步更新双平台逻辑,显著降低维护成本。

最佳实践

  • 将网络请求、数据库操作、算法等放入共享模块。
  • 平台特有功能(如蓝牙、传感器)通过 expect/actual 机制实现。
  • 使用 Ktor 共享网络层,SQLDelight 共享数据库。

通过 KMM,可以显著减少重复开发工作量,同时确保各平台的原生体验。

0 Answers