我有一个名为 ProductSDK 的 SDK。该SDK还有两个依赖sdk。
- CommonDependencySDK
- AdvanceDependencySDK
并尝试在ProductSDK中生成XCFramework。我的用例是,此 ProductSDK 中有 2 种类型的用例。一种是带有 CommonDependencySDK 的 ProductSDK,另一种是带有 CommonDependencySDK 和 AdvanceDependencySDK 的 ProductSDK。使用我的 ProductSDK 中的一些宏来处理这种情况。
但现在我的 ProductSDK 需要两个版本的 XCFramework。一种版本是使用 CommonDependencySDK 编译的 ProductSDK 源代码,另一种是使用 CommonDependencySDK 和 AdvanceDependencySDK 编译的 ProductSDK 源代码。
有人对此用例有任何想法吗?
或者处理可选依赖项而不是宏的替代方法是什么。
#if canImport(SDKName)
// Some codes
#else
// Some codes
#endif
最佳答案
XCFrameworks
应该通过合并不同平台的目标库二进制文件来取代通用框架。然而,在框架下包含依赖项方面没有任何变化。这种方法通常称为“伞”框架,是 considered a bad practice .
您应该做的是指示您的最终用户将他们的项目与您的框架所依赖的依赖项链接起来,并建议只需要一个依赖项,而另一个只是扩展功能。
关于ios - XCFramework生成时如何处理swift动态框架中的可选依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74794691/