ios - tutorial - تحميل swift




خطأ Xcode على المحاكي: MGIsDeviceOneOfType غير مدعوم على هذا النظام الأساسي (11)

أرى هذه المشكلة. باستخدام Xcode 10.1. أنشئ مشروعًا جديدًا - لا يفعل شيئًا سوى إظهار شاشة بيضاء. اكتشف أنه كان يظهر على جهاز محاكاة للأجهزة القديمة. على سبيل المثال ، يُظهر iPad Pro (12.9 بوصة) و iPad Pro (12.9 بوصة) (الجيل الثاني) المشكلة ، ولكن المشكلة اختفت بالنسبة إلى iPad Pro (12.9 بوصة) (الجيل الثالث). لا تظهر لجهاز محاكاة iPhone XR.

يبدو أساسا مزعج.

لدي تطبيق بسيط للغاية مع عرض واحد ، يحتوي على عدة UILabels. عند التشغيل في Simulator ، ترجع وحدة تحكم Xcode الخطأ:

libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType غير مدعوم على هذا النظام الأساسي.

جهاز محاكاة نفسه يظهر فقط شاشة بيضاء. لقد حاولت أيضًا تشغيله على جهاز مطور بنفس الشاشة البيضاء. لقد بحثت في الوثائق لكن لا يمكنني العثور على أي إشارة إلى MGIsDeviceOneOfType . تتم كتابة التطبيق في سويفت في Xcode 10 beta على نظام التشغيل macOS 10.14. أحاول تشغيله على iPhone 7-X Simulators ، بالإضافة إلى تطوير iPhone 7 ، وكل ذلك يعمل على تشغيل البرنامج المستهدف (12.0).


إذا كان لديك خطوط مقدمة من التطبيق ، فستحتاج إلى إضافة إلى Info.plist وتحقق مما إذا كان الملف قد حددت "العضوية المستهدفة"


بالنسبة لي ، مع التركيز على جهاز المحاكاة المعني ، اخترت الأجهزة> مسح كل المحتوى والإعدادات.

بعد إعادة تشغيل جهاز المحاكاة ، بدأ تشغيل تطبيقي مرة أخرى ، كما هو متوقع.


تلقيت هذا الخطأ عن طريق الاتصال .sync على قائمة الانتظار الرئيسية التي تسببت في حالة توقف تام ( DispatchQueue.main.sync {} ). قصدته الاتصال. .async .


ساعدت الطريقة المعتادة عند حدوث أخطاء غريبة:

1) مشروع نظيف ؛
2) اغلاق محاكاة.
3) إعادة تثبيت القرون.

الكود 10.


سيحدث هذا الخطأ فقط عند اختبار / تصحيح الأخطاء على أجهزة المحاكاة.

أحدث جهاز محاكاة كان ذلك أفضل.

الحالة: قمت بتشغيل محاكي iPhone 8 plus حصلت على هذه الرسالة في المصحح.

الحل: لقد غيرت إلى جهاز محاكاة أحدث لا توجد رسالة خطأ في المصحح.


في حالتي: تحقق من مندوب التطبيق لديك لمعرفة الطريقة - didFinishLaunching. كان لي القطاع الخاص والحصول على الخطأ. بعد إزالة كل شيء "خاص" يعمل بشكل جيد


لقد قمت فقط بتثبيت Xcode 10 Beta وواجهت نفس المشكلة. ركض Xcode 9.4.1 والمشكلة ذهبت بعيدا.


لقد نجحت في إسقاطه مع تعطيل مشروع القمامة.

انتقل إلى < اسم مشروعك > -> المخطط -> تحرير المخطط ، ثم انتقل إلى تشغيل (القائمة إلى الجانب الأيسر) وأضف متغير البيئة التالي:

الاسم : OS_ACTIVITY_MODE ، القيمة : تعطيل


ما كان مناسبًا لي هو التغيير في general > Deployment Info > Main Interface إلى CDVLaunchScreen والقيام بنفس الشيء في general > App Icons and Launch Images > Launch Screen File إلى CDVLaunchScreen أيضًا.

لقد جئت من أيوني ، لذلك قد لا يكون هذا مشكلة بالنسبة لأولئك الذين يتطورون في Swift / Objective-C.


MobileGestalt

يوفر libMobileGestalt.dylib مستودعًا مركزيًا لجميع خصائص iOS. يمكن أن يكون مماثلاً لنظام Gestalt الخاص بـ OS X ، وهو جزء من CoreServices . تم توثيق Gestal's OS X على سبيل المثال Gestalt Manager وتم إهمالها اعتبارًا من 10.8. MobileGestalt غير موثقة تمامًا من قِبل Apple لأنها مكتبة خاصة.

يسمح MobileGestalt باختبار خصائص النظام التي قد تكون أو لا تكون متوافقة مع أجهزة محاكاة مختلفة.

تعتمد بعض عمليات النظام والتطبيقات في iOS على MobileGestalt ، الموجود في /usr/lib/libMobileGestalt.dylib. إنها أكثر من مكتبة أساسية ، لكن واجهات برمجة التطبيقات المكشوفة تتبع اصطلاحات إطار عمل Apple وتستخدم بادئة MG API على سبيل المثال MGIsDeviceOneOfType .

إذا كنت تبحث عن MobileGestalt على نظام ملفات iOS فلن تجده - مثل جميع الأُطُر الخاصة والمكتبات ، وقد تم ربطه مسبقًا بـ /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: 890 في الرسالة: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType غير مدعوم على هذا النظام الأساسي. في هذه الحالة ، تعد MGIsDeviceOneOfType طريقة لمكتبة MobileGestalt .

بدلاً من التحقق من إصدار المحاكاة ، يوجد محدد منفصل للاستعلام مباشرة عن إمكانات المحاكاة. تشير الرسائل على الأرجح إلى عدم التوافق بين إصدارات المحاكاة وإصدارات Xcode و / أو واجهات برمجة التطبيقات غير المدعومة على جهاز المحاكاة.





xcode