MobileGestalt
La libMobileGestalt.dylib fournit un référentiel central pour toutes les propriétés d'iOS. Cela peut être analogue à Gestalt d'OS X, qui fait partie de CoreServices
. La Gestalt d'OS X est documentée par exemple Gestalt Manager et est obsolète à partir de la version 10.8. MobileGestalt est entièrement non documenté par Apple car il s'agit d'une bibliothèque privée.
MobileGestalt permet de tester les propriétés du système qui peuvent ou non être compatibles sur différents simulateurs.
De nombreux processus système et applications sous iOS reposent sur MobileGestalt, qui se trouve dans /usr/lib/libMobileGestalt.dylib. Il s'agit plus d'une bibliothèque de base, mais ses API exposées suivent les conventions du framework Apple et utilisent le MG
préfixe API par exemple MGIsDeviceOneOfType
.
Si vous recherchez MobileGestalt sur le système de fichiers iOS, vous ne le trouverez pas - comme tous les frameworks et bibliothèques privés, il a été pré-lié dans /System/Library/Caches/...etc. Si vous aimez le piratage et les tests de stylet, vous pouvez utiliser des outils pour l'extraire.
MobileGestalt fournit de nombreuses informations - environ 200 requêtes - sur divers aspects du système. Voici quelques-uns.
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");
Il y a des centaines d' autres , par exemple AirplaneMode
, MobileEquipmentIdentifier
etc.
MobileGestalt maintient une table des codes de sélecteur OSType. par exemple c: 890 dans le message: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType n'est pas pris en charge sur cette plate-forme. Dans ce cas, il MGIsDeviceOneOfType
s'agit d'une méthode de la bibliothèque MobileGestalt .
Au lieu de vérifier la version du simulateur, il existe un sélecteur séparé pour interroger directement les capacités du simulateur. Les messages indiquent très probablement des incompatibilités entre les versions du simulateur et les versions Xcode et / ou les API non prises en charge sur le simulateur.