105 votes

Erreur Xcode sur le simulateur: MGIsDeviceOneOfType n'est pas pris en charge sur cette plate-forme

J'ai une application très simple avec une vue unique, contenant plusieurs UILabels. Lors de l'exécution dans le Simulateur, la console de Xcode renvoie l'erreur:

libMobileGestalt MobileGestalt.c:875: MGIsDeviceOneOfType n'est pas pris en charge sur cette plateforme.

Le Simulateur lui-même montre juste un écran blanc. J'ai aussi essayé de le faire fonctionner sur une développeur de l'appareil avec le même écran blanc. J'ai cherché de la documentation, mais ne peut pas trouver aucune référence à l' MGIsDeviceOneOfType. L'application est écrite en Swift dans Xcode 10 beta sur macOS 10.14. Je tente de l'exécuter sur l'iPhone 7-X Simulateurs, ainsi que d'un développement de l'iPhone 7, tous les exécutant le logiciel cible (12.0).

28voto

tymac Points 7397

MobileGestalt

Le libMobileGestalt.dylib fournit un référentiel central pour tous les iOS de ses propriétés. Il peut être analogue à OS X de la Gestalt, qui fait partie de l' CoreServices. OS X Gestalt est documenté par exemple Gestalt Manager et a été abandonnée depuis 10.8. MobileGestalt est entièrement sans-papiers par Apple comme c'est une bibliothèque privée.

MobileGestalt permet de tester les propriétés du système qui peuvent ou peuvent ne pas être compatibles sur différents simulateurs.

Tout à fait un peu les processus du système et des applications dans iOS compter sur MobileGestalt, qui est situé à l'emplacement /usr/lib/libMobileGestalt.dylib. C'est plus une bibliothèque de base, mais son Api exposées suivre la Pomme cadre des conventions et des usages de l' MG API préfixe par exemple MGIsDeviceOneOfType.

Si vous recherchez MobileGestalt sur l'iOS système de fichiers, vous ne trouverez pas, comme tous les cadres et les bibliothèques, il a été prelinké dans /System/Library/Caches/...etc. Si vous aimez le piratage et la pen-test, alors vous pouvez utiliser des outils pour l'extraire.

MobileGestalt fournit de nombreuses informations autour de 200 requêtes sur les différents 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 de OSType sélecteur de codes. par exemple c:890 dans le message: libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType n'est pas pris en charge sur cette plateforme. Dans ce cas - MGIsDeviceOneOfType est une méthode de la MobileGestalt de la bibliothèque.

Au lieu de vérifier le simulateur version il existe un sélecteur pour les interrogeant directement les capacités du simulateur. Les messages les plus susceptibles d'indiquer des incompatibilités entre le simulateur et versions de Xcode versions et/ou de non prise en charge des Api sur le simulateur.

18voto

mrhevor Points 18

J'ai réussi à tomber avec la désactivation du projet d'ordures.

Accédez à <Nom du Projet>->Système->Modifier le Schéma , Puis aller à Exécuter (menu à gauche) et d'ajouter la variable d'environnement suivante:

Nom:OS_ACTIVITY_MODE, Valeur: désactiver

enter image description here

9voto

ankmara Points 89

dans mon cas: vérifiez la méthode de votre délégué d'application - didFinishLaunching. J'ai eu privé et obtenez l'erreur. Après avoir supprimé "privé" tout fonctionne bien

9voto

tjmister Points 111

Je viens d'installer Xcode 10 Beta et j'ai eu le même problème. Ran Xcode 9.4.1 et le problème a disparu.

6voto

user5303139 Points 51

Cette erreur ne se produira que lors des tests / débogages sur les simulateurs.

Plus le simulateur est récent, mieux c'est.

Cas: Je lance le simulateur iPhone 8 et j'ai reçu ce message dans le débogueur.

Solution: j'ai changé pour un simulateur plus récent sans message d'erreur dans le débogueur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X