I created a cordova project using cordova create project hello com.hello Hello
.
And added iOS platform using cordova platform add iOS
.
And
in your project folder root, do cd platforms/ios/cordova && npm install ios-sim
Updating the ios-sim version with npm install ios-sim@latest
didn't worked for me. But if found a nice and easy solution on Github.
/platforms/ios/cordova/node_modules/ios-sim/src/lib.js
deviceName
with your code editorname_id_map[ deviceName ]
with name_id_map[filterDeviceName(deviceName)]
You can find the Github post here
New solution
This issue is fixed in the latest version of the "ios-sim" package (so now this is probably the easier solution - compared to the old one which is listed below). In order to update the "ios-sim" package to the latest version run this in your terminal/cmd:
cd platforms/ios/cordova/node_modules/
sudo npm install -g ios-sim@latest
Old solution
The problem is that the name_id_map[deviceName]
returns undefined
for "iPad Pro (12.9-inch)" and "iPad Pro (10.5-inch)".
You can check it with a console.log('name_id_map[ deviceName ]: ' + name_id_map[ deviceName ]);
.
I fixed this bug by adding an if statements which checks if the device is defined in "platforms/ios/cordova/node_modules/ios-sim/src/lib.js:282".
I replaced this:
list = [];
var remove = function(runtime) {
// remove "iOS" prefix in runtime, remove prefix "com.apple.CoreSimulator.SimDeviceType." in id
list.push(util.format('%s, %s', name_id_map[ deviceName ].replace(/^com.apple.CoreSimulator.SimDeviceType./, ''), runtime.replace(/^iOS /, '')));
};
with this:
list = [];
var remove = function(runtime) {
// remove "iOS" prefix in runtime, remove prefix "com.apple.CoreSimulator.SimDeviceType." in id
if (name_id_map[deviceName] && runtime) {
list.push(util.format('%s, %s', name_id_map[deviceName].replace(/^com.apple.CoreSimulator.SimDeviceType./, ''), runtime.replace(/^iOS /, '')));
}
};
The "iPad Pro (10.5-inch)" simulator won't be on the list (but it doesn't probably work anyway - didn't check).
Bug report on github: https://github.com/phonegap/ios-sim/issues/210
There is a PR on Github which fixed my problem: https://github.com/phonegap/ios-sim/pull/213
Just called following inside my project root
nano platforms/ios/cordova/node_modules/ios-sim/src/lib.js
and added the function to filter the device name, as pointed out here: https://github.com/phonegap/ios-sim/pull/213/files
I have just run into this and thought I'd add something that worked for me - the solution npm install ios-sim
didn't.
All I did was open up XCode and it was pointing to Generic iOS Device from when I last used it with testing an app on a physical device. I just changed the iOS Simulator to be anything on the iOS Simulator list, retried it and it worked like a charm!
Hope this might help somebody else in the same situation.
I recently upgreaded to xcode 8.3.3 and ionic 3.4.0
I have removed ios-sim directory from myApp/platforms/ios/cordova/node_modules and now it's working.