시뮬레이터의 Xcode 오류 : MGIsDeviceOneOfType은이 플랫폼에서 지원되지 않습니다.


100

여러 UILabel을 포함하는 단일보기가있는 매우 간단한 응용 프로그램이 있습니다. Simulator에서 실행하면 Xcode 콘솔이 오류를 반환합니다.

libMobileGestalt MobileGestalt.c : 875 : MGIsDeviceOneOfType은이 플랫폼에서 지원되지 않습니다.

시뮬레이터 자체는 흰색 화면 만 표시합니다. 또한 동일한 흰색 화면으로 개발자 장치에서 실행 해 보았습니다. 문서를 검색했지만에 대한 참조를 찾을 수 없습니다 MGIsDeviceOneOfType. 이 애플리케이션은 macOS 10.14의 Xcode 10 베타에서 Swift로 작성되었습니다. 나는 iPhone 7-X 시뮬레이터와 개발 용 iPhone 7에서 모두 대상 소프트웨어 (12.0)를 실행하는 것으로 실행하려고합니다.


1
XCode 10 Beta를 사용하고 있다고 언급 했어야합니다. BTW 같은 문제를 가진
kironet

AWS MobileHub를 사용하려고합니까?
Victor '

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는 아이폰 OS의 모든 속성에 대한 중앙 저장소를 제공합니다. OS X의 Gestalt와 유사 할 수 있습니다 CoreServices. OS X의 Gestalt는 예를 들어 Gestalt Manager에 대해 문서화 되어 있으며 10.8부터 더 이상 사용되지 않습니다. MobileGestalt 는 개인 라이브러리이므로 Apple에서 완전히 문서화하지 않았습니다 .

MobileGestalt를 사용하면 다른 시뮬레이터에서 호환되거나 호환되지 않을 수있는 시스템 속성을 테스트 할 수 있습니다.

iOS의 상당수 시스템 프로세스와 앱은 /usr/lib/libMobileGestalt.dylib에있는 MobileGestalt에 의존합니다. 기본 라이브러리에 가깝지만 노출 된 API는 Apple 프레임 워크 규칙을 따르고 MGAPI 접두사를 사용합니다 MGIsDeviceOneOfType.

iOS 파일 시스템에서 MobileGestalt를 찾으면 찾을 수 없습니다. 모든 개인 프레임 워크 및 라이브러리와 마찬가지로 /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은이 플랫폼에서 지원되지 않습니다. 이 경우 MGIsDeviceOneOfTypeMobileGestalt 라이브러리 의 방법입니다 .

시뮬레이터 버전을 확인하는 대신 시뮬레이터의 기능을 직접 쿼리하기위한 별도의 선택기가 있습니다. 이 메시지는 시뮬레이터 버전과 Xcode 버전 간의 비 호환성 및 / 또는 시뮬레이터에서 지원되지 않는 API를 나타낼 가능성이 높습니다.


3
이것은 문제의 논리적 이유 인 것 같습니다. 문제를 해결하기 위해 무엇을 하셨나요?
Brian Sachetta

1
마지막 문장에서 알 수 있듯이. sim 버전 및 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

이런 종류의 commad는 특정 디버그 메시지를 삭제하고 매우 유용하며 시뮬레이터 및 콘솔의 올바른 작동과 관련이 없습니다. 아마도이 인수와 관련이없는 또 다른 문제가있을 것입니다.
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을 실행하고 디버거에서이 메시지를 받았습니다.

솔루션 : 디버거에서 오류 메시지가없는 최신 시뮬레이터로 변경했습니다.


5

Xcode 10.0의 GitHub에서 일부 프로젝트를 열 때이 문제가 발생했습니다.

실용적인 해결책은 '프로그램 실행 계속'을 여러 번 누르고 예외 중단 점을 비활성화하는 것 입니다. 분명히 예외는 복구 할 수있었습니다.

실제 해결책은 아니지만 그 시점에서 저에게 충분했습니다.


제 경우에는 Xcode 10.1에서 이전 프로젝트를 열고 '프로그램 실행 계속'을 여러 번
누르기 만하면

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 19

여기서도 마찬가지입니다 (화면에는 InputField와 버튼 만 있음). iOS 12 프로젝트가있는 Xcode 10 : iPhone SE 시뮬레이터를 사용하면이 메시지가 기록되지만 iPhone XR에는 표시되지 않습니다.
Neph

2

앱에서 제공하는 폰트가 있다면 Info.plist에 추가하고 파일에 Target Membership이 선택되어 있는지 확인해야합니다.


1

이상한 오류가 발생하는 일반적인 방법이 도움이되었습니다.

1) 깨끗한 프로젝트;
2) 시뮬레이터를 종료하십시오.
3) 포드를 다시 설치합니다.

Xcode 10.


그것은 나에게도 효과적이었습니다. 감사합니다. 'nativescript'플랫폼을 사용하는 iOS 사용자는 (1) 'platforms / ios'폴더를 삭제하여 프로젝트를 정리하고, (2) "모든 콘텐츠 및 설정 지우기"를 통해 시뮬레이터를 종료하고 재설정하고, (3) 다시 빌드 할 수 있습니다. 'tns prepare ios --release'를 실행 한 다음 'tns build ios --bundle'을 실행하여 프로젝트를 진행합니다. 그런 다음 .xcworkspace 파일을 열어 시뮬레이터에서 앱을 실행하고 시뮬레이터를 선택한 다음 거기에서 프로젝트를 실행할 수 있습니다. 그것은 나를 위해 완벽하게 작동했습니다.
Mick Morely

1

저에게는 문제의 시뮬레이터에 초점을두고 하드웨어-> 모든 콘텐츠 및 설정 지우기를 선택했습니다.

시뮬레이터가 다시 시작된 후 예상대로 내 앱을 다시 시작했습니다.


1
현재 이름은 Device->Erase All Content and Settings...
Bruno Bieri

1

XCode-> Preferences-> Components로 이동하여 모든 시뮬레이터와 확인란을 선택하여 업데이트를 자동으로 설치 한 다음 "지금 확인 및 설치"하고 모두 업데이트하는 동안 몇 시간 동안 사라졌습니다.

이제 문제가 사라졌습니다. 실제로 언급 한대로입니다. 이전 버전의 새로운 XCode-업데이트되지 않은 시뮬레이터.


기억을 많이 잡아 먹지 않을까요?
Euridice01 19

0

동일한 문제가 있었지만 MapView가 표시되지 않은 MapKit에서는 흰색 화면과 동일한 오류가 발생하여 MGIsDeviceOneOfType이이 플랫폼에서 지원되지 않습니다.

MapView 개체에 연결된 "모호한 레이아웃"경고를 수정하여 문제를 해결했습니다. 이제 완벽하게 작동하고 오류가 사라졌습니다.


0

나를 위해 일한 것은 general > Deployment Info > Main InterfaceCDVLaunchScreen 내에서 변경 하고 CDVLaunchScreen 내에서도 동일하게 수행하는 general > App Icons and Launch Images > Launch Screen File것이 었습니다.

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 파일을 읽으려고 할 때이 오류가 발생했으며이 오류가 발생했기 때문에 nil을 반환했습니다.

글꼴 이름의 철자 오류로 인해 json 파일에 글꼴 이름이 포함되어 있었기 때문에 글꼴 이름을 복사하여 붙여 넣은 후 데이터를 얻었고 오류가 수정되었습니다.

나는 위의 모든 솔루션을 시도했지만 아무것도 작동하지 않았으므로 인내심을 가지고 디버그하면이 오류를 일으키는 원인을 알 수 있으며 나쁜 시간에 xcode가 우리 삶에서 재생됩니다 :)


0

나는 같은 문제에 직면했지만 다음과 같이 성공적으로 삭제했습니다.

  1. 셧다운 시뮬레이터,
  2. Xcode 종료,
  3. Xcode 및 시뮬레이터 다시 열기

도움이 되길 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.