我们遇到了一个非常奇怪的问题,这在我们的生产代码中造成了问题。基本上,我们创建了一个框架,该框架几乎没有单独的可选框架。现在,我们使用以下逻辑从框架访问代码:
#if canImport(optionalFramework)
firstMethodFromTheFramework()
secondMethodFromTheFramework()
#endif
问题在于,然后,我们将主框架与CocoaPods一起分发,即使客户集成了其他Subspec,我们的代码也无法引用其他框架。导入框架,并且不调用可选方法。因此它不能完全正常工作并会产生很多问题……我们根本不明白,为什么IOS开发不允许这种功能和架构?
最好模块化框架,而不是创建巨大的框架,这只会增加大小和复杂性。
如果客户端将其集成,也许还有其他方法可以从可选框架访问框架?
我们对于整个情况确实感到不确定,这对于我们的整个项目至关重要。
我将再澄清一次:我们的主框架根本不包括可选框架。它仅使用#if canImport()标志。客户应负责添加Pod,然后框架应自动开始执行代码
答案 0 :(得分:0)
我有同样的问题,它可以通过以下方法为我解决:
在框架中安装可选的pod-让它说是Alamofire-(您将在最后删除),以便可以在两个文件中找到该路径
从 FRAMEWORK_SEARCH_PATHS 复制此“ $ {PODS_CONFIGURATION_BUILD_DIR} / Alamofire”
并从 HEADER_SEARCH_PATHS 中复制此“ $ {PODS_CONFIGURATION_BUILD_DIR} /Alamofire/Alamofire.framework/Headers”
将您复制的内容放到任何地方,例如便笺文件
现在从框架podFile中删除pod(Alamofire),然后再次运行 pod install
手动超过在两个文件中复制的内容:
完成后, 现在,如果您将框架添加到另一个项目中,然后在该项目的podFile中安装optionalFramwork,一切都会很好
和 #if canImport(optionalFramework)。应该可以根据需要工作
希望能解决您的问题