移动格式塔
该libMobileGestalt.dylib为所有iOS的属性的中央存储库。它可以类似于OS X的Gestalt,后者是的一部分CoreServices
。OS X的格式塔(Gestalt)例如记录在格式塔管理器(Gestalt Manager)中,自10.8起已弃用。Apple完全没有记录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之间不兼容。