MobileGestalt
El libMobileGestalt.dylib proporciona un repositorio central para todas las propiedades de los IOS. Puede ser análogo a Gestalt de OS X, que es parte de CoreServices
. Gestalt de OS X está documentado, por ejemplo, Gestalt Manager y ha quedado obsoleto a partir de la versión 10.8. MobileGestalt está completamente indocumentado por Apple, ya que es una biblioteca privada.
MobileGestalt permite probar las propiedades del sistema que pueden o no ser compatibles en diferentes simuladores.
Un buen número de aplicaciones y procesos del sistema en iOS se basan en MobileGestalt, que se encuentra en /usr/lib/libMobileGestalt.dylib. Es más una biblioteca básica, pero sus API expuestas siguen las convenciones del marco de Apple y usan el MG
prefijo de API, por ejemplo MGIsDeviceOneOfType
.
Si busca MobileGestalt en el sistema de archivos de iOS, no lo encontrará; como todos los marcos y bibliotecas privados, se ha vinculado previamente a /System/Library/Caches/...etc. Si te gusta la piratería y las pruebas de lápiz, puedes usar herramientas para extraerlo.
MobileGestalt proporciona mucha información (alrededor de 200 consultas) sobre varios aspectos del sistema. A continuación se muestran algunos.
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");
Hay cientos más AirplaneMode
, por ejemplo MobileEquipmentIdentifier
, etc.
MobileGestalt mantiene una tabla de códigos de selección de OSType. por ejemplo c: 890 en el mensaje: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType no es compatible con esta plataforma. En este caso MGIsDeviceOneOfType
es un método de la biblioteca MobileGestalt .
En lugar de verificar la versión del simulador, hay un selector separado para consultar directamente las capacidades del simulador. Lo más probable es que los mensajes indiquen incompatibilidades entre las versiones del simulador y las versiones de Xcode y / o API no compatibles en el simulador.