it-swarm.com.de

Xcode-Fehler bei der Simulation: MGIsDeviceOneOfType wird auf dieser Plattform nicht unterstützt

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.

57
Woodman

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. 

15
tymac

Ich habe gerade Xcode 10 Beta installiert und hatte das gleiche Problem. Ran Xcode 9.4.1 und das Problem ging weg.

9
tjmister

Ich habe es erfolgreich mit dem Deaktivieren des Projektmülls gelöscht.

Gehen Sie zu < Name Ihres Projekts > -> Schema -> Schema bearbeiten Gehen Sie dann zu Ausführen (Menü auf der linken Seite) und fügen Sie hinzu die folgende Umgebungsvariable:

Name : OS_ACTIVITY_MODE, Wert : Deaktivieren

enter image description here

7

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

6
ankmara

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.

3
JhonnyTawk

In meinem Fall war das Implementierungsziel des Ziels auf iOS 8. Als ich es auf iOS 10.3 erhöhte, lief es sowohl auf dem Simulator als auch auf dem Gerät einwandfrei.

 Changing the deployment target to fix libMobileGestalt error

2
Bharathram C

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. 

2
anorskdev

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. 

2
de.

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

1
Nuno Ferro

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.

1
Harry McGovern

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.

0
Gulfam Khan

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.

0
Bartosz Kunat

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.

0
Strudel

Der normale Weg, wenn seltsame Fehler auftreten, hat geholfen: 

1) Projekt reinigen;
2) Simulator herunterfahren;
3) Pods neu installieren.

Xcode 10.

0
Nik Kov

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.

0
PKCLsoft

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.

0
RaulGM