Ich habe eine sehr einfache Anwendung mit einer einzigen Ansicht, die mehrere UILabels enthält. Beim Ausführen einer Simulation gibt die Xcode-Konsole den Fehler zurück:
"libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType wird auf dieser Plattform nicht unterstützt."
Der Simulator selbst zeigt nur einen weißen Bildschirm. Ich habe auch versucht, es auf einem Entwicklergerät mit demselben weißen Bildschirm auszuführen. Ich habe die Dokumentation gesucht, aber keinen Verweis auf 'MGIsDeviceOneOfType' gefunden. Die Anwendung ist in Swift in Xcode 10 beta auf macOS 10.14 geschrieben. Ich versuche, es auf den iPhone 7-X-Simulatoren sowie auf einem Entwicklungs-iPhone 7 auszuführen, auf dem die Zielsoftware (12.0) ausgeführt wird.
MobileGestalt
Das libMobileGestalt.dylib bietet ein zentrales Repository für alle Eigenschaften von iOS. Es kann analog zu OS Xs Gestalt sein, die Teil von CoreServices
ist. Die Gestalt von OS X ist beispielsweise dokumentiert Gestaltmanager und ist seit 10.8 veraltet. MobileGestalt wird von Apple völlig undokumentiert, da es sich um eine private Bibliothek handelt.
MobileGestalt ermöglicht das Testen von Systemeigenschaften, die auf verschiedenen Simulatoren möglicherweise kompatibel sind oder nicht.
Nicht wenige Systemprozesse und Apps in iOS verlassen sich auf MobileGestalt, das sich unter /usr/lib/libMobileGestalt.dylib befindet. Es handelt sich eher um eine Basisbibliothek, aber die offengelegten APIs folgen den Apple-Framework-Konventionen und verwenden das Präfix MG
für beispielsweise MGIsDeviceOneOfType
.
Wenn Sie auf dem iOS-Dateisystem nach MobileGestalt suchen, werden Sie es nicht finden - wie alle privaten Frameworks und Bibliotheken wurde es bereits in /System/Library/Caches/...etc eingebunden. Wenn Sie Hacking und Pen-Testing bevorzugen, können Sie Tools zum Extrahieren verwenden.
MobileGestalt bietet - rund 200 Abfragen - zahlreiche Informationen zu verschiedenen Aspekten des Systems. Hier sind ein paar.
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");
Es gibt Hunderte mehr, z. AirplaneMode
, MobileEquipmentIdentifier
usw.
MobileGestalt verwaltet eine Tabelle mit OSType-Auswahlcodes. _. Beispiel: c: 890 in der Nachricht: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType wird auf dieser Plattform nicht unterstützt. In diesem Fall ist MGIsDeviceOneOfType
eine Methode der MobileGestalt-Bibliothek.
Anstatt die Simulatorversion zu überprüfen, gibt es einen separaten Selektor zum direkten Abfragen der Fähigkeiten des Simulators. Die Meldungen weisen höchstwahrscheinlich auf Inkompatibilitäten zwischen Simulatorversionen und Xcode-Versionen und/oder nicht unterstützten APIs auf dem Simulator hin.
Ich habe gerade Xcode 10 Beta installiert und hatte das gleiche Problem. Ran Xcode 9.4.1 und das Problem ging weg.
in meinem Fall: Überprüfen Sie Ihren App-Delegaten auf method - didFinishLaunching. Ich hatte privat und bekomme den Fehler. Nach dem Entfernen von "privat" funktioniert alles gut
Dieser Fehler tritt nur beim Testen/Debuggen von Simulatoren auf.
Je neuer der Simulator, desto besser.
Fall: Ich lasse den Simulator iPhone 8 laufen und habe diese Meldung im Debugger erhalten.
Lösung: Ich habe zu einem neueren Simulator keine Fehlermeldung im Debugger geändert.
Ich sehe dieses Problem. Verwendung von Xcode 10.1. Ein brandneues Projekt erstellt - tut nichts außer einem weißen Bildschirm. Es wurde festgestellt, dass es für ältere Geräte auf dem Simulator angezeigt wurde. Beispielsweise zeigen iPad Pro (12,9 Zoll) und iPad Pro (12,9 Zoll) (2. Generation) das Problem, aber das Problem ist für iPad Pro (12,9 Zoll) (3. Generation) nicht mehr gegeben. Wird für den iPhone XR-Simulator nicht angezeigt.
Im Grunde nervig.
Ich bin beim Öffnen eines Projekts von GitHub auf Xcode 10.0 darauf gestoßen.
Die pragmatische Lösung war: einfach mit 'Programmausführung fortsetzen' mehrmals und wahrscheinlich den Ausnahmepunkt der Unterbrechung deaktivieren. Anscheinend war die Ausnahme wiederherstellbar.
Es ist keine echte Lösung, aber zu diesem Zeitpunkt war es für mich gut genug.
Wenn von der App Zeichensätze bereitgestellt werden, müssen Sie Info.plist .__ hinzufügen. Überprüfen Sie, ob für die Datei die Zielmitgliedschaft ausgewählt ist
Ich ging zu XCode -> Einstellungen -> Komponenten. Markierte alle Simulatoren und das Kontrollkästchen, um Updates automatisch zu installieren, und dann "Jetzt prüfen und installieren" und verschwand für ein paar Stunden, während sie alle aktualisiert wurden.
Jetzt ist das Problem weg - es ist also wie erwähnt. Neuer XCode mit alten - nicht aktualisierten Simulatoren.
Ich habe kürzlich auf Xcode 10.2
aktualisiert und als ich versuchte, ein in einer früheren Version erstelltes Projekt auszuführen, trat derselbe Fehler auf.
Das Problem war, dass der Simulator lief, bevor Xcode aktualisiert wurde.
Die Lösung war für mich sehr einfach, Simulator zu beenden und neu zu starten, damit die neuen Änderungen übernommen werden. Ich denke nicht, dass das Modell des Simulators (iPhone SE oder iPhone X) von Bedeutung ist. Sie müssen lediglich Ihren Simulator neu starten, damit das neue Update wirksam wird.
Ich würde empfehlen, sowohl Xcode als auch den Simulator zu beenden und den Mac neu zu starten.
Ich habe diesen Fehler erhalten, indem ich .sync
in der Hauptwarteschlange aufgerufen habe, wodurch ein Deadlock verursacht wurde (DispatchQueue.main.sync {}
). Ich wollte .async
anrufen.
Ich hatte das gleiche Problem, aber mit MapKit, bei dem MapView nicht angezeigt wurde, nur der weiße Bildschirm und derselbe Fehler, wird MGIsDeviceOneOfType auf dieser Plattform nicht unterstützt.
Behebung des Problems durch Behebung von "Ambiguous Layout" -Warnungen, die an das MapView-Objekt gebunden waren. Jetzt funktioniert es einwandfrei und die Fehler sind verschwunden.
Der normale Weg, wenn seltsame Fehler auftreten, hat geholfen:
1) Projekt reinigen;
2) Simulator herunterfahren;
3) Pods neu installieren.
Xcode 10.
Für mich, mit dem fraglichen Simulator, habe ich Hardware-> Alle Inhalte und Einstellungen löschen ausgewählt.
Nach dem Neustart des Simulators funktionierte der Start meiner App wie erwartet erneut.
Was für mich funktionierte, war, innerhalb von general > Deployment Info > Main Interface
zu CDVLaunchScreen zu wechseln und das gleiche innerhalb von general > App Icons and Launch Images > Launch Screen File
für CDVLaunchScreen zu tun.
Ich komme von Ionic, Das ist also kein Problem für diejenigen, die sich in Swift/Objective-C entwickeln.