私はいくつかのUILabelを含む単一のビューを持つ非常にシンプルなアプリケーションを持っています。シミュレーションを実行すると、Xcodeコンソールはエラーを返します。
libMobileGestalt MobileGestalt.c:875:MGIsDeviceOneOfTypeは、このプラットフォームではサポートされていません。
シミュレータ自体は白い画面を表示するだけです。私はまた、同じ白い画面を持つ開発者デバイスでそれを実行しようとしました。ドキュメントを検索しましたが、 'MGIsDeviceOneOfType'への参照が見つかりません。アプリケーションはMac OS 10.14上のXcode 10ベータ版でSwiftで書かれています。私はそれをiPhone 7-Xシミュレータ上で、そして開発中のiPhone 7上でも実行しようとしています。すべてのターゲットソフトウェア(12.0)を実行しています。
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");
他にもたくさんあります。 AirplaneMode
、MobileEquipmentIdentifier
など.
MobileGestaltはOSTypeセレクタコードのテーブルを管理しています。例えば、 c:890 というメッセージ内: libMobileGestalt MobileGestalt.c:890:MGIsDeviceOneOfTypeはこのプラットフォームではサポートされていません。 この場合MGIsDeviceOneOfType
は MobileGestaltライブラリ のメソッドです。
シミュレータのバージョンを確認する代わりに、シミュレータの機能を直接問い合わせるための別のセレクタがあります。メッセージは、シミュレータのバージョンとXcodeのバージョン間の非互換性、および/またはシミュレータ上でサポートされていないAPIを示している可能性があります。
私はXcode 10 Betaをインストールしたばかりで、同じ問題がありました。 Xcode 9.4.1を実行して問題は解決しました。
私の場合:あなたのアプリデリゲートでmethod - didFinishLaunchingをチェックしてください。私はプライベートだったし、エラーを受けます。 "private"を削除した後は全てうまくいきます
このエラーは、シミュレータ上でテスト/デバッグを行っているときにのみ発生します。
シミュレータが新しいほど良い。
ケース: シミュレータiPhone 8を実行し、さらにこのメッセージをデバッガに表示しました。
解決策: デバッガで新しいシミュレータのエラーメッセージなしに変更した。
この問題を見ています。 Xcode 10.1を使うまったく新しいプロジェクトを作成しました - 白い画面を表示する以外は何もしません。古いデバイスのシミュレータに表示されていたことを発見しました。たとえば、iPad Pro(12.9インチ)とiPad Pro(12.9インチ)(2代目)は問題を示していますが、iPad Pro(12.9インチ)(3代目)は問題が解決しました。 iPhone XRシミュレータには表示されません。
基本的には面倒なようです。
Xcode 10.0でGitHubからいくつかのプロジェクトを開くときにこれに遭遇しました。
実際的な解決策は次のとおりです。 - 「プログラムの実行を続行する」 複数回、おそらく 例外ブレークポイントを無効にする 。どうやら例外は回復可能でした。
それは本当の解決策ではありませんが、それはその時点で私にとって十分に良かったです。
アプリで提供されているフォントがある場合は、Info.plistに追加する必要があります。また、ファイルでターゲットメンバーシップが選択されているかどうかを確認します。
XCode-> Preferences-> Componentsに行き、すべてのシミュレーターとチェックボックスにチェックを入れてアップデートを自動的にインストールし、「今すぐチェックしてインストール」し、アップデートが完了するまで数時間離れました。
これで問題はなくなりました。実際、前述のとおりです。旧式の新しいXCode-更新されていないシミュレーター。
最近Xcode 10.2
に更新しましたが、以前のバージョンで作成されたプロジェクトを実行しようとすると、同じエラーが発生しました。
問題は、Xcodeを更新する前にシミュレータが実行されていたことです。
新しい変更を取得できるように、シミュレーターを終了して再起動するのは非常に簡単でした。シミュレーターのモデル(iPhone SEまたはiPhone X)は重要ではないと思います。新しいアップデートを有効にするには、シミュレータを再起動するだけです。
Xcodeとシミュレータの両方を終了して、Macを再起動することをお勧めします。
メインキューで.sync
を呼び出すとこのエラーが発生し、デッドロック(DispatchQueue.main.sync {}
)が発生しました。 .async
を呼び出すつもりでした。
私は同じ問題を抱えていましたが、MapViewが表示されないMapKitでは、白い画面と同じエラーが発生し、MGIsDeviceOneOfTypeはこのプラットフォームではサポートされません。
MapViewオブジェクトに関連する「あいまいなレイアウト」の警告を修正することで解決しました。今、それは完全にうまくいっています、そしてエラーは消えました。
奇妙なエラーが発生したときの通常の方法は助けになりました:
1)プロジェクトをきれいにする。
2)シミュレータをシャットダウンします。
3)ポッドを取り付けます。
Xcode 10.
私は、問題のシミュレータに焦点を合わせて、[ハードウェア] - > [すべてのコンテンツと設定を消去]を選択しました。
シミュレータの再起動後、私のアプリを起動しても期待通りに動作しました。
私にとってうまくいったのは、general > Deployment Info > Main Interface
内でCDVLaunchScreenに変更し、general > App Icons and Launch Images > Launch Screen File
内でCDVLaunchScreenにも同じことをすることでした。
私はIonicから来ました、 /だからSwift/Objective-Cで開発している人には問題にならないかもしれません。