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#
waid build --target ios # device (default)waid build --target ios --simulator # simulatorRelease (App Store)#
Add --release --mode production to produce a distribution-signed App Store IPA instead of a plain
device .app:
waid build --target ios --release --mode productionWAID 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(withdevelopmentTeam) for manual signing against an App Store distribution profile. - Leave
provisioningProfileempty and pass--ios-allow-provisioning-updatesto 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.
"iosBuildProfile": { "bundleId": "com.acme.wildlife", "appName": "Wildlife Journal", "developmentTeam": "PFM8X836WH"}| Flag | What 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-updates | Let Xcode manage signing automatically. |
Diagnose signing#
If a build fails to sign, run:
waid doctor ios-signing --ios-bundle-id com.acme.wildlifeIt lists the development teams and provisioning profiles it found, and whether your bundle id / device can be signed.