Ucself


嗨,我是ucself,一名大前端开发工程师。


总结与创造,学习与创新,搭建自我知识体系。

swift 工程 TARGETS与预定义宏

前言

       最近公司项目接入妙健康 framework 的时候,framework 不支持模拟器;如果接入进去整个工程都不支持模拟器了,这怎么得了,所以想了一个办法。 想到的办法与实践是:给整个 iOS 添加 TARGETS,模拟器使用的 Targets 工程 不接入妙健康 framework,真机运行的 Targets 工程接入妙健康 framework;其他项目文件两个 Targets 工程一起使用;共同使用的文件再根据各自的 Targets 工程预定义宏方式进行判断是否写秒健康代码,如图所示:

image.png

具体操作步骤:

  • 设置 Targets

       通过如图方式复制一份现有工程,然后更名为:DoctorHealthSimulator image.png 结果: image.png

  • 设置 targets 下的文件

       把不需要接入的 framework 或者文件的 Target Membership 的 DoctorHealthSimulator 为未选中,如果在没有写任何接入代码的时候,就可以用模拟器编译 DoctorHealthSimulator 就不会报错了 image.png

  • 设置文件引用,预编译宏

       这时候真机运行的 DoctorHealth 要写接入代码,而模拟器运行 DoctorHealthSimulator 不需要写接入代码,但是他们都引用了同一个文件,像下面这样干,

a、如果是 swift 工程项目,选中 DoctorHealth ->build Settings -> other swift flags 加入如图所示配置(最后一个) image.png

DoctorHealthSimulator 就不用配置任何东西 公用文件就像如图写: image.png

b、如果是 OC 项目工程,选中 DoctorHealth ->build Settings -> preprocessor macros 加入如图所示配置(最后一个) image.png 代码和 swift 工程方式写,配置完成

c、如果是混合编写的工程,OC 与 swift 代码都需要用到,则两个地方都要配置预编译宏

  • 这样就完成了所需的配置。

       只是模拟器运行 DoctorHealthSimulator 工程,真机运行 DoctorHealth 工程,就达到了需要的效果,模拟器只是没有妙健康的功能(本来模拟器就不支持蓝牙等功能)

下一篇文章

iOS框架如何发布到CocoaPods