Kotlin Multiplatform Mobile 的三模块问题,网易严选Android开发三面面经

值得一提的是,“作者”和“书”模块依赖于“身份验证”模块来服务经过身份验证的用户实体,以便后端可以返回个性化响应 —— 作家和书籍。

实际问题

这种方法在 Android 应用程序中效果很好,但是一旦将其应用于导入了 KMP 驱动的框架的 iOS 应用程序中,就会产生繁琐的问题。

实际的问题是,在 iOS 模块的编译过程中,Kotlin/Native 插件包含了当前已编译的模块中全部的依赖关系,因此它是内置的。此外,为防止冲突,它会在所有显式的依赖项名的前面加上对应的库名。

image.png

这对于单个模块或一组独立模块非常方便。但是,一旦两个或多个模块使用了 iOS 应用程序可见的相同依赖项,你就复制出了多个版本的相同依赖项。

在我们的示例中,来自作者模块的用户实体和来自图书模块的用户实体在 Android 应用程序中将是相同的,但在 iOS 应用程序中将是两个不同的实体,即使它们是相同的。

换句话说,我们在 iOS 应用程序中会有两个截然不同的身份验证模块,而且它们之间不共享任何内容,毫无关联 —— 不共享类、状态等一切东西!

实际解决方案

我有幸与一个 KMP 团队探讨了这个问题,他们推荐的解决方案(至少这是 6 个月前的最优解)是使用 Umbrella 模块,它包含了所有共享的 KMP 模块。这是一个会被导入到 iOS 应用程序中的框架。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值