Lỗi Xcode trên Trình mô phỏng: MGIsDeviceOneOfType không được hỗ trợ trên nền tảng này


99

Tôi có một ứng dụng rất đơn giản với một chế độ xem duy nhất, chứa một số UILabels. Khi chạy trong Trình mô phỏng, bảng điều khiển Xcode trả về lỗi:

libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType không được hỗ trợ trên nền tảng này.

Bản thân Trình mô phỏng chỉ hiển thị một màn hình trắng. Tôi cũng đã thử chạy nó trên thiết bị của nhà phát triển có cùng màn hình trắng. Tôi đã tìm kiếm tài liệu nhưng không thể tìm thấy bất kỳ tài liệu tham khảo nào MGIsDeviceOneOfType. Ứng dụng được viết bằng Swift trong Xcode 10 beta trên macOS 10.14. Tôi đang cố gắng chạy nó trên Bộ mô phỏng iPhone 7-X, cũng như iPhone 7 đang phát triển, tất cả đều chạy phần mềm đích (12.0).


1
Bạn nên đề cập rằng bạn đang sử dụng XCode 10 Beta. btw có cùng một vấn đề
kironet

Bạn đang cố gắng sử dụng AWS MobileHub?
Victor 'Chris' Cabral

2
Gặp lỗi này trong bảng điều khiển gỡ lỗi khi chạy ứng dụng thiết kế MVC quan trọng của người hướng dẫn. Tôi đang chạy Xcode 10 (không phải phiên bản beta). Không gặp lỗi khi chạy trên thiết bị thực tế.
Steve Robertson

4
Có vấn đề này sau khi Xcode 10 bản cập nhật (không beta)
Muh Mobile Inc.

1
Sự cố dường như liên quan đến nền tảng đang chạy trong trình mô phỏng. Tôi đã tạo một dự án trống, được biên dịch và chạy trên iPhone X, XR, XS và XS-Max và không có vấn đề gì. Chạy nó trên bất kỳ thứ gì trước đó, bắt đầu với 8 Plus và lỗi xảy ra. Mac OS X: 10.13.6, Xcode: 10,0
wbl2745

Câu trả lời:


25

MobileGestalt

Các libMobileGestalt.dylib cung cấp một kho trung tâm cho tất cả các thuộc tính của iOS. Nó có thể tương tự như Gestalt của OS X, là một phần của CoreServices. Gestalt của OS X được ghi lại, chẳng hạn như Gestalt Manager và đã không được dùng nữa kể từ ngày 10.8. MobileGestalt hoàn toàn không có giấy tờ của Apple vì nó là một thư viện riêng.

MobileGestalt cho phép kiểm tra các thuộc tính hệ thống có thể tương thích hoặc không tương thích trên các trình mô phỏng khác nhau.

Khá nhiều quy trình hệ thống và ứng dụng trong iOS dựa trên MobileGestalt, có tại /usr/lib/libMobileGestalt.dylib. Nó giống một thư viện cơ bản hơn, nhưng các API tiếp xúc của nó tuân theo các quy ước khung của Apple và sử dụng MGtiền tố API chẳng hạn MGIsDeviceOneOfType.

Nếu bạn tìm MobileGestalt trên hệ thống tệp iOS, bạn sẽ không tìm thấy nó - giống như tất cả các khung và thư viện riêng tư, nó đã được liên kết trước vào /System/Library/Caches/...etc. Nếu bạn thích hack và thử nghiệm bút thì bạn có thể sử dụng các công cụ để giải nén nó.

MobileGestalt cung cấp nhiều thông tin - khoảng hơn 200 truy vấn - về các khía cạnh khác nhau của hệ thống. Ở đây có một ít.

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");

Có hàng trăm người khác ví dụ như AirplaneMode, MobileEquipmentIdentifiervv

MobileGestalt duy trì một bảng mã bộ chọn OSType. ví dụ c: 890 trong thông báo: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType không được hỗ trợ trên nền tảng này. Trong trường hợp MGIsDeviceOneOfTypenày là một phương thức của thư viện MobileGestalt .

Thay vì kiểm tra phiên bản trình mô phỏng, có một bộ chọn riêng để truy vấn trực tiếp các khả năng của trình mô phỏng. Các thông báo rất có thể cho biết sự không tương thích giữa các phiên bản trình mô phỏng và phiên bản Xcode và / hoặc các API không được hỗ trợ trên trình mô phỏng.


3
Đây có vẻ như là một lý do hợp lý cho vấn đề. Bạn đã làm gì để khắc phục sự cố?
Brian Sachetta,

1
Như câu cuối cùng gợi ý. Đảm bảo các phiên bản sim & phiên bản Xcode tương thích hoặc chỉ sử dụng thiết bị thực.
Edison

Bạn đã viết hơn 200 truy vấn , nhưng dường như có 673 khóa bị xáo trộn đã biết . [chỉnh sửa: ồ ồ, tên của bạn là "tymac" và blog là từ "timac" ... có lẽ không phải là sự trùng hợp]
Cœur vào

17

Tôi đã loại bỏ nó thành công với việc tắt dự án rác.

Đi tới < Tên dự án của bạn > - > Lược đồ -> Chỉnh sửa lược đồ Sau đó đi tới Chạy (menu bên trái) và thêm biến môi trường sau:

Tên : OS_ACTIVITY_MODE, Giá trị : vô hiệu hóa

nhập mô tả hình ảnh ở đây


1
Đó là người bạn đời. Bất kỳ lời giải thích tại sao nó hoạt động?
Aditya S.

1
Đây không phải là câu trả lời, nhưng nó có liên quan và quan trọng: stackoverflow.com/questions/52410471/…
dlpolanco

Tôi rất tiếc khi thử cách tiếp cận này, trình mô phỏng của tôi không mở và không có đầu ra ở bảng điều khiển.
Neeraj Shukla

Loại dấu phẩy này thả một số thông báo gỡ lỗi nhất định, nó rất hữu ích và nó không liên quan gì đến hoạt động chính xác của trình mô phỏng và bảng điều khiển: có thể bạn gặp một vấn đề khác không liên quan đến đối số này.
Alessandro Ornano

Tôi đã gặp lỗi như: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType không được hỗ trợ trên nền tảng này. Đối với điều này khi tôi thử cách tiếp cận ở trên, điều này không hoạt động. Nhưng khi tôi thoát khỏi trình mô phỏng và làm sạch mã của mình, thì nó hoạt động tốt.
Neeraj Shukla,

9

trong trường hợp của tôi: hãy kiểm tra đại biểu ứng dụng của bạn để tìm phương thức - didFinishLaunching. Tôi đã có quyền riêng tư và nhận được lỗi. Sau khi xóa "riêng tư", mọi thứ hoạt động tốt


6
Của tôi không phải là riêng tư.
ScottyBlades

8

Tôi vừa cài đặt Xcode 10 Beta và gặp sự cố tương tự. Chạy Xcode 9.4.1 và sự cố đã biến mất.


10
Đây không phải là một câu trả lời khả thi IMO, đặc biệt là hiện tại xcode 10 đang tồn tại và vẫn còn vấn đề này. Vấn đề đã không "biến mất" trên xcode 9.4.1 - nó chưa bao giờ tồn tại ngay từ đầu. Phải nói một điều rằng "rất tiếc đây là vấn đề xcode 10 và chúng tôi có thể phải kiên nhẫn." Đó là một người khác để bỏ qua nó hoàn toàn.
Brian Sachetta,

6

Lỗi này sẽ chỉ xảy ra khi kiểm tra / gỡ lỗi trên trình mô phỏng.

Trình mô phỏng càng mới càng tốt.

Trường hợp: Tôi chạy trình mô phỏng iPhone 8 plus Tôi nhận được thông báo này trong trình gỡ lỗi.

Giải pháp: Tôi đã thay đổi sang trình mô phỏng mới hơn không có thông báo lỗi trong trình gỡ lỗi.


5

Gặp phải vấn đề này khi mở một số dự án từ GitHub trên Xcode 10.0.

Giải pháp thực tế là: chỉ cần nhấn 'Tiếp tục thực thi chương trình' nhiều lần và có thể vô hiệu hóa điểm ngắt ngoại lệ của bạn . Rõ ràng là ngoại lệ có thể khôi phục được.

Đó không phải là một giải pháp thực sự nhưng nó đủ tốt cho tôi vào thời điểm đó.


Trong trường hợp của tôi, khi mở một dự án cũ trong Xcode 10.1, chỉ cần nhấn 'Tiếp tục thực thi chương trình' nhiều lần, tôi sẽ gặp sự cố thực sự với giải pháp tại đây stackoverflow.com/a/12398777/4221299
zeeawan

5

Trong trường hợp của tôi, Mục tiêu triển khai của Target là ở iOS 8. Khi tôi đẩy nó lên iOS 10.3, nó chạy tốt, cả trên Trình mô phỏng và thiết bị.

Thay đổi mục tiêu triển khai để sửa lỗi libMobileGestalt


1
Của tôi được đặt thành 12,2 và tin nhắn được in bằng trình mô phỏng iPhone SE nhưng không phải với trình mô phỏng iPhone XR. Vì vậy, ít nhất đối với tôi, @anorskdev là đúng.
Neph

5

Tôi thấy vấn đề này. Sử dụng Xcode 10.1. Đã tạo một dự án hoàn toàn mới - không làm bất cứ điều gì ngoại trừ hiển thị màn hình trắng. Phát hiện ra nó đang hiển thị trên trình mô phỏng cho các thiết bị cũ hơn. Ví dụ: iPad Pro (12,9 inch) và iPad Pro (12,9 inch) (thế hệ thứ 2) cho thấy vấn đề, nhưng vấn đề đã biến mất đối với iPad Pro (12,9 inch) (thế hệ thứ 3). Không hiển thị cho trình mô phỏng iPhone XR.

Về cơ bản có vẻ khó chịu.


Đây cũng là nguyên nhân cho tôi. Tôi không chắc tại sao đây là một vấn đề. IPad của tôi có thể chạy iOS 12 nên không nên coi bộ giả lập anh chị em là một thiết bị không được hỗ trợ.
Abbey Jackson

Điều tương tự ở đây (màn hình chỉ có InputField và một nút). Xcode 10 với dự án iOS 12: Sử dụng trình mô phỏng iPhone SE ghi lại thông báo này nhưng nó không hiển thị với iPhone XR.
Neph

2

Nếu bạn có phông chữ do ứng dụng cung cấp, bạn cần thêm vào Info.plist Và kiểm tra xem tệp đã chọn Tư cách thành viên mục tiêu chưa


1

Cách thông thường khi xảy ra lỗi lạ đã giúp:

1) Dự án sạch;
2) Tắt trình mô phỏng;
3) Cài đặt lại nhóm.

Xcode 10.


Điều đó cũng làm việc cho tôi. Cảm ơn rất nhiều. Người dùng iOS trên nền tảng 'bản địa chỉ', bạn có thể thực hiện (1) Làm sạch dự án bằng cách xóa thư mục 'platform / ios', (2) Tắt và đặt lại trình mô phỏng bằng cách "Xóa tất cả nội dung và cài đặt", và (3) Xây dựng lại dự án bằng cách chạy 'tns chuẩn bị ios --release' và sau đó 'tns xây dựng ios --bundle'. Sau đó, bạn có thể chạy ứng dụng trong trình mô phỏng bằng cách mở tệp .xcworkspace, chọn một trình mô phỏng và chạy dự án từ đó. Nó làm việc hoàn hảo cho tôi.
Mick Morely

1

Đối với tôi, với trình mô phỏng đang được đề cập, tôi đã chọn Phần cứng-> Xóa tất cả nội dung và cài đặt.

Sau khi trình mô phỏng khởi động lại, việc khởi chạy ứng dụng của tôi đã hoạt động trở lại như mong đợi.


1
Bây giờ nó được gọi là Device->Erase All Content and Settings...
Bruno Bieri

1

Tôi đã đi đến XCode -> Preferences -> Components Đánh dấu vào tất cả các trình mô phỏng và hộp kiểm để cài đặt các bản cập nhật tự động, sau đó "kiểm tra và cài đặt ngay" và biến mất trong vài giờ trong khi tất cả chúng đều được cập nhật.

Bây giờ vấn đề đã biến mất - vì vậy trên thực tế, nó như đã đề cập. XCode mới với trình mô phỏng cũ - không cập nhật.


Như vậy không phải sẽ ăn nhiều trí nhớ sao?
Euridice 01

0

Tôi gặp vấn đề tương tự, nhưng với MapKit, trong đó MapView không hiển thị, chỉ màn hình trắng và cùng một lỗi, MGIsDeviceOneOfType không được hỗ trợ trên nền tảng này.

Đã giải quyết vấn đề này bằng cách sửa các cảnh báo "Bố cục không rõ ràng" gắn với đối tượng MapView. Bây giờ nó hoạt động hoàn toàn tốt và các lỗi đã biến mất.


0

Điều hiệu quả đối với tôi là thay đổi bên trong general > Deployment Info > Main Interfacesang CDVLaunchScreen và làm điều tương tự với bên trong general > App Icons and Launch Images > Launch Screen FileCDVLaunchScreen.

Tôi đến từ Ionic, vì vậy đây có thể không phải là vấn đề đối với những người phát triển bằng Swift / Objective-C.


1
Bạn đã sửa nó như thế nào? Tôi cũng đang gặp vấn đề tương tự. Nhưng điều này chỉ xảy ra khi chạy nó vào sản xuất trong ion và sau đó tôi đã bị mắc kẹt trong bộ nạp splash screen
KnowledgeSeeker

0

Gần đây tôi đã cập nhật lên Xcode 10.2và khi tôi cố gắng chạy một dự án được tạo trong phiên bản trước đó, cũng xảy ra lỗi.

Vấn đề là trình mô phỏng đã chạy trước khi cập nhật Xcode.

Giải pháp rất đơn giản để tôi thoát khỏi Trình mô phỏng và khởi động lại để nó có thể nhận được các thay đổi mới. Tôi không nghĩ mô hình của trình mô phỏng (iPhone SE hoặc iPhone X) không quan trọng. Bạn chỉ cần khởi động lại trình mô phỏng của mình để nó có hiệu lực với bản cập nhật mới.

Tôi khuyên bạn nên thoát cả Xcode và trình mô phỏng và khởi động lại máy Mac của bạn.


0

Tôi gặp lỗi này bằng cách gọi .syncvào hàng đợi chính gây ra bế tắc ( DispatchQueue.main.sync {}). Tôi định gọi .async.


0

Tôi gặp lỗi này, khi cố gắng đọc tệp json bên trong dự án của tôi và nó trả về nil, do đó tôi đã gặp lỗi này.

Tôi nhận được nil do một số lỗi chính tả trong tên phông chữ, tệp json đó đang giữ tên phông chữ, sau khi sao chép, dán tên phông chữ, tôi đã nhận được dữ liệu và lỗi đã được sửa.

Tôi đã thử tất cả các giải pháp được đưa ra ở trên, không có gì hiệu quả, Vì vậy, hãy gỡ lỗi với sự kiên nhẫn, bạn sẽ biết được nguyên nhân nào gây ra lỗi này và trong một số thời điểm xấu, xcode sẽ chơi trong cuộc sống của chúng ta :)


0

Tôi đã gặp phải vấn đề tương tự nhưng tôi đã loại bỏ nó thành công với những điều dưới đây:

  1. Trình mô phỏng tắt máy,
  2. Tắt Xcode,
  3. Mở lại Xcode và trình mô phỏng

Tôi mong nó sẽ có ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.