Cocoapods是否支持在iOS应用和iOS扩展中使用共享框架,其中共享框架使用不是扩展安全的API?

时间:2016-11-13 04:38:55

标签: ios frameworks cocoapods ios-extensions

我支持一套相关的iOS应用程序,其中一些使用扩展程序(WatchKit和Today Widget)。所有这些应用程序和扩展都使用了我随着时间的推移建立的共享私有框架,用于处理围绕身份验证和常见业务逻辑的某些工作流程。该框架作为私有pod维护。

最近,我遇到了一个问题,我想在框架中添加一个只对iOS应用程序有用的方法(扩展程序不需要它)使用某些扩展不可用的API(例如[UIApplication sharedApplicaion])。我希望获得共享代码的通常好处,它只在一个地方(共享框架)实现,以便我可以利用各种应用程序。但是,我无法找到一种方法来有条件地仅针对应用而不是扩展而不会出现编译时错误。

enter image description here

针对此问题的正常建议通常suggest the use of a preprocessor macro如果需要选择退出有问题的代码,但这对于共享框架情况并非如此。宏在编译时应用,因此共享框架要么包含或不包含该方法,并且似乎不是一个运行时解决方案,可以选择性地排除它。如果包含,则扩展无法编译。如果未包含,我的应用无法使用该功能。

我也开始调查Cocoapods是否有某种方式可以自动生成两个版本的框架,一个由应用程序使用,另一个由扩展,但这似乎会引入重复符号的问题,并且通常似乎不受支持。

除了将有问题的功能提取到另一个框架之外,还有其他任何关于如何处理这个问题的建议吗? (我真的更愿意只分享一个)

0 个答案:

没有答案