0

我正在将第 3 方框架添加到我的旧项目中,该项目的最低部署目标是 iOS 9,但是,框架本身具有最低支持的 iOS 13 版本。通常,如果版本差异不是那么大,我可以微弱链接框架并在运行时检查系统版本(即。#available),然后如果版本允许,则可以选择使用框架,但是,在这种情况下,两个版本之间存在很大差距,并且框架不再具有类似的体系结构armv7,所以我集成 3rd 方框架后甚至无法构建项目。

我最终知道,我需要提高应用程序的目标部署版本来解决 ARCH 问题,但如果我的目标是只构建集成了 3rd 方框架的项目,我能做些什么吗?

到目前为止,我已经尝试过:

  1. 在具有更高部署目标版本的同一项目中的单独框架中使用 SDK,匹配 3rd 方框架所需的最低要求,但是当我在主目标中导入框架时它将不起作用:

为 iOS 9 编译,但模块“AnotherTargetFramework”的最低部署目标为 iOS 13.0

  1. 在单独的目标中使用 SDK,有一个Facade属于两个目标的类,Facade使用 3rd 方框架或基于 iOS 版本(即#available)的虚拟实现,但类似于 1,在构建使用的主要目标时Facade,它找不到仅属于另一个目标的类。

  2. 添加一个用户定义的宏,例如USE_3RDPARTYLIB,将 3rd 方框架的使用包装在 中#if USE_3RDPARTYLIB,并有一个USE_3RDPARTYLIB设置为 1 的方案,然后是一个构建阶段脚本检查 的值USE_3RDPARTYLIB,如果是,则1提升目标部署版本。

到目前为止 3 似乎正在工作,但有没有更好、更清洁的方法来实现同样的目标,而不会对项目设置产生太大影响?

谢谢!

4

0 回答 0