Xcode doesn't provide feedback when UIDeviceCapabilities does not match a device
| Originator: | dan | ||
| Number: | rdar://11658286 | Date Originated: | Wed, 13 Jun 2012 18:08:10 GMT |
| Status: | Duplicate/9749837 | Resolved: | |
| Product: | Developer Tools | Product Version: | 4.3.2 (4E2002) |
| Classification: | UI/Usability | Reproducible: | Always |
Summary:
In Xcode a project can be set to limit what iOS devices the resulting app bundle can be run on. Using UIRequiredDeviceCapabilities in the target's info.plist file a developer can specify, for example, that only devices with telephony (phones) can run an app.
When building and testing in Xcode there are many failure states that could cause an app not to install to a device. Not matching the UIRequiredDeviceCapabilities on a device is one of these. Unfortunately the work flow for discovering a device doesn't match the device capabilities specified is cumbersome at best.
A user would assume Xcode would inform them that a device they're trying to install to doesn't meet the requirements specified. Xcode's behavior when there is a code signing error is perfectly cromulent. When the device capabilities are mismatched the user is only told that the application finished running on the device, but nothing ever runs or even installs. There is no error message in Xcode to identify that the app cannot be installed with the current device capabilities configuration.
In order to find out that the device is a mismatch the user has to look in Console.app for a line like the following:
2012-06-13 10:45:59.169 AM Xcode: Couldn't install /Users/dan/Code/bug_report/DeviceCapabilitiesBug/build/Debug-iphoneos/DeviceCapabilitiesBug.app due to capability mismatch.
{
CapabilitiesMatch = 0;
MismatchedCapabilities = {
"telephony" = 0;
};
}
Not all users are savvy enough to know to look in Console.app for a message from Xcode that could easily be displayed in the UI.
Steps to Reproduce:
1. Open the attached sample project, DeviceCapabilitiesBug
2. Plug in an iPhone
3. Build and Run the app to the iPhone device plugged in
4. See the app launch and greet you with a message
5. Unplug the iPhone and plug in an iPod touch
6. Build and Run the app to the iPod touch device plugged In
7. See a message that DeviceCapabilitiesBug finished running on the iPod touch
Expected Results:
An error message at step 7 above where the user is informed that the iPod touch does not match the telephony device capability and the app cannot be installed.
Actual Results:
A false indication that the app finished running when it was never installed and never ran. The user has no indication via Xcode that the device plugged in does not match the specified device capabilities.
Regression:
None
Notes:
None
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!
Sample project URL
http://cl.ly/2y1d0A2m0P2b1H0r0c10