如何在Kotlin Multiplatform Mobile(KMM)中集成Amazon Amplify服务?
首先明确当前的官方生态现状:
截至目前,Amazon 尚未推出面向 Kotlin Multiplatform Mobile 的专属 Amplify SDK,官方现有 Amplify SDK 仅覆盖 Android 原生、iOS 原生、Web 技术栈,不存在可以直接在KMM公共代码层引入使用的现成跨端Amplify库。
目前可落地的可行路径主要有三类:
基于expect/actual机制封装双端原生Amplify SDK
这是当前生产项目中验证最充分的成熟方案,完全不需要依赖第三方非官方二次封装库:- 在KMM项目的公共共享代码层,按照业务实际需要,定义Amplify能力的抽象接口(比如身份认证、对象存储、GraphQL数据同步的方法签名)
- 在
androidMain源集下,直接引入官方Android版Amplify SDK,完成对应抽象接口的actual实现 - 在
iosMain源集下,通过Kotlin/Native与Swift的双向互操作能力,对接项目中引入的官方iOS版Amplify SDK,完成对应抽象接口的actual实现
这种方案的优势是完全对齐官方SDK的全量能力,没有功能裁剪,后续跟随官方SDK升级的维护成本极低。
按需搭配已支持KMM的AWS基础服务实现Amplify核心能力
如果项目对接Amplify的功能比较轻量化,不需要完整使用Amplify的全套上层封装逻辑,可以直接选择已经完成KMM适配的AWS基础服务SDK,按需组合实现需要的功能:比如用户认证对接已适配KMM的AWS Cognito SDK、文件存储对接已适配KMM的AWS S3 SDK、实时数据同步对接已适配KMM的AWS AppSync客户端。这种方案可以减少双端重复开发的工作量,但需要自行实现原本Amplify提供的配置管理、错误统一封装等上层逻辑。跟踪官方迭代计划储备后续迁移路径
当前AWS团队已经在公开的产品迭代待办列表中提及对主流跨端框架的支持规划,其中包含KMM适配的相关安排。如果项目上线周期不紧张,可以持续跟踪官方的版本发布动态,待专属Amplify KMM SDK正式落地后再完成无封装的原生集成;当前有紧急上线需求的项目不建议等待官方版本。
内容的提问来源于stack exchange,提问作者Fatin Wasta

