我有一个非常简单的应用程序,只有一个视图,包含几个UILabel。运行模拟后,Xcode控制台将返回错误:
" libMobileGestalt MobileGestalt.c:875:此平台不支持MGIsDeviceOneOfType。"
模拟器本身只显示白屏。我也尝试在具有相同白屏的开发者设备上运行它。我搜索了文档,但无法找到对MGIsDeviceOneOfType'的任何引用。 该应用程序是在Mac OS 10.14上的Xcode 10 beta版中用Swift编写的。我试图在iPhone 7-X模拟器以及开发iPhone 7上运行它,所有这些都运行目标软件(12.0)。
答案 0 :(得分:21)
MobileGestalt
libMobileGestalt.dylib 为iOS的所有属性提供了一个中央存储库。它可以类似于OS X的格式塔(Gestalt),它是CoreServices
的一部分。例如,Gestalt Manager中记录了OS X的格式塔,自10.8起已弃用。苹果完全没有记录 MobileGestalt ,因为它是一个私有库。
MobileGestalt允许测试可能在不同模拟器上兼容或不兼容的系统属性。
iOS中的很多系统进程和应用程序都依赖MobileGestalt,该文件位于/usr/lib/libMobileGestalt.dylib。它更像是一个基本库,但是其公开的API遵循Apple框架约定,并使用MG
API前缀,例如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");
还有数百个AirplaneMode
,MobileEquipmentIdentifier
等
MobileGestalt维护一个OSType选择器代码表。
例如消息中的 c:890 : libMobileGestalt MobileGestalt.c:890:此平台不支持MGIsDeviceOneOfType。在这种情况下,MGIsDeviceOneOfType
是一种 MobileGestalt库。
有一个单独的选择器可以直接查询模拟器的功能,而不是检查模拟器的版本。该消息最有可能表明模拟器版本与Xcode版本和/或模拟器上不受支持的API之间不兼容。
答案 1 :(得分:9)
我刚刚安装了Xcode 10 Beta,并且遇到了同样的问题。跑Xcode 9.4.1,问题就解决了。
答案 2 :(得分:7)
在我的情况下:检查您的应用程序委托以获取方法-didFinishLaunching。我有私人,并得到错误。删除“私有”后,一切正常
答案 3 :(得分:5)
在Xcode 10.0上从GitHub打开某些项目时,请执行此操作。
务实的解决方案是:只需多次点击“继续执行程序” ,并可能禁用异常断点。显然,异常是可以恢复的。
这不是一个真正的解决方案,但对当时的我来说已经足够了。
答案 4 :(得分:4)
我看到了这个问题。使用Xcode 10.1创建了一个全新的项目-除了显示白屏外什么都不做。发现它正在针对较旧设备的模拟器上显示。例如,iPad Pro(12.9英寸)和iPad Pro(12.9英寸)(第2代)显示了问题,但iPad Pro(12.9英寸)(第3代)却没有问题。对于iPhone XR模拟器不显示。
基本上看起来很烦人。
答案 5 :(得分:4)
仅当在模拟器上进行测试/调试时,才会发生此错误。
模拟器越新越好。
案例::我运行模拟器iPhone 8,并且在调试器中收到了此消息。
解决方案::我改用了较新的模拟器,调试器中没有错误消息。
答案 6 :(得分:4)
答案 7 :(得分:3)
答案 8 :(得分:2)
如果应用提供了字体,则需要添加到Info.plist 并检查文件是否选择了目标成员身份
答案 9 :(得分:1)
我去了XCode-> Preferences-> Components 选中所有模拟器和复选框以自动安装更新,然后单击“立即检查并安装”,并在它们全部更新后消失了几个小时。
现在问题已经解决了-实际上,正如所提到的。带有旧版的新XCode-未更新的模拟器。
答案 10 :(得分:1)
我遇到了同样的问题,但是我成功地将其删除并包含以下内容:
我希望这会有所帮助。
答案 11 :(得分:0)
发生奇怪错误的常规方法有所帮助:
1)清理项目;
2)关闭模拟器;
3)重新安装吊舱。
Xcode 10。
答案 12 :(得分:0)
我遇到了同样的问题,但是在MapKit中,没有显示MapView,只是白屏和相同的错误,该平台不支持MGIsDeviceOneOfType。
通过修复与MapView对象关联的“歧义布局”警告来解决此问题。现在它可以正常工作,并且错误消失了。
答案 13 :(得分:0)
对我有用的是在general > Deployment Info > Main Interface
中将CDVLaunchScreen更改为CDVLaunchScreen,并在general > App Icons and Launch Images > Launch Screen File
中将其更改为CDVLaunchScreen。
我来自Ionic,因此,对于那些使用Swift / Objective-C开发的人来说,这可能不是问题。
答案 14 :(得分:0)
对于我来说,在关注模拟器的情况下,我选择了“硬件”->“删除所有内容和设置”。
模拟器重新启动后,启动我的应用程序再次按预期工作。
答案 15 :(得分:0)
我最近更新为Xcode 10.2
,并且当我尝试运行在早期版本中创建的项目时,发生了相同的错误。
问题是模拟器在更新Xcode之前正在运行。
对于我来说,解决方案非常简单,可以退出Simulator并重新启动,以便获得新的更改。我认为模拟器的型号(iPhone SE或iPhone X)并不重要。您只需要重新启动模拟器即可使其生效。
我建议同时退出Xcode和模拟器,然后重新启动Mac。
答案 16 :(得分:0)
我通过在主队列上调用.sync
导致死锁(DispatchQueue.main.sync {}
)来获得此错误。我打算打.async
。
答案 17 :(得分:0)
当我尝试读取项目内部的json文件时,由于出现了此错误,因此出现了错误。
由于字体名称中的某些拼写错误,我得到了nil,那个json文件中保存着字体名称,在复制粘贴了字体名称后我得到了数据并修复了错误。
我尝试了上面给出的所有解决方案,没有任何效果,所以耐心地进行调试,您将知道是什么导致了此错误,并且在某些不好的时候,xcode会在我们的生活中发挥作用:)