大多数 iOS(和 Android)应用程序都是作为单个模块编写的,其中功能/层由文件夹分隔。如果操作正确,只需将整个文件夹移动到新创建的模块即可提取模块。不过,这种情况很少见。
众所周知,模块化是一个很好的架构决策,原因有很多:更好地分离关注点和特性、更简洁的代码、更容易在团队中进行沟通和协作。
随着模块数量的增长,有一天你肯定会遇到传递性框架依赖问题,在将构建上传到 App Store 后会产生“ITMS-90562: Invalid Bundle”问题。
免责声明:我们使用 Carthage 进行依赖管理。对于 CocoaPods 用户,此问题和解决方案可能不相关。
传递框架依赖
假设您有三个模块:A、B 和 C。A 依赖于 B,B 依赖于 C。这意味着 A 也依赖于 C,至少是间接的。A 是你的主模块,它被归档并发送到 App Store。
XCode 可以很好地处理此类依赖项,一旦您的应用程序成功编译,在运行时、开发和测试期间将不会缺少任何框架。
但是在 App Store 上传和处理构建之后,你很可能会从 App Store Connect 中得到“惊