シミュレータでのXcodeエラー:MGIsDeviceOneOfTypeはこのプラットフォームではサポートされていません


99

いくつかのUILabelを含む単一のビューを持つ非常にシンプルなアプリケーションがあります。シミュレーターで実行すると、Xcodeコンソールはエラーを返します。

libMobileGestalt MobileGestalt.c:875:MGIsDeviceOneOfTypeはこのプラットフォームではサポートされていません。

シミュレータ自体は白い画面を表示します。また、同じ白い画面の開発者用デバイスで実行してみました。ドキュメントを検索しましたが、への参照が見つかりませんMGIsDeviceOneOfType。アプリケーションは、macOS 10.14のXcode 10ベータ版のSwiftで記述されています。iPhone 7-Xシミュレーターと開発用iPhone 7で実行しようとしています。すべてターゲットソフトウェア(12.0)を実行しています。


1
XCode 10 Betaを使用していることを述べたはずです。同じ問題が発生しています
kironet

AWS MobileHubを使用しようとしていますか?
ビクター 'Chris' Cabral

2
インストラクターの主要なMVC設計アプリを実行しているときに、デバッグコンソールでこのエラーに遭遇しました。Xcode 10(ベータ版ではありません)を実行しています。実際のデバイスで実行してもエラーは発生しませんでした。
スティーブロバートソン

4
Xcode 10のアップデート後にこの問題が発生(ベータ版ではない)
MUH Mobile Inc.

1
問題は、シミュレータで実行されているプラ​​ットフォームに関連しているようです。空のプロジェクトを作成してコンパイルし、iPhone X、XR、XS、XS-Maxで実行したところ、問題はありませんでした。これより前の8 Plusから何でも実行すると、エラーが発生します。Mac OS X:10.13.6、Xcode:10.0
wbl2745 2018年

回答:


25

MobileGestalt

libMobileGestalt.dylibは、 iOSののすべてのプロパティの中央リポジトリを提供します。の一部であるOS XのGestaltに類似していCoreServicesます。OS XのGestaltは、Gestalt Managerなどでドキュメント化されており、10.8で非推奨になりました。MobileGestaltは非公開のライブラリであるため、アップルでは完全に文書化されていません

MobileGestaltを使用すると、さまざまなシミュレータで互換性があるかどうかに関係なく、システムプロパティをテストできます。

iOSのかなりの数のシステムプロセスとアプリは、/ usr / lib / libMobileGestalt.dylibにあるMobileGestaltに依存しています。これはより基本的なライブラリですが、その公開されたAPIはAppleフレームワークの規則に従い、MGたとえばAPIプレフィックスを使用しますMGIsDeviceOneOfType

iOSファイルシステムでMobileGestaltを探しても見つからない-すべてのプライベートフレームワークやライブラリのように、/ 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:890libMobileGestalt MobileGestalt.c:890:MGIsDeviceOneOfTypeはこのプラットフォームではサポートされていません。この場合MGIsDeviceOneOfTypeは、MobileGestaltライブラリのメソッドです。

シミュレーターのバージョンをチェックする代わりに、シミュレーターの機能を直接照会するための別個のセレクターがあります。メッセージは、シミュレータのバージョンとXcodeのバージョンの間の非互換性、および/またはシミュレータでサポートされていないAPIを示している可能性が高いです。


3
これは問題の論理的な理由のようです。問題を解決するために何をしましたか?
ブライアン・サケッタ

1
最後の文が示唆するように。simバージョンとXcodeバージョンに互換性があることを確認するか、実際のデバイスを使用してください。
エジソン

あなたは書いて200かそこらのクエリを、どうやらある673個の知ら難読化キーが。[編集:まあ、あなたの名前は「tymac」で、ブログは「timac」からです...おそらくない偶然の一致]
・クール

17

プロジェクトのガベージを無効にして、私はそれを無事に落としました。

< プロジェクトの名前 > ->スキーム -> スキームの編集に移動し、次に実行(左側のメニュー)に移動して、次の環境変数を追加します。

名前:OS_ACTIVITY_MODE、:disable

ここに画像の説明を入力してください


1
それは働く仲間です。なぜそれが機能しているのですか?
Aditya S.

1
これが答えではないが、それは、関連して重要です:stackoverflow.com/questions/52410471/...
dlpolanco

私はこのアプローチを試してみて、私のシミュレーターが開いておらず、コンソールに出力がないことを残念に思います。
Neeraj Shukla

この種類のカンマは特定のデバッグメッセージをドロップします。これは非常に便利で、シミュレータとコンソールの正しい動作とは何の関係もありません。おそらく、この引数に関連しない別の問題が発生しています。
Alessandro Ornano

次のエラーが発生しました:libMobileGestalt MobileGestalt.c:890:MGIsDeviceOneOfTypeはこのプラットフォームではサポートされていません。このため、上記のアプローチを試したところ、うまくいきませんでした。しかし、シミュレーターを終了してコードをクリーンアップしたところ、問題なく動作しました。
Neeraj Shukla

9

私の場合:メソッドのアプリデリゲートをチェックしてください-didFinishLaunching。私にはプライベートがあり、エラーが発生しました。「プライベート」を削除した後、すべてが正常に動作します


6
鉱山は非公開ではありませんでした。
ScottyBlades

8

Xcode 10 Betaをインストールしましたが、同じ問題が発生しました。Xcode 9.4.1を実行すると、問題は解消しました。


10
これは実行可能な回答ではないIMOです。特に、xcode 10は一般に公開されており、まだこの問題が発生しています。問題はxcode 9.4.1で「消え去る」ことはありませんでした-最初から存在することはありませんでした。「残念ながら、これはxcode 10の問題であり、我慢する必要があるかもしれません。」それを完全に無視することは別です。
ブライアンサケッタ

6

このエラーは、シミュレータでテスト/デバッグする場合にのみ発生します。

シミュレータは新しいほど良いです。

ケース:シミュレーターのiPhone 8を実行していますが、デバッガーでこのメッセージが表示されました。

解決策:デバッガーでエラーメッセージのない新しいシミュレーターに変更しました。


5

Xcode 10.0のGitHubからいくつかのプロジェクトを開くと、これに遭遇しました。

実用的な解決策は、「プログラムの実行を続ける」を数回押すだけで、例外ブレークポイントを無効にすることです。どうやら例外は回復可能でした。

それは実際の解決策ではありませんが、その時点で私には十分でした。


私の場合は、Xcodeの10.1で古いプロジェクトを開く、単に複数回、ここで溶液を用いて手で実際の問題に連れて行ってくれました「プログラムの実行を続行」ヒットstackoverflow.com/a/12398777/4221299
zeeawan

5

私の場合、ターゲットの展開ターゲットはiOS 8でした。iOS10.3にプッシュすると、シミュレーターとデバイスの両方で正常に実行されました。

libMobileGestaltエラーを修正するためのデプロイメントターゲットの変更


1
Mineは12.2に設定され、メッセージはiPhone SEシミュレーターで印刷されますが、iPhone XRシミュレーターでは印刷されません。したがって、少なくとも私にとっては、@ anorskdevは正しいです。
Neph

5

この問題が発生しています。Xcode 10.1の使用 まったく新しいプロジェクトを作成-白い画面を表示する以外は何もしません。古いデバイスのシミュレータに表示されていることがわかりました。たとえば、iPad Pro(12.9インチ)およびiPad Pro(12.9インチ)(第2世代)は問題を示していますが、iPad Pro(12.9インチ)(第3世代)の問題は解消されています。iPhone XRシミュレーターでは表示されません。

基本的に迷惑なようです。


これも私の原因でした。これが問題である理由はわかりません。私のiPadはiOS 12を実行できるので、兄弟シミュレーターはサポートされていないデバイスと見なされるべきではありません。
アビージャクソン

ここでも同じです(画面にはInputFieldとボタンしかありません)。Xcode 10とiOS 12プロジェクト:iPhone SEシミュレーターを使用すると、このメッセージが記録されますが、iPhone XRでは表示されません。
Neph

2

アプリで提供されているフォントがある場合は、Info.plistに追加して、ファイルにターゲットメンバーシップが選択されているかどうかを確認する必要があります


1

奇妙なエラーが発生したときの通常の方法は役に立ちました:

1)クリーンプロジェクト。
2)シミュレーターをシャットダウンします。
3)ポッドを再インストールします。

Xcode 10。


それもうまくいきました。どうもありがとう。「nativescript」プラットフォームを介したiOSのユーザーは、(1)「platforms / ios」フォルダーを削除してプロジェクトをクリーンアップし、(2)「すべてのコンテンツと設定を消去」してシミュレーターをシャットダウンしてリセットし、(3)再構築できます。 「tns prepare ios --release」を実行してから、「tns build ios --bundle」を実行してプロジェクトを作成します。次に、.xcworkspaceファイルを開いてシミュレーターでアプリを実行し、シミュレーターを選択して、そこからプロジェクトを実行できます。それは私には完璧に働きました。
ミックモリー

1

問題のシミュレーターに焦点を当てて、ハードウェア->すべてのコンテンツと設定を消去を選択しました。

シミュレーターが再起動した後、アプリの起動は期待どおりに機能しました。


1
それが今と呼ばれていますDevice- >Erase All Content and Settings...
ブルーノBieri

1

XCode-> Preferences-> Componentsの順に進み、すべてのシミュレーターとチェックボックスにチェックを入れてアップデートを自動的にインストールし、「今すぐチェックしてインストール」し、すべてが更新されるまで数時間離れました。

これで問題はなくなりました-実際には、それは前述のとおりです。古いXCode-更新されていないシミュレータ。


それは多くのメモリを消費するのではないですか?
Euridice01

0

同じ問題がありましたが、MapKitではMapViewが表示されず、白い画面と同じエラーが発生しましたが、このプラットフォームではMGIsDeviceOneOfTypeはサポートされていません。

MapViewオブジェクトに関連付けられた「あいまいなレイアウト」の警告を修正して解決しました。これで問題なく動作し、エラーはなくなりました。


0

私にとってうまくいったのgeneral > Deployment Info > Main Interfaceは、CDVLaunchScreen 内で変更し、CDVLaunchScreen内でも同じことを行うgeneral > App Icons and Launch Images > Launch Screen Fileことでした。

私はIonic出身なので、Swift / Objective-Cで開発する人には問題にならないかもしれません。


1
どのように修正しましたか?私も同じ問題を抱えていました。しかし、これはionicで本番
KnowledgeSeeker

0

最近Xcodeに更新し10.2ましたが、以前のバージョンで作成されたプロジェクトを実行しようとすると、同じエラーが発生しました。

問題は、Xcodeを更新する前にシミュレーターが実行されていたことでした。

新しい変更を取得できるように、シミュレーターを終了して再起動することは非常に簡単でした。シミュレーターのモデル(iPhone SEまたはiPhone X)は重要ではないと思います。新しいアップデートを有効にするには、シミュレータを再起動する必要があります。

Xcodeとシミュレータの両方を終了してMacを再起動することをお勧めします。


0

.syncメインキューを呼び出すことでこのエラーが発生し、デッドロック(DispatchQueue.main.sync {})が発生しました。電話するつもりだった.async


0

私のプロジェクト内にあるjsonファイルを読み込もうとしたときにこのエラーが発生し、nilが返されたため、このエラーが発生しました。

フォント名にスペルミスがあるためにnilになりました。そのjsonファイルにはフォント名が保持されていました。フォント名をコピーして貼り付けた後、データを取得してエラーを修正しました。

私は上記の解決策のほとんどすべてを試しましたが、何もうまくいきませんでした。そのため、忍耐してデバッグすると、このエラーの原因であることがわかり、xcodeが私たちの生活の中で再生されます:)


0

私は同じ問題に直面していましたが、以下のものでそれをうまく落としました:

  1. シャットダウンシミュレーター、
  2. Xcodeをシャットダウンし、
  3. Xcodeとシミュレーターを再度開く

お役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.