如何检测应用程序正在模拟器或设备上运行[重复]
Posted
技术标签:
【中文标题】如何检测应用程序正在模拟器或设备上运行[重复]【英文标题】:How to detect app is running on simulator or device [duplicate] 【发布时间】:2012-03-31 20:39:57 【问题描述】:可能重复:Programmatically detect if app is being run on device or simulator
如何通过代码检测我的应用是在模拟器上运行还是在设备上运行。
【问题讨论】:
看到这个了吗?? ***.com/questions/5775420/… 重复了很多帖子:***.com/questions/5122149/…、***.com/questions/5775420/…、***.com/questions/458304/… @Fulvio 很抱歉,如果这听起来很刺耳。这个问题在 SO 上被问了很多。难道我们不应该在发布之前搜索与我们的问题相关的现有帖子吗? ***.com/questions/458304/…看看 【参考方案1】:请记住,UIDevice
已经为您提供了有关设备本身的信息。
[[UIDevice currentDevice] model]
您还可以使用以下内容:
TARGET_IPHONE_SIMULATOR
告诉你是否在 iPhone 模拟器中。
TARGET_OS_IPHONE
告诉您您正在使用 iPhone 而不是 MacOS。
#if TARGET_IPHONE_SIMULATOR
NSLog(@"Running in Simulator - no app store or giro");
#else
NSLog(@"Running on the Device");
#endif
只对设备感兴趣时
#if !(TARGET_IPHONE_SIMULATOR)
NSLog(@"Running on device");
#endif
【讨论】:
【参考方案2】:你可以使用这个常量
#if TARGET_OS_SIMULATOR
NSLog(@"This is simulator mode....");
#else
NSLog(@"This is device mode....");
#endif
【讨论】:
【参考方案3】:相同的编译应用不能在模拟器和 ios 设备上运行,因为 CPU 指令集完全不同(x86 与 ARM)。 (...除非您正在使用 lipo 构建某种非常奇怪的超级通用二进制文件)
有几种方法可以确定应用程序是否针对 x86 编译。一种是添加不同的运行时代码,具体取决于许多预定义的编译器预处理器宏之一。您可以通过在终端命令行上键入以下内容来获取 x86 编译的预处理器宏列表:
gcc -arch i386 -dM -E -
【讨论】:
以上是关于如何检测应用程序正在模拟器或设备上运行[重复]的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 模拟器 - 如何检测应用程序何时在模拟器上运行(因此可以设置测试数据)?
Android - 如何检测应用程序是否在Nox模拟器上运行?