ios - 如何管理我正在制作的框架与主应用程序之间的依赖项冲突?

标签 ios objective-c sdk frameworks dependencies

我正在制作一个将公开的框架(SDK)。我正在考虑一种情况,它通过 Cocoapods/Carthage 分发,而是通过一个简单的下载页面分发。

在 SDK 中,我需要为用户提供通过 Facebook 登录和分享的机会,因此我想使用适当的 Facebook SDK(我假设是 FBSDKLoginKit/ShareKit)。但是,如果我的 SDK 的最终用户也将拥有这些 Facebook SDK(或任何其他重复依赖项),则会发生冲突。 在不使用 Cocoapods/Carthage 的情况下处理这种情况的正确方法是什么?我相信,一种方法是避免将依赖项包含/静态链接到我的框架中,而是让最终用户单独下载依赖项,但也许还有另一种解决方法?让人们从不同的来源下载大量的库并不是很方便。

问题不是特别针对 Facebook SDK,而是关于开发框架/库时第三方依赖项的一般情况。

附言我发现了这个问题:Integrate Facebook SDK inside my iOS Framework .但它专门针对 Facebook,而且可能已经过时(自 2014 年以来 iOS 世界发生了很多事情)。

更新:SDK 将是闭源的。

最佳答案

您可以结合您建议的两个想法:

不要将其他 SDK 直接包含在您的框架中,而是在用户下载时将它们放在同一个项目中。这样,如果用户还没有它们,他们可以复制他们需要的所有框架。如果用户已经拥有它们,那么他们可以自己复制您的 SDK 并让它在他们的项目中运行。

这种组合还允许您在下载中包含测试和示例。然后,用户最终会下载一个完整的功能项目,他们可以在将其与自己的代码集成之前进行试用。

关于ios - 如何管理我正在制作的框架与主应用程序之间的依赖项冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762027/

相关文章:

android - Visual Studio 2015 Enterprise 报告 Internet 连接问题,而网络没有问题

ios - AngularJS Web 应用程序在 iPhone 6 上停止工作

Objective-C 中的 HTML 字符串

ios - 游戏中心 - 定位

objective-c - NSRegularExpression 错误 : Get into when false

java - 在内部使用共享类库,但在发布的 SDK 中不提供对它们的访问

android - 支持 Web 和移动设备的单一 AngularJS 代码库

ios - 无法使用模拟器从 iOS 中的 ImagePicker 获取图像路径和图像?

iphone - 使用 AVAssetExportSession 导出 Wav 文件

android - 由于 androidx.core 库不匹配,无法构建项目