Xcode 选择性编译的实现

都是iPhone X 惹的货。。。。

话说最近有用户说在iPhone X 上我们应用 展示的不友好,于是我们要搞适配(其实这事应该早下手的,但是我们的app 不支持模拟器。。。,这就是最大的坑,而且历史原因 里面的静态库的文件 不支持跨平台(x86_64上不可以用),导致之前一直都是真机调试),但是,一是iPhone X 比较贵,另外年末公司预算不批准买新机器,于是乎,将适配模拟器提上了日程。

先大体跑了跑,解决几个容易解决的:无非就是第三方的能找到模拟器的包的就 融合 替换下(lipo 命令 不懂的可以百度),下面就是棘手的问题了:找不到模拟器的包,咋整?下面说说我们采取的方案:另开辟一个scheme + xcode 选择性编译

开辟Scheme 用意是将真机与模拟器的target的分开,这样在添加(编译)文件的时候可以选择不同的target。

具体步骤如下:

1、将源TARGET 复制一份

复制完成之后如下所示


双击 copy 处 重命名为 后缀加上AAAAA

然后在 修改左上角的Scheme


点击Manage Schemes 


点击+号  然后在弹出窗 选择 新加的target


添加完成之后 再点击之前 copy 的那个scheme 然后点击-号  就完成了


有了两个target  添加文件的时候就可以根据不同的target 添加不同的文件了

第二个重要的步骤:对源码文件引入进行区分对待:此处的条件编译 拿是否是模拟器来举例

#if TARGET_IPHONE_SIMULATOR

#import "此文件只加到刚才的带AAAAA的TARGET上"

或者执行相应的代码

#elif TARGET_OS_IPHONE

#endif

这样就实现了 某些文件 只在某个scheme 上编译 从而解决一开始的问题了。。

这里只提供一个思路哈。。。。大神 轻喷。。

你可能感兴趣的:(Xcode 选择性编译的实现)