swift 工程 TARGETS与预定义宏

前言

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

image.png

具体操作步骤:

1、通过如图方式复制一份现有工程,然后更名为:DoctorHealthSimulator

image.png

结果:


image.png

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

image.png

3、这时候真机运行的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工程,就达到了需要的效果,模拟器只是没有妙健康的功能(本来模拟器就不支持蓝牙等功能)

你可能感兴趣的:(swift 工程 TARGETS与预定义宏)