『导语』
在前端苹果iOS
或者安卓Android
开发中,经常用到模拟器,暂时代替真机进行调试功能。
但是,基于真实硬件
的API由于模拟器
本身的限制是不能被模拟出来的,因此应用但凡需要调用这些API的,都应该选择真机
调试。
模拟器和真机有什么区别呢?主要体现在以下几点:
序号 | 功能 | 真机Device | 模拟器Simulator | 备注 |
---|---|---|---|---|
① |
Email 、<br />电话 、<br />短信
|
支持 ✅ | 不支持❎ | 例如:<br />模拟器不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼叫(呼入和呼出) |
② |
相机 、<br />视频捕捉 <br />(如:录视频,拍照) |
支持 ✅ | 不支持❎ | 例如:<br />模拟器不可以进行二维码的扫描实现。模拟器虽然支持音乐/视频播放,但是不支持视频录制,拍照等 |
③ |
音频输入 <br />(录音) |
支持 ✅ | 不支持❎ | 例如:<br />模拟器可以将文字以语音模式播放,但是不能录制语音 |
④ |
扩展耳机 <br />(插耳机) |
支持 ✅ | 不支持❎ | 例如:模拟器不支持插入耳机进行听歌,毕竟引荐不支持呀! |
⑤ |
电池 电量水平和充电状态 |
支持 ✅ | 不支持❎ | 例如:<br />模拟器电量始终满格状态,如果做电量开发显示等,需要真机硬件系统才能体现出来。 |
⑥ |
SD卡 的插入/弹出 |
支持 ✅ | 不支持❎ | 例如:模拟器是个软件,不能支持插入SD卡来显示扩充容量相关信息 |
⑦ | 蓝牙 |
支持 ✅ | 不支持❎ | 例如:<br />模拟器不支持模拟器蓝牙传图,传歌等功能 |
⑧ |
USB 连接 |
支持 ✅ | 不支持❎ | 例如:<br />模拟器当然不能插入USB接口啦 |
⑨ | 连接状态 |
支持 ✅ | 不支持❎ | 例如:<br />模拟器不能判断USB接口的连接状态,毕竟模拟器根本就不支持USB连接。 |
⑩ | 大小写敏感 |
敏感 ✅ | 不敏感❎ | 例如:<br />在做Document 下文件移动时发觉在模拟器上运行正常,但是在真机上却找不到文件。这才发现真机与模拟器的大小写敏感不一致 |
⑪ | 处理器 |
arm 系列 |
i386 处理器 |
例如:<br /><br />真机指令集:arm(armv6、armv7、armv7s、armv8、armv64 )<br /><br />模拟器指令集x86 (i386、x86_64)
|
iOS 开发代码宏判断是模拟器还是真机?
一般项目中,可以使用宏定义来判断模拟器还是真机,这无疑是有效的。
#if TARGET_IPHONE_SIMULATOR
#define SIMULATOR 1
#elif TARGET_OS_IPHONE
#define SIMULATOR 0
#endif
这样直接就可以调用后加以判断是真机还是模拟器,来作出不同的动作
-
参考链接: