我有一个非常简单的应用程序,只有一个视图,包含几个UILabel.在运行模拟时,Xcode控制台返回错误:
"libMobileGestalt MobileGestalt.c:875:此平台不支持MGIsDeviceOneOfType."
模拟器本身只显示一个白色屏幕.我也尝试在具有相同白屏的开发者设备上运行它.我搜索过文档,但找不到任何对'MGIsDeviceOneOfType'的引用.该应用程序是在Mac OS 10.14上的Xcode 10 beta版中用Swift编写的.我试图在iPhone 7-X模拟器以及开发iPhone 7上运行它,所有这些都运行目标软件(12.0).
tym*_*mac 24
MobileGestalt
该libMobileGestalt.dylib为所有iOS的属性的中央存储库.它可以类似于OS X的Gestalt,它是其中的一部分CoreServices.OS X的格式塔被记录为例如格式塔管理器,并且自10.8起已被弃用.MobileGestalt完全没有被Apple记录,因为它是一个私人图书馆.
MobileGestalt允许测试在不同模拟器上可能兼容或不兼容的系统属性.
iOS中有相当多的系统进程和应用程序依赖于MobileGestalt,它位于/usr/lib/libMobileGestalt.dylib.它更像是一个基本库,但其公开的API遵循Apple框架约定并使用MGAPI前缀MGIsDeviceOneOfType.
如果您在iOS文件系统上查找MobileGestalt,您将无法找到它 - 就像所有私有框架和库一样,它已预先链接到/System/Library/Caches/...etc.如果您喜欢黑客攻击和笔测试,那么您可以使用工具来提取它.
MobileGestalt在系统的各个方面提供大量信息 - 大约200个左右的查询.这里有几个.
libMobileGestalt.dylib
//Answers to MG queries
MGCopyAnswer(@"5MSZn7w3nnJp22VbpqaxLQ");
MGCopyAnswer(@"7mV26K/1a+wTtqiunvHMUQ");
MGCopyAnswer(@"BasebandAPTimeSync");
MGCopyAnswer(@"BasebandPostponementStatus");
MGCopyAnswer(@"BasebandPostponementStatusBlob");
MGCopyAnswer(@"BasebandSecurityInfoBlob");
MGCopyAnswer(@"BasebandStatus");
MGCopyAnswer(@"BuildVersion");
MGCopyAnswer(@"CoreRoutineCapability");
MGCopyAnswer(@"DeviceClass");
MGCopyAnswer(@"DeviceClassNumber");
MGCopyAnswer(@"DeviceName");
MGCopyAnswer(@"DeviceSupports1080p");
MGCopyAnswer(@"DeviceSupports720p");
MGCopyAnswer(@"DiskUsage");
MGCopyAnswer(@"GSDeviceName");
MGCopyAnswer(@"HWModelStr");
MGCopyAnswer(@"HasBaseband");
MGCopyAnswer(@"InternalBuild");
MGCopyAnswer(@"InverseDeviceID");
MGCopyAnswer(@"IsSimulator");
MGCopyAnswer(@"MLBSerialNumber");
MGCopyAnswer(@"MaxH264PlaybackLevel");
MGCopyAnswer(@"MinimumSupportediTunesVersion");
MGCopyAnswer(@"PasswordConfigured");
MGCopyAnswer(@"PasswordProtected");
MGCopyAnswer(@"ProductType");
MGCopyAnswer(@"ProductVersion");
MGCopyAnswer(@"RegionCode");
MGCopyAnswer(@"RegionalBehaviorNTSC");
MGCopyAnswer(@"RegionalBehaviorNoPasscodeLocationTiles");
MGCopyAnswer(@"ReleaseType");
MGCopyAnswer(@"SIMStatus");
Run Code Online (Sandbox Code Playgroud)
有数百例如AirplaneMode,MobileEquipmentIdentifier等等.
MobileGestalt维护一个OSType选择器代码表.例如:消息中的c:890:libMobileGestalt MobileGestalt.c:890:此平台不支持MGIsDeviceOneOfType.在这种情况下MGIsDeviceOneOfType,MobileGestalt库的方法.
不是检查模拟器版本,而是有一个单独的选择器,用于直接查询模拟器的功能.这些消息很可能表明模拟器版本与Xcode版本和/或模拟器上不支持的API之间不兼容.
Ale*_*ano 11
我已通过禁用项目垃圾成功删除了它。
转到< 项目名称 > ->方案 -> 编辑方案,然后转到“运行”(左侧菜单)并添加以下环境变量:
名称:OS_ACTIVITY_MODE,值:禁用
小智 7
我刚刚安装了Xcode 10 Beta并遇到了同样的问题.跑Xcode 9.4.1,问题就消失了.
仅在模拟器上测试/调试时才会发生此错误。
模拟器越新越好。
案例:我运行模拟器iPhone 8,并且在调试器中收到了此消息。
解决方案:我改用较新的模拟器,调试器中没有错误消息。
在Xcode 10.0上从GitHub打开某些项目时,请执行此操作。
务实的解决方案是:只需多次单击“继续执行程序”,并可能禁用异常断点。显然,异常是可以恢复的。
这不是一个真正的解决方案,但是对我而言已经足够了。
正在看到这个问题。使用Xcode 10.1 创建了一个全新的项目-除了显示白屏外什么都不做。发现它正在针对较旧设备的模拟器上显示。例如,iPad Pro(12.9英寸)和iPad Pro(12.9英寸)(第2代)显示了问题,但iPad Pro(12.9英寸)(第3代)没有出现问题。对于iPhone XR模拟器不显示。
基本上看起来很烦。
| 归档时间: |
|
| 查看次数: |
69764 次 |
| 最近记录: |