AppForShareShare a build

Free tool

ExportOptions.plist generator

Pick the export method, team and signing, and get the ExportOptions.plist for xcodebuild -exportArchive with the matching xcodebuild and fastlane lines. Made in your browser, nothing is sent.

Method
Xcode version

Xcode 15.3 renamed ad-hoc to release-testing, app-store to app-store-connect and development to debugging. The old names still work with a warning.

Signing
Options
  • Add your team ID if your account is in more than one team; Xcode picks a team otherwise.

ExportOptions.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>method</key>
	<string>release-testing</string>
	<key>signingStyle</key>
	<string>automatic</string>
	<key>stripSwiftSymbols</key>
	<true/>
	<key>thinning</key>
	<string>&lt;none&gt;</string>
</dict>
</plist>

xcodebuild

xcodebuild archive -scheme App -configuration Release \
  -archivePath build/App.xcarchive

xcodebuild -exportArchive \
  -archivePath build/App.xcarchive \
  -exportPath build/export \
  -exportOptionsPlist ExportOptions.plist \
  -allowProvisioningUpdates

fastlane (Fastfile)

gym(
  scheme: "App",
  export_method: "ad-hoc",
  export_options: {
    signingStyle: "automatic"
  }
)

Share this build with testers

Upload the .ipa from build/export and send testers one install link or QR code. AppForShare writes the manifest.plist and the itms-services link for you, and checks that each tester's iPhone is in the profile.

npx appforshare upload build/export/App.ipa

Questions

What is ExportOptions.plist?
The file xcodebuild -exportArchive reads to turn an .xcarchive into an .ipa: the export method, your team ID, the signing style and, for manual signing, which provisioning profile signs each bundle ID. Xcode writes one next to every export you make from the Organizer; this page makes it without opening Xcode, for CI.
Which method do I pick to send a build to testers by link?
Release testing, called ad-hoc before Xcode 15.3. The build installs on the iPhones and iPads registered in its Ad Hoc profile. Upload the .ipa to AppForShare and testers install it from one link or QR code. App Store Connect builds go to TestFlight only and cannot be installed from a link.
What changed in Xcode 15.3?
The method names: ad-hoc became release-testing, app-store became app-store-connect and development became debugging. Enterprise stayed. The old names still work, with a deprecation warning, so pick "15.2 or earlier" if your CI still runs an older Xcode.
Automatic or manual signing?
Automatic lets Xcode pick or make the profiles; on CI it needs -allowProvisioningUpdates and an App Store Connect API key or a signed in account. Manual names the profile for every bundle ID, including each app extension and watch app, and is the usual choice on CI with installed profiles.
Which fastlane export_method values work?
fastlane gym takes the classic names (ad-hoc, app-store, development, enterprise) on every Xcode version, so the fastlane lines on this page use them. The plist itself follows the Xcode version you pick.
Is anything sent to a server?
No. The file is made in your browser. Team IDs and profile names are not sent anywhere.

More free tools: all tools, IPA inspector, provisioning profile inspector, UDID finder.