web-dev-qa-db-ja.com

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

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

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

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

57
Woodman

MobileGestalt

libMobileGestalt.dylibは、iOSのすべてのプロパティの中央リポジトリを提供します。それはCoreServicesの一部であるOS XのGestaltに似ているかもしれません。 OS XのGestaltは、 Gestalt Manager などで文書化されており、10.8の時点で非推奨になりました。 MobileGestalt は、プライベートライブラリであるため、アップルによってまったく文書化されていません。

MobileGestaltでは、さまざまなシミュレータで互換性がある場合とそうでない場合があるシステムプロパティのテストが可能です。

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

IOSファイルシステムでMobileGestaltを検索しても見つからない - すべてのプライベートフレームワークやライブラリのように、/ System/Library/Cache /...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");

他にもたくさんあります。 AirplaneModeMobileEquipmentIdentifierなど.

MobileGestaltはOSTypeセレクタコードのテーブルを管理しています。例えば、 c:890 というメッセージ内: libMobileGestalt MobileGestalt.c:890:MGIsDeviceOneOfTypeはこのプラットフォームではサポートされていません。 この場合MGIsDeviceOneOfType MobileGestaltライブラリ のメソッドです。

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

15
tymac

私はXcode 10 Betaをインストールしたばかりで、同じ問題がありました。 Xcode 9.4.1を実行して問題は解決しました。

9
tjmister

プロジェクトガベージを無効にして、正常にドロップしました。

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

名前:OS_ACTIVITY_MODE、:無効

enter image description here

7

私の場合:あなたのアプリデリゲートでmethod - didFinishLaunchingをチェックしてください。私はプライベートだったし、エラーを受けます。 "private"を削除した後は全てうまくいきます

6
ankmara

このエラーは、シミュレータ上でテスト/デバッグを行っているときにのみ発生します。

シミュレータが新しいほど良い。

ケース: シミュレータiPhone 8を実行し、さらにこのメッセージをデバッガに表示しました。

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

3
JhonnyTawk

私の場合、ターゲットの配置ターゲットはiOS 8でした。iOS 10.3にプッシュしたとき、シミュレータとデバイスの両方で問題なく動作しました。

Changing the deployment target to fix libMobileGestalt error

2
Bharathram C

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

基本的には面倒なようです。

2
anorskdev

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

実際的な解決策は次のとおりです。 - 「プログラムの実行を続行する」 複数回、おそらく 例外ブレークポイントを無効にする 。どうやら例外は回復可能でした。

それは本当の解決策ではありませんが、それはその時点で私にとって十分に良かったです。

2
de.

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

1
Nuno Ferro

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

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

1
Harry McGovern

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

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

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

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

0
Gulfam Khan

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

0
Bartosz Kunat

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

MapViewオブジェクトに関連する「あいまいなレイアウト」の警告を修正することで解決しました。今、それは完全にうまくいっています、そしてエラーは消えました。

0
Strudel

奇妙なエラーが発生したときの通常の方法は助けになりました:

1)プロジェクトをきれいにする。
2)シミュレータをシャットダウンします。
3)ポッドを取り付けます。

Xcode 10.

0
Nik Kov

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

シミュレータの再起動後、私のアプリを起動しても期待通りに動作しました。

0
PKCLsoft

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

私はIonicから来ました、 /だからSwift/Objective-Cで開発している人には問題にならないかもしれません。

0
RaulGM