Make iOS export fast and easy
I'd like to get to 1-click deploy from the editor for iOS games. The first step is ensuring the export pipeline is solid, up-to-date and has very reasonable defaults.
Changes
- Move to Truly Automatic
™️ code-signing. The trick is providing a default value ofiPhone Developer
andiPhone Distribution
to pick from available code signing identities (Beward, this can cause #24866 and loss of sanity). The old behavior is still here if you choose to modify the export settings. Most of this process should now be automatic for most users - Depend on modifying the
.xcodeproj
much less. We want to stay away from modifying this file and instead let Xcode manage it. To that end, most settings have been moved toxcconfig
files. - Add
Common.xcconfig
these settings are applied to all (Debug and Release) builds - Generate tweakable settings in
godot.xcconfig
and add toxcodeproj
- Don't require any icons for successful export, iOS will use a white icon with concentric circles until the art is in place. This was just one more hurdle people needed to see their games run on their devices, I've personally spent a bit of time generating random PNGs just to skip an error in this part of the export. Note that we (obviously) still set the icons if the developer provides them.
- Disambiguate the two versions needed on export. One is a 3 digit version that MUST increment, one is for public display.
- Remove Access WiFi capability from export option, as it does something else.
- Bump deployment target to iOS 10 (to match the export templates).
- Enabled just about every optional warning and set some to errors, to ensure the best hygiene. Also fixed all warnings that resulted from this.
Resolves
- #25128 - .xcconfig files autoescape all strings by default
- #24866 - This was due to the project not actually forcing the placeholder if the user typed nothing for the code signing identities
- #22197 - Ensures x86_64 slices is added to lipo fat binary
- #19996 - Use injected entitlements based on provisioning profile
-
#15997 - Only 2 values (team ID and bundle ID) are now required to properly export to iOS, all other settings are tweakable after export via the
.xcconfig
file.
Clean Up
- Remove
CFBundleSignature
fromplist
(This is an OS X key). - Remove
CFBundleIcons
from `plist (We previously migrated to Asset Catalogs) - Resolve all build warnings from exported Xcode project
Proposal for future work
- Remove identity and export method entirely and depend on Xcode export from Archive (this allows re-exporting the same build repeatedly with different certs, profiles, and capabilities).
- Add better documentation around
capabilities
and what they mean.