ข้อผิดพลาด Xcode บนโปรแกรมจำลอง: แพลตฟอร์มนี้ไม่รองรับ MGIsDeviceOneOfType


100

ฉันมีแอปพลิเคชั่นที่เรียบง่ายมากในมุมมองเดียวซึ่งมีป้ายกำกับ UIL หลายตัว เมื่อทำงานใน Simulator คอนโซล Xcode จะส่งกลับข้อผิดพลาด:

libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType ไม่รองรับบนแพลตฟอร์มนี้

ตัวจำลองแสดงเพียงหน้าจอสีขาว ฉันได้ลองใช้งานบนอุปกรณ์นักพัฒนาที่มีหน้าจอสีขาวเหมือนกัน ฉันได้ค้นหาเอกสาร MGIsDeviceOneOfTypeแต่ไม่สามารถหาอ้างอิงถึง แอปพลิเคชันเขียนด้วย Swift ใน Xcode 10 beta บน macOS 10.14 ฉันกำลังพยายามเรียกใช้งานบนเครื่องจำลอง iPhone 7-X รวมถึง iPhone 7 รุ่นพัฒนาทั้งหมดที่ใช้ซอฟต์แวร์เป้าหมาย (12.0)


1
คุณควรบอกว่าคุณใช้ XCode 10 Beta btw มีปัญหาเดียวกัน
kironet

คุณกำลังพยายามใช้ AWS MobileHub หรือไม่
Victor 'Chris' Cabral

2
พบข้อผิดพลาดนี้ในคอนโซลดีบักเมื่อเรียกใช้แอปออกแบบ MVC ที่สำคัญของผู้สอน ฉันใช้ Xcode 10 (ไม่ใช่เบต้า) ไม่ได้รับข้อผิดพลาดเมื่อทำงานบนอุปกรณ์จริง
Steve Robertson

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

คำตอบ:


25

MobileGestalt

libMobileGestalt.dylibให้พื้นที่เก็บข้อมูลกลางสำหรับทุกคุณสมบัติของ iOS มันอาจจะคล้ายกับ OS X ของ Gestalt CoreServicesซึ่งเป็นส่วนหนึ่งของ Gestalt ของ OS X ได้รับการจัดทำเป็นเอกสารตัวอย่างเช่นGestalt Managerและเลิกใช้งานแล้วเมื่อวันที่ 10.8 MobileGestaltไม่ได้รับการรับรองจาก Apple ทั้งหมดเนื่องจากเป็นห้องสมุดส่วนตัว

MobileGestalt ช่วยให้สามารถทดสอบคุณสมบัติของระบบที่อาจเข้ากันได้กับเครื่องจำลองต่างๆ

กระบวนการระบบและแอพบางส่วนใน iOS พึ่งพา MobileGestalt ซึ่งอยู่ที่ /usr/lib/libMobileGestalt.dylib มันขึ้นจากห้องสมุดพื้นฐาน แต่ APIs สัมผัสมันเป็นไปตามอนุสัญญากรอบแอปเปิ้ลและใช้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 และ / หรือ API ที่ไม่รองรับบนเครื่องจำลอง


3
ดูเหมือนจะเป็นเหตุผลที่สมเหตุสมผลสำหรับปัญหา คุณทำอะไรเพื่อแก้ไขปัญหานี้
Brian Sachetta

1
ตามที่ประโยคสุดท้ายแนะนำ ตรวจสอบให้แน่ใจว่าเวอร์ชันของซิมและเวอร์ชัน Xcode เข้ากันได้หรือใช้อุปกรณ์จริง
Edison

คุณเขียนข้อความค้นหาประมาณ 200 รายการแต่เห็นได้ชัดว่ามีคีย์ที่สับสนอยู่673รายการ [แก้ไข: ดีจังคุณชื่อ "tymac" ส่วนบล็อกมาจาก "timac" ... คงไม่ใช่เรื่องบังเอิญ]
Cœur

17

ฉันทิ้งมันสำเร็จแล้วด้วยการปิดใช้งานขยะโครงการ

ไปที่ < Name of your Project > -> Scheme -> Edit Schemeจากนั้นไปที่Run (เมนูทางด้านซ้าย) และเพิ่มตัวแปรสภาพแวดล้อมต่อไปนี้:

ชื่อ : OS_ACTIVITY_MODE ค่า : ปิดใช้งาน

ป้อนคำอธิบายภาพที่นี่


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 และเราอาจต้องอดทนรอ" เป็นอีกสิ่งหนึ่งที่จะเพิกเฉยต่อมันโดยสิ้นเชิง
Brian Sachetta

6

ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อทำการทดสอบ / แก้ไขข้อบกพร่องบนเครื่องจำลองเท่านั้น

เครื่องจำลองรุ่นใหม่ยิ่งดี

กรณี:ฉันใช้โปรแกรมจำลอง iPhone 8 plus ฉันได้รับข้อความนี้ในตัวดีบั๊ก

วิธีแก้ไข:ฉันเปลี่ยนเป็นโปรแกรมจำลองที่ใหม่กว่าไม่มีข้อความแสดงข้อผิดพลาดในดีบักเกอร์


5

พบปัญหานี้เมื่อเปิดบางโครงการจาก GitHub บน Xcode 10.0

วิธีแก้ปัญหาในทางปฏิบัติคือเพียงกด'ดำเนินการต่อโปรแกรมต่อไป'หลาย ๆ ครั้งและอาจปิดใช้งานเบรกพอยต์ข้อยกเว้นของคุณปิดการใช้งานเบรกพอยต์ข้อยกเว้นของคุณเห็นได้ชัดว่าสามารถกู้คืนข้อยกเว้นได้

มันไม่ใช่วิธีแก้ปัญหาที่แท้จริง แต่มันดีพอสำหรับฉันในตอนนั้น


ในกรณีของฉันการเปิดโปรเจ็กต์เก่าใน Xcode 10.1 เพียงแค่กด 'ดำเนินการต่อโปรแกรมต่อไป' หลาย ๆ ครั้งทำให้ฉันพบปัญหาจริงพร้อมวิธีแก้ปัญหาที่นี่stackoverflow.com/a/12398777/4221299
zeeawan

5

ในกรณีของฉันเป้าหมายการปรับใช้ของ Target อยู่ที่ iOS 8 เมื่อฉันดันขึ้นเป็น iOS 10.3 มันทำงานได้ดีทั้งบนเครื่องจำลองและอุปกรณ์

การเปลี่ยนเป้าหมายการปรับใช้เพื่อแก้ไขข้อผิดพลาด libMobileGestalt


1
ของฉันตั้งค่าเป็น 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 ได้ดังนั้นจึงไม่ควรถือว่าเครื่องจำลองพี่น้องเป็นอุปกรณ์ที่ไม่รองรับ
Abbey Jackson

สิ่งเดียวกันที่นี่ (หน้าจอมีเฉพาะ InputField และปุ่ม) Xcode 10 พร้อมโปรเจ็กต์ iOS 12: การใช้โปรแกรมจำลอง iPhone SE จะบันทึกข้อความนี้ แต่จะไม่แสดงพร้อมกับ iPhone XR
Neph


2

วิธีปกติเมื่อเกิดข้อผิดพลาดแปลก ๆ ช่วยได้:

1) โครงการสะอาด
2) ปิดเครื่องจำลอง;
3) ติดตั้งพ็อดอีกครั้ง

Xcode 10.


ที่ได้ผลสำหรับฉันเช่นกัน ขอบคุณมาก. ผู้ใช้ iOS บนแพลตฟอร์ม 'nativescript' คุณสามารถทำ (1) ล้างโปรเจ็กต์โดยการลบโฟลเดอร์ 'แพลตฟอร์ม / ios' (2) ปิดและรีเซ็ตตัวจำลองโดย "ลบเนื้อหาและการตั้งค่าทั้งหมด" และ (3) สร้างใหม่ โครงการโดย runnings 'tns เตรียม ios --release' แล้ว 'tns build ios --bundle' จากนั้นคุณสามารถเรียกใช้แอปในเครื่องจำลองโดยเปิดไฟล์. xcworkspace เลือกโปรแกรมจำลองและเรียกใช้โครงการจากที่นั่น มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน
Mick Morely

1

สำหรับฉันด้วยตัวจำลองที่เป็นปัญหาอยู่ในโฟกัสฉันจึงเลือกฮาร์ดแวร์ -> ลบเนื้อหาและการตั้งค่าทั้งหมด

หลังจากเครื่องจำลองรีสตาร์ทการเปิดแอปของฉันจะทำงานอีกครั้งตามที่คาดไว้


1
ตอนนี้ใช้ชื่อว่าDevice->Erase All Content and Settings...
Bruno Bieri

1

ฉันไปที่ XCode -> การตั้งค่า -> ส่วนประกอบเลือกตัวจำลองทั้งหมดและช่องทำเครื่องหมายเพื่อติดตั้งการอัปเดตโดยอัตโนมัติจากนั้น "ตรวจสอบและติดตั้งทันที" และจากไปสองสามชั่วโมงในขณะที่อัปเดตทั้งหมด

ตอนนี้ปัญหาหมดไป - จริงๆแล้วก็เป็นไปตามที่กล่าวไว้ XCode ใหม่พร้อมตัวจำลองเก่าที่ไม่ได้อัปเดต


มันจะกินหน่วยความจำมากไม่ใช่เหรอ?
Euridice01

0

ฉันมีปัญหาเดียวกัน แต่ด้วย MapKit ที่ MapView ไม่ปรากฏขึ้นมีเพียงหน้าจอสีขาวและข้อผิดพลาดเดียวกัน MGIsDeviceOneOfType ไม่ได้รับการสนับสนุนบนแพลตฟอร์มนี้

แก้ไขได้โดยแก้ไขคำเตือน "รูปแบบที่ไม่ชัดเจน" ที่เชื่อมโยงกับวัตถุ MapView ตอนนี้มันทำงานได้ดีและข้อผิดพลาดก็หายไป


0

สิ่งที่ได้ผลสำหรับฉันคือการเปลี่ยนภายในgeneral > Deployment Info > Main Interfaceเป็น CDVLaunchScreen และทำเช่นเดียวกันภายในgeneral > App Icons and Launch Images > Launch Screen FileCDVLaunchScreen ด้วย

ฉันมาจาก Ionicดังนั้นนี่อาจไม่ใช่ปัญหาสำหรับผู้ที่พัฒนาใน Swift / Objective-C


1
คุณแก้ไขอย่างไร ฉันก็มีปัญหาเดียวกัน แต่สิ่งนี้จะเกิดขึ้นเฉพาะเมื่อเรียกใช้ในการผลิตในไอออนิกและหลังจากนั้นฉันก็ติดอยู่ในตัวโหลดหน้าจอสแปลช
KnowledgeSeeker

0

ฉันเพิ่งอัปเดตเป็น Xcode 10.2และเมื่อฉันพยายามเรียกใช้โปรเจ็กต์ที่สร้างในเวอร์ชันก่อนหน้าเกิดข้อผิดพลาดเดียวกัน

ปัญหาคือเครื่องจำลองกำลังทำงานก่อนอัปเดต Xcode

วิธีแก้ปัญหานั้นง่ายมากสำหรับฉันที่จะออกจาก Simulator และรีสตาร์ทเพื่อให้สามารถรับการเปลี่ยนแปลงใหม่ได้ ฉันไม่คิดว่าโมเดลจำลอง (iPhone SE หรือ iPhone X) มีความสำคัญ คุณต้องรีสตาร์ทโปรแกรมจำลองของคุณเพื่อให้การอัปเดตใหม่มีผล

ฉันอยากจะแนะนำให้ออกทั้ง Xcode และโปรแกรมจำลองและรีสตาร์ท Mac ของคุณ


0

ฉันได้รับข้อผิดพลาดนี้จากการเรียก.syncใช้คิวหลักซึ่งทำให้เกิดการชะงักงัน ( DispatchQueue.main.sync {}) ฉันตั้งใจจะโทร.async.


0

ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามอ่านไฟล์ json ซึ่งอยู่ในโปรเจ็กต์ของฉันและมันส่งคืนศูนย์เนื่องจากฉันได้รับข้อผิดพลาดนี้

ฉันไม่มีศูนย์เนื่องจากมีข้อผิดพลาดในการสะกดชื่อฟอนต์ไฟล์ json นั้นมีชื่อฟอนต์อยู่หลังจากคัดลอกวางชื่อฟอนต์ฉันได้รับข้อมูลและแก้ไขข้อผิดพลาดแล้ว

ฉันลองใช้วิธีแก้ปัญหาเกือบทั้งหมดที่ระบุข้างต้นแล้วไม่มีอะไรได้ผลดังนั้นให้ดีบักด้วยความอดทนคุณจะได้รับรู้ว่าสิ่งใดทำให้เกิดข้อผิดพลาดนี้และในช่วงเวลาที่ไม่ดี xcode จะเล่นในชีวิตของเรา :)


0

ฉันประสบปัญหาเดียวกัน แต่ฉันประสบความสำเร็จในการทำสิ่งต่อไปนี้:

  1. เครื่องจำลองการปิดเครื่อง
  2. ปิดเครื่อง Xcode
  3. เปิด Xcode และโปรแกรมจำลองอีกครั้ง

ฉันหวังว่ามันจะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.