MobileGestalt
O libMobileGestalt.dylib fornece um repositório central para todas as propriedades do iOS. Pode ser análogo ao Gestalt do OS X, do qual faz parte CoreServices
. O Gestalt do OS X está documentado, por exemplo, o Gestalt Manager e está obsoleto a partir de 10.8. MobileGestalt é totalmente não documentado pela Apple, pois é uma biblioteca privada.
MobileGestalt permite o teste de propriedades do sistema que podem ou não ser compatíveis em diferentes simuladores.
Muitos processos e aplicativos do sistema no iOS dependem do MobileGestalt, que está localizado em /usr/lib/libMobileGestalt.dylib. É mais uma biblioteca básica, mas suas APIs expostas seguem as convenções da estrutura da Apple e usam o MG
prefixo da API, por exemplo MGIsDeviceOneOfType
.
Se você procurar MobileGestalt no sistema de arquivos do iOS, não o encontrará - como todas as bibliotecas e estruturas privadas, ele foi pré-vinculado a /System/Library/Caches/...etc. Se você gosta de hacking e pen-testing, pode usar ferramentas para extraí-los.
O MobileGestalt fornece muitas informações - cerca de 200 consultas - sobre vários aspectos do sistema. Aqui estão alguns.
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");
Existem mais centenas AirplaneMode
, por exemplo MobileEquipmentIdentifier
, etc.
MobileGestalt mantém uma tabela de códigos do seletor OSType. por exemplo c: 890 na mensagem: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType não é suportado nesta plataforma. Neste caso, MGIsDeviceOneOfType
é um método da biblioteca MobileGestalt .
Em vez de verificar a versão do simulador, há um seletor separado para consultar diretamente os recursos do simulador. As mensagens provavelmente indicam incompatibilidades entre as versões do simulador e versões do Xcode e / ou APIs não suportadas no simulador.