【发布时间】:2020-11-14 11:25:15
【问题描述】:
我创建了一个框架(MainFramework),它使用其他框架作为可选依赖项。用户可以仅集成 MainFramework,或者如果需要额外的功能 - 下载可选框架。 这在通过 Cocoapods 集成时效果很好,例如:
pod 'MainFramework'
pod 'MainFramework/OptionalFrameworkA'
pod 'MainFramework/OptionalFrameworkB'
但我无法使用 Carthage 实现相同的行为。当我将指向可选框架的链接添加到 MainFramework 的 Cartfile 中时,然后在仅使用“MainFramework”的应用程序中尝试构建应用程序时出现错误:
dyld:库未加载:@rpath/OptionalFrameworkA.framework/OptionalFrameworkA
甚至从应用程序的运行脚本和嵌入框架部分中删除了可选框架。
这里有一件重要的事情,可选框架应该在 MainFramework 内部,因为它们使用用户无法使用的内部功能。同样在“MainFramework”中,我使用条件导入来检查模块是否可用:
#if canImport(OptionalFrameworkA)
可选框架太重(~50mb),即使不使用它们,也无法将它们包含到应用程序中。
【问题讨论】:
标签: ios swift frameworks carthage