Guide to generate a signed IPA to upload to Diawi via Xcode Archive + Distribute.
Prerequisites
Before starting, make sure you have completed:
- [ ] Flutter build without signing →
bash scripts/build-production.sh ios app(API_KEY and BACKEND_URL are taken from.envautomatically) - [ ] Apple Developer account configured in Xcode (see Mac Setup)
Step 1 — Open the project
bash
cd zerolatency-live-player-app
open ios/Runner.xcworkspaceXcode opens with the project workspace.
Step 2 — Verify signing
In Xcode's left navigator:
- Select Runner (project root)
- Go to the Signing & Capabilities tab
- Team: select your Apple Developer team
- Bundle Identifier:
com.zerolatency.liveplayer - Make sure ✅ Automatically manage signing is checked
- Verify there are no red ⚠️ badges under capabilities
If you see No profiles for 'com.zerolatency.liveplayer':
- Go to developer.apple.com → Certificates, Identifiers & Profiles
- Create the identifier
com.zerolatency.liveplayerif it doesn't exist - Download the provisioning profile and open it
Step 3 — Archive
Menu bar → Product → Archive⏳ Duration: 2-4 minutes (includes VLCKit compilation).
What happens:
- Xcode compiles all the Swift/Dart code (libraries already ready from the Flutter build)
- Creates an archive (.xcarchive) — a bundle with the app + debug symbols
- The Organizer window opens automatically when done
💡 Tip: If the Archive button is grayed out, select Any iOS Device (or a specific device) in the scheme selector, not a simulator.
Step 4 — Distribute (create IPA)
In the Organizer window, with the archive selected:
4a — Click Distribute App
4b — Choose the distribution method
| Method | Devices | Where to upload |
|---|---|---|
| Enterprise | Unlimited (Enterprise account only) | Diawi / MDM |
| Ad Hoc | Only registered UDID devices | Diawi |
| Development | Only USB devices | Install via cable |
| App Store | TestFlight / App Store | App Store Connect |
For Diawi use Enterprise or Ad Hoc.
4c — Select team
Select the Apple Developer team (the same as Step 2).
4d — Options
- Include bitcode: ❌ NO (already disabled in the project)
- Strip Swift symbols: ✅ YES
- Rebuild from bitcode: ❌ NO
4e — Export
Choose a destination folder for the IPA (e.g. Desktop/).
Step 5 — Upload to Diawi
- Go to diawi.com
- Drag the
.ipafile into the page - Enter your email (optional, for notifications)
- Click Send
- 👆 Scan the QR code with the iPad to install the app
Summary — Quick command
To build everything from scratch:
bash
# 1. Build unsigned .app
cd zerolatency-live-player-app
bash scripts/build-production.sh ios app
# 2. Open Xcode
open ios/Runner.xcworkspace
# 3. Product → Archive → Distribute → 👆 follow the steps aboveTroubleshooting
| Problem | Cause | Solution |
|---|---|---|
Archive grayed out | Simulator selected | Change scheme to Any iOS Device |
No profiles for identifier | Identifier missing on Apple Developer | Create it on developer.apple.com → Identifiers |
Failed to locate signing assets | Certificate missing in the keychain | Xcode → Settings → Accounts → Download Manual Profiles |
Communication with Apple failed | Network issue or rate limit | Wait a few minutes and retry |
IPA validation failed | Bundle ID already used by another app | Use a different Bundle ID |
The app references non-public selectors | Private APIs used (VLCKit) | Try Enterprise/Ad Hoc distribution instead of App Store |