More specifically the old info.plist file seemed to be the culprit. Upon creating a new target the default build setting is that info.plist is automatically generated. When trying to re-use the old info.plist the error would occur, even with the new target. — wonfr
Thanks to wonfr note, we found that the only action you need is to add MinimumOSVersion~ipad key to the Watch App target plist. You can put there your iOS deployment target version to be consistent with other settings. Alternatively, you can bump your Watch App deployment target to a higher value,
My guess is that old iPadOS is unaware of such bundle types, and is trying to verify it as iOS/iPadOS bundle. The system checks for MinimumOSVersion key, but in Watch App plist there is watchOS version instead. In our case, it was 7.0, which is considered a wrong value for iOS apps (9.0 is the minimal AFAIK).
Note that even if you didn't add MinimumOSVersion, the Xcode would add it to the app bundle using the value from build settings. That's why we should use ~ipad modifier: to allow storing actual value for watchOS, but overriding it for iPads.
Post
Replies
Boosts
Views
Activity
I believe I saw your question on SO, but decided to reply here as well just to share our solution more widely.
We had exact same issue for a while and finally were able to reproduce it and look for a workaround.
Reproducing
The crash is 100% triggered with these steps:
Set up and present UIPrintInteractionController with UIPrintInfo:
let pic = UIPrintInteractionController.shared
pic.printInfo = UIPrintInfo.printInfo()
pic.printingItem = ...
pic.present(animated: true)
Actually print something
In some other code place set up and present UIPrintInteractionController without UIPrintInfo:
let pic = UIPrintInteractionController.shared
pic.printingItem = ...
pic.present(animated: true) // Will crash
Solution
Always specify UIPrintInfo for UIPrintIneractionController:
pic.printInfo = UIPrintInfo.printInfo() // Prevents crash