iOS 7 plist issues

39 views
Skip to first unread message

Dave MacLachlan

unread,
Feb 25, 2016, 12:09:24 AM2/25/16
to plist-discuss
Just an FYI:

If you generate a moderately complex Info.plist with dd-plist and save it off in binary format, and insert it into an app generated with Xcode 7.x, you may find that an iOS 7 device will refuse to allow you to install your app on it. The error if you attempt to do it via Xcode is: "Apps must have a CFBundleVersion declared as a string in their Info.plist, but com.foo.bar does not. Failing installation."

Interestingly using Xcode 6.4 to compile the app (with the same plist generated by dd-plist) will install happily on the iOS 7 device, and both the Xcode 6.4 and the Xcode 7.x versions will install happily on iOS 8 and iOS 9 devices. It is specific to the combination of Xcode 7.x, dd-plist and iOS 7 devices that cause the issue.

FWIW you can "fix" the plist by using plutil on a mac (plutil -convert binary1 foo.plist -o foo.plist). You'll note that the plist is probably a bit bigger, but the iOS 7 device will now take it happily.

I've played with it for a bit, and it appears to be something specific to the way that Apple is hashing values into their dictionaries. I'm modified dd-plist in a variety of ways to make it closer to what plutil (or Apple's serialization routines) would do with the same data, but I haven't yet gotten the iOS 7 device to accept it. I've tried a variety of iOS 7 devices.  

This problem is pretty specific to my exact use case, but I thought other folks may be interested.

Cheers,
Dave

Hannes Angst

unread,
Mar 29, 2016, 1:49:57 PM3/29/16
to plist-discuss
Hi Dave,

I would love to see these files. Any chance for sharing?
Reply all
Reply to author
Forward
0 new messages