Simülatörde Xcode Hatası: MGIsDeviceOneOfType bu platformda desteklenmiyor


100

Birkaç UIL etiketi içeren tek bir görünümde çok basit bir uygulamam var. Simülatörde çalıştırıldığında, Xcode konsolu şu hatayı döndürür:

libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType bu platformda desteklenmemektedir.

Simülatörün kendisi sadece beyaz bir ekran gösteriyor. Aynı beyaz ekrana sahip bir geliştirici cihazda da çalıştırmayı denedim. Belgeleri araştırdım ancak herhangi bir referans bulamadım MGIsDeviceOneOfType. Uygulama, macOS 10.14 üzerinde Xcode 10 beta sürümünde Swift ile yazılmıştır. Bunu, tümü hedef yazılımı (12.0) çalıştıran iPhone 7-X Simülatörlerinde ve bir geliştirme iPhone 7'de çalıştırmaya çalışıyorum.


1
XCode 10 Beta kullandığınızı söylemeliydiniz. btw aynı sorunu
yaşıyor

AWS MobileHub'ı kullanmaya mı çalışıyorsunuz?
Victor 'Chris' Cabral

2
Bir eğitmenin temel MVC tasarım uygulamasını çalıştırırken hata ayıklama konsolunda bu hatayla karşılaşıldı. Xcode 10 çalıştırıyorum (beta değil). Gerçek cihazda çalışırken hatayı almadım.
Steve Robertson

4
Xcode 10 güncellemesinden sonra (beta değil) bu sorunu yaşıyorum
MUH Mobile Inc.

1
Sorun, simülatörde çalışan platformla ilgili görünmektedir. Boş bir proje oluşturdum, derledim ve iPhone X, XR, XS ve XS-Max üzerinde çalıştırdım ve sorun olmadı. 8 Plus ile başlayarak bundan önceki herhangi bir şey üzerinde çalıştırın ve hata oluşur. Mac OS X: 10.13.6, Xcode: 10.0
wbl2745

Yanıtlar:


25

MobileGestalt

LibMobileGestalt.dylib iOS özelliklerinin tümü için merkezi bir depo sağlar. OS X'in bir parçası olan Gestalt'a benzer olabilir CoreServices. OS X'in Gestalt'ı, örneğin Gestalt Manager olarak belgelenmiştir ve 10.8 itibarıyla kullanımdan kaldırılmıştır. MobileGestalt , özel bir kitaplık olduğu için Apple tarafından tamamen belgelenmemiştir.

MobileGestalt, farklı simülatörlerde uyumlu olabilecek veya olmayabilecek sistem özelliklerinin test edilmesine izin verir.

İOS'taki pek çok sistem işlemi ve uygulaması, /usr/lib/libMobileGestalt.dylib adresinde bulunan MobileGestalt'a güveniyor. Daha çok temel bir kitaplıktır, ancak açık API'leri Apple çerçeve kurallarını takip eder ve MGörneğin API önekini kullanır MGIsDeviceOneOfType.

İOS dosya sisteminde MobileGestalt'ı ararsanız, bulamazsınız - tüm özel çerçeveler ve kitaplıklar gibi, /System/Library/Caches/...etc'ye önceden bağlanmıştır. Bilgisayar korsanlığını ve kalem testini seviyorsanız, çıkarmak için araçları kullanabilirsiniz.

MobileGestalt, sistemin çeşitli yönleri hakkında pek çok bilgi - yaklaşık 200 sorgu - sağlar. Burda biraz var.

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

Yüzlercesi de örneğin vardır AirplaneMode, MobileEquipmentIdentifiervs.

MobileGestalt, OSType seçici kodlarının bir tablosunu tutar. örneğin : libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType mesajındaki c: 890 bu platformda desteklenmemektedir. Bu durumda MobileGestalt kitaplığınınMGIsDeviceOneOfType bir yöntemidir .

Simülatör versiyonunu kontrol etmek yerine, simülatörün yeteneklerini doğrudan sorgulamak için ayrı bir seçici bulunmaktadır. Mesajlar büyük olasılıkla simülatör sürümleri ile Xcode sürümleri ve / veya simülatördeki desteklenmeyen API'ler arasındaki uyumsuzlukları gösterir.


3
Bu, sorunun mantıklı bir nedeni gibi görünüyor. Sorunu çözmek için ne yaptın?
Brian Sachetta

1
En son cümlenin gösterdiği gibi. Sim sürümlerinin ve Xcode sürümlerinin uyumlu olduğundan veya yalnızca gerçek bir cihaz kullandığından emin olun.
Edison

Sen yazdı 200 kadar sorguları , ancak görünüşe vardır 673 bilinen karartılmış tuşları . [değiştir: pekala, adın "timac" ve blog "timac" dan geliyor ... muhtemelen tesadüf değil]
Cœur

17

Proje çöpünün devre dışı bırakılmasıyla başarıyla düşürdüm.

< Projenizin Adı > -> Şema -> Şemayı Düzenle'ye gidin Sonra Çalıştır'a gidin (sol taraftaki menü) ve aşağıdaki ortam değişkenini ekleyin:

Ad : OS_ACTIVITY_MODE, Değer : devre dışı bırak

görüntü açıklamasını buraya girin


1
Çalışıyor dostum. Neden işe yaradığına dair herhangi bir açıklama var mı?
Aditya S.

1
Bu bir cevap değil, ancak ilgili ve önemli: stackoverflow.com/questions/52410471/…
dlpolanco

Bu yaklaşımı denediğim için simülatörümün açılmadığını ve konsolda çıkış olmadığını belirtmekten üzüntü duyuyorum.
Neeraj Shukla

Bu tür bir komut dosyası belirli hata ayıklama mesajlarını düşürür, çok kullanışlıdır ve simülatör ve konsolun doğru çalışmasıyla hiçbir ilgisi yoktur: muhtemelen bu argümanla ilgili olmayan başka bir sorununuz vardır.
Alessandro Ornano

Hatayla şu şekilde karşılaştım: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType bu platformda desteklenmiyor. Bunun için yukarıdaki yaklaşımı denediğimde bu işe yaramadı. Ancak simülatörden çıkıp kodumu temizlediğimde, o zaman iyi çalışıyordu.
Neeraj Shukla

9

benim durumumda: yöntem için uygulama temsilcinizi kontrol edin - didFinishLaunching. Özelim vardı ve hatayı aldım. "Özel" i kaldırdıktan sonra her şey yolunda gidiyor


6
Benimki özel değildi.
ScottyBlades

8

Xcode 10 Beta'yı yeni yükledim ve aynı sorunu yaşadım. Xcode 9.4.1 çalıştırıldı ve sorun ortadan kalktı.


10
Bu uygulanabilir bir cevap IMO değil, özellikle xcode 10 artık vahşi ve hala bu sorunu yaşıyor. Sorun xcode 9.4.1'de "ortadan kalkmadı" - başlangıçta asla var olmadı. "Maalesef bu bir xcode 10 sorunu ve sabırlı olmamız gerekebilir" demek bir şeydir. Tamamen görmezden gelmek başka bir şey.
Brian Sachetta

6

Bu hata yalnızca simülatörlerde test / hata ayıklama yapılırken ortaya çıkar.

Simülatör ne kadar yeni olursa o kadar iyidir.

Durum: iPhone 8 simülatörünü çalıştırıyorum artı bu mesajı hata ayıklayıcıda aldım.

Çözüm: Daha yeni bir simülatöre geçtim, hata ayıklayıcıda hata mesajı yok.


5

Xcode 10.0'da GitHub'dan bir proje açarken bununla karşılaştım.

Pragmatik çözüm şuydu: "Program yürütmeye devam et" i birkaç kez tıklayın ve muhtemelen istisna kesme noktanızı devre dışı bırakın . Görünüşe göre istisna kurtarılabilirdi.

Bu gerçek bir çözüm değil ama o noktada benim için yeterince iyiydi.


Benim durumumda, Xcode 10.1'de eski bir projeyi açmak, 'Program yürütmeye devam
et'e

5

Benim durumumda, Hedefin Dağıtım Hedefi iOS 8'deydi. Onu iOS 10.3'e yükselttiğimde, hem Simülatörde hem de cihazda iyi çalıştı.

LibMobileGestalt hatasını düzeltmek için dağıtım hedefini değiştirme


1
Benimki 12.2 olarak ayarlandı ve mesaj iPhone SE simülatörü ile yazdırılıyor, ancak iPhone XR ile değil. Yani, en azından benim için @anorskdev haklı.
Neph

5

Bu sorunu görüyorum. Xcode 10.1 kullanarak. Yepyeni bir proje oluşturdu - beyaz ekran göstermekten başka hiçbir şey yapmaz. Daha eski cihazlar için simülatörde göründüğünü keşfetti. Örneğin, iPad Pro (12.9 inç) ve iPad Pro (12.9 inç) (2. nesil) sorunu gösterir, ancak iPad Pro (12.9 inç) (3. nesil) için sorun ortadan kalkmıştır. İPhone XR simülatörü için görünmüyor.

Temelde can sıkıcı görünüyor.


Benim için de sebep buydu. Bunun neden bir sorun olduğundan emin değilim. İPad'im iOS 12'yi çalıştırabiliyor, bu nedenle kardeş simülatörü desteklenmeyen bir cihaz olarak görülmemelidir.
Abbey Jackson

Burada da aynı şey (ekranda yalnızca bir InputField ve bir düğme var). İOS 12 projesi ile Xcode 10: iPhone SE simülatörünü kullanmak bu mesajı kaydeder ancak iPhone XR ile birlikte görünmez.
Neph

2

Uygulama tarafından sağlanan yazı tipleriniz varsa, Info.plist'e eklemeniz ve dosyanın Hedef Üyeliğin seçili olup olmadığını kontrol etmeniz gerekir.


2

Garip hataların meydana gelmesinin normal yolu yardımcı oldu:

1) Temiz proje;
2) Simülatörü kapatın;
3) Bölmeleri yeniden yükleyin.

Xcode 10.


Bu benim için de çalıştı. Çok teşekkürler. İOS kullanıcıları 'nativescript' platformu üzerinden şunları yapabilirsiniz: (1) Projeyi 'platformlar / ios' klasörünü silerek temizleyin, (2) Simülatörü kapatın ve "Tüm içeriği ve ayarları sil" ile sıfırlayın ve (3) runnings tarafından proje 'tns hazırla - yayınla' ve ardından 'tns build ios --bundle'. Ardından, .xcworkspace dosyasını açarak uygulamayı simülatörde çalıştırabilir, bir simülatör seçebilir ve oradan projeyi çalıştırabilirsiniz. Benim için mükemmel çalıştı.
Mick Morely

1

Benim için, söz konusu simülatör odak noktasındayken, Donanım-> Tüm içeriği ve ayarları sil'i seçtim.

Simülatör yeniden başlatıldıktan sonra uygulamamı başlatmak beklendiği gibi tekrar çalıştı.


1
Adı Device->Erase All Content and Settings...
Bruno Bieri

1

XCode -> Tercihler -> Bileşenler'e gittim Tüm simülatörleri ve güncellemeleri otomatik olarak yüklemek için onay kutusunu işaretledim ve ardından "şimdi kontrol et ve yükle" ve hepsi güncellenirken birkaç saatliğine gittim.

Şimdi sorun ortadan kalktı - yani aslında, belirtildiği gibi. Eski - güncellenmemiş simülatörler ile Yeni XCode.


Bu çok fazla hafızayı tüketmeyecek mi?
Euridice01

0

Aynı sorunu yaşadım, ancak MapView'in görünmediği MapKit ile, sadece beyaz ekran ve aynı hata, MGIsDeviceOneOfType bu platformda desteklenmiyor.

MapView nesnesine bağlı "Belirsiz düzen" uyarılarını düzelterek sorunu çözdü. Şimdi mükemmel çalışıyor ve hatalar ortadan kalktı.


0

Benim için işe general > Deployment Info > Main Interfaceyarayan şey, içinde CDVLaunchScreen'e geçmek ve aynısını general > App Icons and Launch Images > Launch Screen FileCDVLaunchScreen içinde yapmaktı.

Ionic'ten geliyorum, bu yüzden Swift / Objective-C'de geliştirenler için bu bir sorun olmayabilir.


1
Nasıl düzelttin Ben de aynı sorunu yaşıyordum. Ancak bu yalnızca onu iyonik olarak üretimde çalıştırırken olur ve bundan sonra açılış ekranı yükleyicide sıkışıp kaldım
KnowledgeSeeker

0

Yakın zamanda Xcode'u güncelledim 10.2ve önceki sürümde oluşturulmuş bir projeyi çalıştırmayı denediğimde aynı hata oluştu.

Sorun, simülatörün Xcode'u güncellemeden önce çalışıyor olmasıydı.

Çözüm, Simulator'dan çıkıp yeni değişiklikleri alabilmesi için yeniden başlatmam için çok basitti. Simülatörün modelinin (iPhone SE veya iPhone X) önemli olduğunu düşünmüyorum. Yeni güncellemenin etkili olması için simülatörünüzü yeniden başlatmanız yeterlidir.

Hem Xcode hem de simülatörden çıkıp Mac'inizi yeniden başlatmanızı tavsiye ederim.


0

Bu hatayı, .synckilitlenmeye ( DispatchQueue.main.sync {}) neden olan ana kuyruğu arayarak aldım . Aramak istedim .async.


0

Projemdeki bir json dosyasını okumaya çalışırken bu hatayı aldım ve bu hatayı aldığım için sıfır döndürdü.

Font adındaki bazı yazım hatası nedeniyle sıfır aldım, o json dosyası font adlarını tutuyordu, font adını kopyaladıktan sonra veriyi aldım ve hata düzeltildi.

Yukarıda verilen çözümlerin hemen hepsini denedim, hiçbir şey işe yaramadı, Bu yüzden sabırla hata ayıklayın, bu hataya hangisinin neden olduğunu anlayacaksınız ve kötü bir zamanda xcode hayatımızda oynayacak :)


0

Aynı sorunla karşı karşıyaydım ama aşağıdaki şeylerle başarılı bir şekilde düşürdüm:

  1. Kapatma simülatörü,
  2. Xcode'u kapatın,
  3. Xcode ve simülatörü yeniden açın

Umarım yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.