【问题标题】:How to add Optional Dependencies in Carthage Framework?如何在 Carthage 框架中添加可选依赖项?
【发布时间】: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


    【解决方案1】:

    [已修复] 对于 Carthage,我只能使用 OptionalFrameworkA 和 OptionalFrameworkB 的单独目标来做到这一点。 Carthage 构建每个目标,因此以后的开发人员可以只导入他们需要的那些构建。如果有人好奇它是如何实现的,我可以建议查看下一个 repos:Moya & VGSCollect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-26
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2015-01-22
      相关资源
      最近更新 更多