MobileGestalt
LibMobileGestalt.dylib забезпечує централізоване сховище для всіх властивостей Іос. Це може бути аналогом гештальта OS X, який є частиною CoreServices
. Гештальт OS X задокументований, наприклад, Менеджер гештальт-програм, і його застаріло станом на 10.8. MobileGestalt повністю недокументована Apple, оскільки це приватна бібліотека.
MobileGestalt дозволяє проводити тестування властивостей системи, які можуть бути або не бути сумісними на різних тренажерах.
Досить багато системних процесів та програм в iOS покладаються на MobileGestalt, який знаходиться за адресою /usr/lib/libMobileGestalt.dylib. Це більше базової бібліотеки, але відкриті API-інтерфейси відповідають рамковим умовам Apple і, наприклад, використовують MG
префікс API MGIsDeviceOneOfType
.
Якщо ви шукаєте MobileGestalt у файловій системі iOS, ви не знайдете його - як і всі приватні фреймворки та бібліотеки, він попередньо підключений до /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 на симуляторі.