iOS builds

waid build --target ios builds for a physical device by default. Building and signing for iOS needs Xcode and an Apple Developer account.

Device vs simulator#

bash
waid build --target ios # device (default)
waid build --target ios --simulator # simulator

Release (App Store)#

Add --release --mode production to produce a distribution-signed App Store IPA instead of a plain device .app:

bash
waid build --target ios --release --mode production

WAID runs xcodebuild archive with an Apple Distribution identity, then -exportArchive with the app-store-connect method, and writes the signed .ipa under <build-dir>/ios-ipa/. Upload it with Transporter, Xcode Organizer, or xcrun altool. WAID exports the IPA locally and never uploads for you.

Signing uses the same iosBuildProfile:

  • Set provisioningProfile (with developmentTeam) for manual signing against an App Store distribution profile.
  • Leave provisioningProfile empty and pass --ios-allow-provisioning-updates to let Xcode manage the distribution certificate and profile automatically.

The IPA's version comes from the global version; its name → CFBundleShortVersionString, its build number → CFBundleVersion. App Store Connect rejects a build whose number isn't higher than your last upload, so bump it each time.

Signing#

Set your signing identity in waid.config.json under iosBuildProfile, or pass it on the command line. The first device build with nothing set will prompt you and save it.

json
"iosBuildProfile": {
"bundleId": "com.acme.wildlife",
"appName": "Wildlife Journal",
"developmentTeam": "PFM8X836WH"
}
FlagWhat it does
--ios-bundle-id <id>Bundle id override.
--ios-team <TEAMID>Apple Development Team id.
--ios-profile <name>Provisioning profile for manual signing.
--ios-device-udid <udid>Target a specific device.
--ios-allow-provisioning-updatesLet Xcode manage signing automatically.

Diagnose signing#

If a build fails to sign, run:

bash
waid doctor ios-signing --ios-bundle-id com.acme.wildlife

It lists the development teams and provisioning profiles it found, and whether your bundle id / device can be signed.