Don't add contents to plist file on C.BundleInfo call, instead store data and use it generate plist contents before writing. This fixes an issue where the same key could end up in the plist twice (the actual problem was uidevicefamily is set by default, but I needed to override it to make a universal app, and the old code would add two entries, the default, and then my override, with the new code only my override appears).