Skip to content

Make iOS export fast and easy

Sam Green requested to merge github/fork/samgreen/ios_export_update into master

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 of iPhone Developer and iPhone 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 to xcconfig files.
  • Add Common.xcconfig these settings are applied to all (Debug and Release) builds
  • Generate tweakable settings in godot.xcconfig and add to xcodeproj
  • 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 from plist (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.

Merge request reports