先说下方案:
采用两个Target管理 真机和模拟器 环境
一、创建多个Target
自行百度,这些只记录几个主要点
1.创建target_new时 复制原先的target
2.更改target_new的配置等相干信息(主要是名称)(schemes,targer_new-info.plist, Build Settings -> Packaging -> info.plist File<路径>)
至此差不多已经完成了Target的创建
二、修改需要区分环境的文件 所属的Target
1.先删除原有不需要文件的路径
因为全复制,所有原有文件的路径也复制了,找到对应target->build setting->Path ,找到错误的路径修改(Debug Release)
2.如果 库 添加到了 Embedded Binaries
删除 ,我操作时先没有删除,结果 xcode 奔溃了( -_- )
3.添加需要区分的文件,选择 目标target_new
三、Build Setting -> Build Active Architecture Only 设置
1.含义: Architecture : 指你想支持的指令集。
Valid architectures : 指即将编译的指令集。
Build Active Architecture Only : 只是否只编译当前适用的指令集。
2.指令集的支持
如果在工程Build Setting的Architectures 中的“Build Active Architecture Only”选择为YES, 则即使你设置成armv7 , armv7s同时支持,也只会编译对应指令集的包;若选择NO, 则编译器会整合两个指令集到一起,此时的包比较大,但是能在iPhone5上使用armv7s的优化,同时也能适配老的设备。
一般都是Debug时“Build Active Architecture Only”选择YES,用当前的架构看代码逻辑是否有问题;而在Release时选择NO,来适配不同的设备。
此外,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。所以生成静态库时都是会先生成两个.a,一个是i386的用于在模拟器运行,另一个是在真实设备上运行的,然后再用命令将两个.a合并成一个。
四、因为用了两个Target,所以以后添加文件 要选择目标 Target 了
-_-