🚀
高效开发
基于 Kotlin Multiplatform,实现 87.3% 代码复用率,显著提升开发效率
传统跨平台开发面临性能、体验、维护等多重挑战,Unify KMP 基于 Kotlin Multiplatform 技术栈,提供了完整的解决方案:
特性 | Unify KMP | React Native | Flutter | 原生开发 |
---|---|---|---|---|
代码复用率 | 87.3% | 70%+ | 80%+ | 0% |
性能表现 | 原生级 | 接近原生 | 接近原生 | 原生 |
开发语言 | Kotlin | JavaScript | Dart | 各平台语言 |
UI 框架 | Compose | React | Flutter | 各平台框架 |
学习成本 | 中等 | 低 | 中等 | 高 |
生态成熟度 | 快速发展 | 成熟 | 成熟 | 最成熟 |
共享业务逻辑层
Kotlin Multiplatform
|
+----------------+----------------+
| | |
Android App iOS App Web App
| | |
Desktop App HarmonyOS App Mini Program
| | |
Watch App TV App
平台特定实现 ──┐
expect/actual │
│
UI层 ──────────┼──── 共享业务逻辑层
Compose │
│
网络层 ────────┤
Ktor │
│
存储层 ────────┘
SQLDelight
@Composable
fun HelloWorldApp() {
var count by remember { mutableIntStateOf(0) }
MaterialTheme {
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Card {
Column(
modifier = Modifier.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "🚀 Unify-Core",
style = MaterialTheme.typography.headlineMedium,
color = MaterialTheme.colorScheme.primary
)
Text(
text = "Kotlin Multiplatform Compose 框架",
style = MaterialTheme.typography.bodyMedium
)
}
}
Card {
Column(
modifier = Modifier.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "计数: $count",
style = MaterialTheme.typography.headlineLarge
)
Button(
onClick = { count++ }
) {
Text("增加")
}
}
}
Card {
Column(
modifier = Modifier.padding(16.dp)
) {
Text(
text = "平台信息",
style = MaterialTheme.typography.titleMedium
)
Text("平台: ${getPlatformName()}")
}
}
}
}
}
// 共享代码 (commonMain)
expect fun getPlatformName(): String
// Android 实现 (androidMain)
actual fun getPlatformName(): String =
"Android ${Build.VERSION.RELEASE} (API ${Build.VERSION.SDK_INT})"
// iOS 实现 (iosMain)
actual fun getPlatformName(): String {
val device = UIDevice.currentDevice
return "iOS ${device.systemName} ${device.systemVersion}"
}
// Web 实现 (jsMain)
actual fun getPlatformName(): String = "Web (${js("navigator.userAgent")})"
我们欢迎社区贡献!请查看 贡献指南 了解如何参与项目开发。
本项目基于 MIT 许可证 开源发布。