Mam bardzo prostą aplikację z jednym widokiem, zawierającą kilka etykiet UIL. Po uruchomieniu w symulatorze konsola Xcode zwraca błąd:
Biblioteka libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType nie jest obsługiwana na tej platformie.
Sam symulator wyświetla tylko biały ekran. Próbowałem też uruchomić go na urządzeniu deweloperskim z tym samym białym ekranem. Przeszukałem dokumentację, ale nie mogę znaleźć żadnego odniesienia do MGIsDeviceOneOfType
. Aplikacja jest napisana w języku Swift w Xcode 10 beta na macOS 10.14. Próbuję go uruchomić na symulatorach iPhone'a 7-X, a także na iPhone'ie deweloperskim 7, wszystkie z oprogramowaniem docelowym (12.0).
Odpowiedzi:
MobileGestalt
LibMobileGestalt.dylib stanowi centralne repozytorium dla wszystkich właściwościach iOS. Może być analogiczny do Gestalt systemu OS X, który jest częścią
CoreServices
. Gestalt systemu OS X jest udokumentowany, na przykład Gestalt Manager i został wycofany z 10.8. MobileGestalt jest całkowicie nieudokumentowane przez Apple, ponieważ jest prywatną biblioteką.MobileGestalt umożliwia testowanie właściwości systemu, które mogą, ale nie muszą być kompatybilne z różnymi symulatorami.
Sporo procesów systemowych i aplikacji w iOS opiera się na MobileGestalt, który znajduje się pod adresem /usr/lib/libMobileGestalt.dylib. Jest to bardziej podstawowa biblioteka, ale jej udostępnione interfejsy API są zgodne z konwencjami platformy Apple i
MG
na przykład używają prefiksu APIMGIsDeviceOneOfType
.Jeśli szukasz MobileGestalt w systemie plików iOS, nie znajdziesz go - podobnie jak wszystkie prywatne frameworki i biblioteki, został on wstępnie powiązany z /System/Library/Caches/...etc. Jeśli lubisz hakowanie i testowanie za pomocą pióra, możesz użyć narzędzi do ich wyodrębnienia.
MobileGestalt dostarcza wielu informacji - około 200 zapytań - dotyczących różnych aspektów systemu. Tu jest kilka.
Istnieją setki więcej np
AirplaneMode
,MobileEquipmentIdentifier
itpMobileGestalt utrzymuje tabelę kodów selektorów OSType. na przykład c: 890 w wiadomości: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType nie jest obsługiwane na tej platformie. W tym przypadku
MGIsDeviceOneOfType
jest to metoda biblioteki MobileGestalt .Zamiast sprawdzania wersji symulatora istnieje oddzielny selektor do bezpośredniego sprawdzania możliwości symulatora. Komunikaty najprawdopodobniej wskazują na niezgodności między wersjami symulatora a wersjami Xcode i / lub nieobsługiwanymi interfejsami API w symulatorze.
źródło
Pomyślnie porzuciłem go, wyłączając śmieci projektu.
Idź do < Name of your Project > -> Scheme -> Edit Scheme Następnie przejdź do Run (menu po lewej stronie) i dodaj następującą zmienną środowiskową:
Nazwa : OS_ACTIVITY_MODE, wartość : wyłączone
źródło
w moim przypadku: sprawdź delegata aplikacji pod kątem metody - didFinishLaunching. Miałem prywatne i otrzymałem błąd. Po usunięciu „prywatnego” wszystko działa dobrze
źródło
Właśnie zainstalowałem Xcode 10 Beta i miałem ten sam problem. Uruchomiono Xcode 9.4.1 i problem zniknął.
źródło
Ten błąd występuje tylko podczas testowania / debugowania na symulatorach.
Im nowszy symulator, tym lepiej.
Przypadek: Uruchamiam symulator iPhone'a 8 plus mam ten komunikat w debugerze.
Rozwiązanie: Zmieniłem na nowszy symulator, brak komunikatu o błędzie w debugerze.
źródło
Wpadłem na to podczas otwierania jakiegoś projektu z GitHub na Xcode 10.0.
Pragmatyczne rozwiązanie brzmiało: po prostu naciśnij wielokrotnie „Kontynuuj wykonywanie programu” i prawdopodobnie wyłącz wyjątkowy punkt przerwania . Najwyraźniej wyjątek można było odzyskać.
To nie jest prawdziwe rozwiązanie, ale w tamtym momencie wystarczyło mi.
źródło
W moim przypadku celem wdrożenia Targetu był iOS 8. Kiedy przeniosłem go do iOS 10.3, działał dobrze, zarówno na symulatorze, jak i na urządzeniu.
źródło
Widzę ten problem. Korzystanie z Xcode 10.1. Stworzyłem zupełnie nowy projekt - nie robi nic poza pokazaniem białego ekranu. Odkryto, że pojawia się na symulatorze dla starszych urządzeń. Na przykład iPad Pro (12,9 cala) i iPad Pro (12,9 cala) (2.generacji) pokazują problem, ale problem zniknął w przypadku iPada Pro (12,9 cala) (3. generacji). Nie pojawia się w symulatorze iPhone'a XR.
Zasadniczo wydaje się denerwujący.
źródło
Jeśli masz czcionki dostarczone przez aplikację, musisz dodać do Info.plist i sprawdzić, czy plik ma wybrane Członkostwo docelowe
źródło
Regularny sposób, w jaki zdarzają się dziwne błędy, pomógł:
1) Czysty projekt;
2) Wyłącz symulator;
3) Zainstaluj ponownie strąki.
Xcode 10.
źródło
Dla mnie, mając fokus na omawianym symulatorze, wybrałem Sprzęt-> Usuń całą zawartość i ustawienia.
Po ponownym uruchomieniu symulatora uruchomienie mojej aplikacji działało zgodnie z oczekiwaniami.
źródło
Device
->Erase All Content and Settings...
Poszedłem do XCode -> Preferencje -> Komponenty Zaznaczono wszystkie symulatory i pole wyboru, aby zainstalować aktualizacje automatycznie, a następnie „sprawdź i zainstaluj teraz” i wyszedłem na kilka godzin, podczas gdy wszystkie były aktualizowane.
Teraz problem zniknął - więc w rzeczywistości jest tak, jak wspomniano. Nowy XCode ze starymi - niezaktualizowanymi symulatorami.
źródło
Miałem ten sam problem, ale z MapKit, gdzie MapView się nie pojawił, tylko biały ekran i ten sam błąd, MGIsDeviceOneOfType nie jest obsługiwany na tej platformie.
Rozwiązanie tego problemu polega na naprawieniu ostrzeżeń „Niejednoznaczny układ” związanych z obiektem MapView. Teraz działa doskonale, a błędy zniknęły.
źródło
general > Deployment Info > Main Interface
Pomogło mi przejście na CDVLaunchScreen i zrobienie tego samego w ramachgeneral > App Icons and Launch Images > Launch Screen File
CDVLaunchScreen.Pochodzę z Ionic, więc może to nie stanowić problemu dla tych, którzy rozwijają się w Swift / Objective-C.
źródło
Niedawno zaktualizowałem do Xcode
10.2
i kiedy próbowałem uruchomić projekt utworzony we wcześniejszej wersji, wystąpił ten sam błąd.Problem polegał na tym, że symulator działał przed aktualizacją Xcode.
Rozwiązanie było dla mnie bardzo proste, aby wyjść z Symulatora i zrestartować, aby mógł uzyskać nowe zmiany. Nie sądzę, żeby model symulatora (iPhone SE lub iPhone X) miał znaczenie. Wystarczy ponownie uruchomić symulator, aby nowa aktualizacja zaczęła obowiązywać.
Poleciłbym zamknąć Xcode i symulator i ponownie uruchomić komputer Mac.
źródło
Otrzymałem ten błąd, wywołując
.sync
główną kolejkę, która spowodowała zakleszczenie (DispatchQueue.main.sync {}
). Chciałem zadzwonić.async
.źródło
Otrzymałem ten błąd, gdy próbowałem odczytać plik json, który jest w moim projekcie i zwrócił zero, w związku z tym otrzymałem ten błąd.
Otrzymałem zero z powodu błędu w pisowni w nazwie czcionki, ten plik json przechował nazwy czcionek, po skopiowaniu wklejania nazwy czcionki otrzymałem dane i naprawiono błąd.
Wypróbowałem prawie wszystkie powyższe rozwiązania, nic nie działało, więc cierpliwie debuguj, dowiesz się, co powoduje ten błąd iw jakimś złym czasie xcode zagra w naszym życiu :)
źródło
Miałem ten sam problem, ale z powodzeniem porzuciłem go z poniższymi rzeczami:
Mam nadzieję, że to pomoże.
źródło