2.2.3 SQLDelight SQLDelight(参考链接 6)由 Android 界的开源先锋 Square 开发,是我们目前调研过的最先进的 Kotlin 数据库框架。 因此 SQLDelight 是一个能满足多种开发环境,多种技术栈的数据库框架。 SQLDelight 示例代码如下图所示: 看上去 SQLDelight 完美适合我们的场景。但实际上我们对 SQLDelight 的调研非常早,那时它会在 iOS 上带来过大的 size 增长。 在近期我的调研中,在 x86 架构下 SQLDelight 带来的包 size 增长为 200 kb,比之前有所改善。 如果你准备从 0 打造一个 KMM app 或者你是某项目的基础架构团队的成员,我非常建议你尝试 SQLDelight。
Android Weekly Issue #722 重点报道 Compose Hot Reload 原理:支持在真机上实现 UI 热重载,大幅提升跨端开发效率(来源:Android Weekly) • SQLDelight 2.3.2 发布,跨平台数据库方案进一步完善;Coil 3.4.0 完全拥抱 KMP,iOS 与 Desktop 支持持续增强(来源:cashapp/sqldelight, coil-kt/coil) :runtime:2.3.2") // SQLDelight 2.3.2 } androidMain.dependencies { implementation("io.ktor:ktor-client-okhttp :3.0.0") implementation("app.cash.sqldelight:android-driver:2.3.2") } iosMain.dependencies { implementation ("io.ktor:ktor-client-darwin:3.0.0") implementation("app.cash.sqldelight:native-driver:2.3.2") } } }/
此外,许多流行的库已经采用了 Kotlin Multiplatform,包括异步事件处理框架 Ktor、类型安全的 SQL API 生成器 SQLDelight、GraphQL 客户端 Apollo 和依赖注入框架
Kotlin ViewModel Kotlin ViewModel(通过 KMP) ✅ 可以共享 业务逻辑 / 领域层 Kotlin 编写,完全共享 ✅ 完全共享 数据层(网络/本地存储) Ktor + SQLDelight 虽然新版本有所改善,但如果你的共享代码涉及复杂并发逻辑,需要额外注意 • 三方库生态:不是所有 Android 常用库都有 KMP 版本,比如 Room 的 KMP 版本(Room 2.7+)还相对较新,SQLDelight
navigation3模块正式进入CMP生态,组件化路由迎来跨平台新标准 • Hilt/Dagger 2.59.2发布:修复多个DI框架Bug,依赖注入稳定性增强,是模块化架构的核心基础设施 • ️ SQLDelight UseCase ↕ ⚙️ Domain层(UseCase) 纯Kotlin,无Android依赖,业务规则所在地 ↕ ️ Data层(Repository + DataSource) Room/SQLDelight
为此,我们使用 SQLDelight 及其 Android 与原生数据库驱动程序实现 Multiplatform 的持久存储。
Android 开源界的先锋 Square 团队开源了第一款用于 KMP 的数据库框架 SQLDelight(参考链接 9);也正在积极将包括 Okio 在内的自家许多 Android 库迁移至 KMP try-the-new-kotlin-native-memory-manager-development-preview/ 【10】Kotlin Roadmap https://kotlinlang.org/docs/roadmap.html 【11】SQLDelight https://cashapp.github.io/sqldelight/ 【12】workflow-kotlin https://github.com/square/workflow-kotlin
如果你曾在 Go 中使用过 sqlc,或在 Android 开发中体验过 sqldelight,那么 Wes Wickwire[29]创建的 PureSQL 将是你一直在等待的工具。
数据库:SQLDelight 2.3.x完全拥抱KMP,Room也发布了KMP版本。图片加载:Coil 3.4.0全面支持KMP。序列化:kotlinx.serialization天然跨平台。