I have a very simple application with a single view, containing several UILabels. Upon running in Simulator, the Xcode console returns the error:
libMobileGestalt MobileGestalt.c:875: MGIsDeviceOneOfType is not supported on this platform.
The Simulator itself just shows a white screen. I've also tried running it on a developer device with the same white screen. I've searched documentation but can't find any reference to MGIsDeviceOneOfType.
The application is written in Swift in Xcode 10 beta on macOS 10.14. I am attempting to run it on the iPhone 7-X Simulators, as well as a development iPhone 7, all running the target software (12.0).
MobileGestalt
The libMobileGestalt.dylib provides a central repository for all of the iOS's properties. It can be analogous to OS X's Gestalt, which is part of CoreServices. OS X's Gestalt is documented for example Gestalt Manager and has been deprecated as of 10.8. MobileGestalt is entirely undocumented by Apple as it is a private library.
MobileGestalt allows for the testing of system properties that may or may not be compatible on different simulators.
Quite a few system processes and apps in iOS rely on MobileGestalt, which is located at /usr/lib/libMobileGestalt.dylib. It's more of a basic library, but its exposed APIs follow the Apple framework conventions and uses the MG API prefix for example MGIsDeviceOneOfType.
If you look for MobileGestalt on the iOS filesystem you won't find it - like all private frameworks and libraries, it has been prelinked into the /System/Library/Caches/...etc. If you like hacking and pen-testing then you can use tools to extract it.
MobileGestalt provides plenty of information - around 200 or so queries - on various aspects of the system. Here are a few.
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");
There are hundreds more e.g. AirplaneMode, MobileEquipmentIdentifier, etc.
MobileGestalt maintains a table of OSType selector codes.
for example c:890 in the message: libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform. In this case MGIsDeviceOneOfType is a method/property of the MobileGestalt library.
Instead of checking the simulator version there is a separate selector for directly querying the capabilities of the simulator. The messages most likely indicate incompatibilities between simulator versions and Xcode versions and/or unsupported APIs on the simulator.
I've successfully dropped it with the disabling of the project garbage.
Go to <Name of your Project>->Scheme->Edit Scheme Then go to Run (menu to the left side) and add the following environment variable:
Name:OS_ACTIVITY_MODE, Value: disable
in my case: check your app delegate for method - didFinishLaunching. I had private and get the error. After remove "private" everything works fine
I just installed Xcode 10 Beta and had the same problem. Ran Xcode 9.4.1 and the problem went away.
This error will only occur when testing/debugging on simulators.
The newer the simulator the better.
Case: I run simulator iPhone 8 plus I got this message in the debugger.
Solution: I changed to a newer simulator no error message in the debugger.
Ran into this when opening some project from GitHub on Xcode 10.0.
The pragmatic solution was: just hit 'Continue program execution' multiple times and probably disable your exception breakpoint. Apparently the exception was recoverable.
It's not a real solution but it was good enough for me at that point.
In my case, the Target's Deployment Target was at iOS 8. When I pushed it up to iOS 10.3, it ran fine, both on the Simulator and the device.
Am seeing this problem. Using Xcode 10.1. Created a brand new project - doesn't do anything except show a white screen. Discovered it was showing up on simulator for older devices. For example, iPad Pro (12.9 inch) and iPad Pro (12.9 inch) (2nd generation) show the problem, but problem is gone for iPad Pro (12.9 inch) (3rd generation). Does not show up for iPhone XR simulator.
Basically seems annoying.
If you have fonts provided by the app, you need to add to Info.plist
And check if the file have the Target Membership selected
I had the same issue, but with MapKit, where a MapView did not show up, just the white screen and the same error, MGIsDeviceOneOfType is not supported on this platform.
Solved it by fixing "Ambiguous layout" warnings tied to the MapView object. Now it's working perfectly fine, and the errors went away.
The regular way when strange errors happens helped:
1) Clean project;
2) Shut down simulator;
3) Reinstall pods.
Xcode 10.
For me, with the simulator in question in focus, I selected Hardware->Erase all content and settings.
After the simulator restarted, launching my app worked again, as expected.
I went to XCode -> Preferences -> Components
Ticked all the simulators and the check box to install updates automatically, and then "check and Install now" and went away for a few hours while they all updated.
Now the problem is gone - so in fact, it's as mentioned. New XCode with Old - non-updated simulators.
What worked for me was to change within general > Deployment Info > Main Interface to CDVLaunchScreen and do the same within general > App Icons and Launch Images > Launch Screen File to CDVLaunchScreen as well.
I come from Ionic, so this might not be a problem for those who develop in Swift / Objective-C.
I have recently updated to Xcode 10.2 and when I tried to run a project created in earlier version, Same error occurred.
The problem was that simulator was running before updating Xcode.
Solution was very simple for me to quit Simulator and restart so that it can get the new changes. I don't think the model of the simulator (iPhone SE or iPhone X) matters. You just need to restart your simulator for it to take effect of new update.
I would recommend to quit both Xcode and simulator and restart your Mac.
I got this error by calling .sync on the main queue which caused a deadlock (DispatchQueue.main.sync {}). I meant to call .async.
I got this error, when trying to read a json file which is inside my project and it returned nil, due to that i got this error.
I got nil because of some spelling mistake in the font name, that json file was holding the font names, after copy pasting the font name i got data and the error fixed.
I tried allmost all of the solutions given above, nothing worked, So debug with patience, you will get to know which is causing this error and in some bad time xcode will play in our life :)
I was facing same problem but I've successfully dropped it with below things:
Shutdown simulator,
Shutdown Xcode,
Re-open Xcode and simulator
I hope it will help.
forgive me if asking the wrong question - I'm new to coding.
I have my app running correctly on iPad Air 2 simulator, however when deployed to my actual iPad Air 2, one line of code (as far as I can tell) doesn't work.
The line in question -
starArray[streakCounter-1].image = UIImage(named: "22.png")
The line is part of an if statement in which all other lines work just fine on the device and simulator.
Any ideas what I can do?
There are a number of cases where the simulator behaves differently than an actual device.
The file system is one of those cases. The Mac OS file system is not case-sensitive by default (unless you take extra steps in setting up a drive). The iOS file system is case-sensitive. The simulator runs on the Mac file system.
If your file is really called "22.PNG" or "22.Png" then your code would work on the sim but not on a device.
I don't know for sure if that's the cause of your problem, but it's at least worth checking.
(There are other differences as well, but I focused on the one that seems most likely to cause the problem you describe.)
I'm facing a strange issue, after adding all my images to a xcasset, my app looks malformed (see screenshot) when running it on iOS 8 simulator. Each image is full of artifacts. Before, all my images were simply added to main bundle, and everything worked. I don't have a device with iOS 8 to test on it. Also it works well on versions above iOS 8. If you have any guesses what is the problem, please tell me.
Ideal is to support three iOS versions, the current version and the previous two versions.
Try below steps:
Remove all caches from User's Library
Remove all derived data content of Xcode
Clean
Clear Trash
Quit Xcode
Open Xcode
Build
It should help you.
Currently 92% devices are running iOS 10 or above
References (apple.com)
If the images do not contain alpha channel - try adding it, otherwise try removing it.
Also check this option (causes similar problems from time to time):
How can I skip compressing one PNG?
When building and running my app from Xcode on our iPhone 7's, I can't get the logs to show up in the debugging area. I've tested both mine and my wife's iPhone 7's. It's completely blank. They show up for other devices (iPhone 5, iPad, etc.) and for the simulators but not for the 7's.
When I view logs in Window > Devices > (select device), or in the system's Console, I also don't see logs for my app. There's only references to the app from symptomsd, etc. But no process even appears with my apps name.
It seems there is some incompatibility between my app and these specific devices. I've been using and updating the same app since around 2012 so maybe there is some sort of cruft in there that is blocking logs on these very latest devices.
Things I've tried:
Building and running other apps (logs show up)
Testing other devices (logs show)
Re-powering iPhone and restarting Xcode
Setting a breakpoint and running a command in the debugger (I got response from that command)
Any other steps to try would be appreciated.
You can use alsodump to log. You may try this, maybe this one works. What may help you:
1. Create new building scheme.
2. Try running it on simulator. Use many iOS versions. Maybe the latest one have a bug.
3. Remove Derived data in this project.
I couldn't find any results in google, so i hope someone has a solution for my problem:
I changed the name, App icon, "splashscreen image" of an existing app in xcode and all of them are shown correctly on the ipad simulator 4.3
If I start the app on my ipad iOS 4.3.5 the App icon is changed but the text under the App icon and the splashscreen is the old one. How is this possible?
There aren't any images of the old splashscreen in the project folder.
I deleted the old App from the iPad. Restarted the iPad several times with no luck.
Delete that app from your device. (long hold of icon and then hit the X)
Connect to Xcode
Clean
The build and run on your device.
The resources on the device are probably lingering and not being replaced when you rebuild it.
This link gives detailed information about launch images
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BuildTimeConfiguration/BuildTimeConfiguration.html%23//apple_ref/doc/uid/TP40007072-CH7-SW11
For your situation you'll need is a file called Default-Landscape~ipad.png in your bundle if your app universal.
Was your app iPhone/iPod specific before?
To change the name of your app, try adding a key to your Info.plist called CFBundleDisplayName~iPad with the name you want. I'm not certain this will work mind.
Normally, images that work fine in the simulator but not on the device are caused by capitalization problems. The simulator won't be case sensitive, but the device will be. Check the filename against how you refer to it in code (and/or the standard names that you need to use, e.g. "Default.png" with an uppercase D) and make sure both match.
A Clean and rebuild might also help.