Get the FREE Ultimate OpenClaw Setup Guide →

asc-xcode-build

Scanned
npx machina-cli add skill rudrankriyam/app-store-connect-cli-skills/asc-xcode-build --openclaw
Files (1)
SKILL.md
3.2 KB

Xcode Build and Export

Use this skill when you need to build an app from source and prepare it for upload to App Store Connect.

Preconditions

  • Xcode installed and command line tools configured
  • Valid signing identity and provisioning profiles (or automatic signing enabled)

iOS Build Flow

1. Clean and Archive

xcodebuild clean archive \
  -scheme "YourScheme" \
  -configuration Release \
  -archivePath /tmp/YourApp.xcarchive \
  -destination "generic/platform=iOS"

2. Export IPA

xcodebuild -exportArchive \
  -archivePath /tmp/YourApp.xcarchive \
  -exportPath /tmp/YourAppExport \
  -exportOptionsPlist ExportOptions.plist \
  -allowProvisioningUpdates

A minimal ExportOptions.plist for App Store distribution:

<?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>app-store-connect</string>
    <key>teamID</key>
    <string>YOUR_TEAM_ID</string>
</dict>
</plist>

3. Upload with asc

asc builds upload --app "APP_ID" --ipa "/tmp/YourAppExport/YourApp.ipa"

macOS Build Flow

1. Archive

xcodebuild archive \
  -scheme "YourMacScheme" \
  -configuration Release \
  -archivePath /tmp/YourMacApp.xcarchive \
  -destination "generic/platform=macOS"

2. Export PKG

xcodebuild -exportArchive \
  -archivePath /tmp/YourMacApp.xcarchive \
  -exportPath /tmp/YourMacAppExport \
  -exportOptionsPlist ExportOptions.plist \
  -allowProvisioningUpdates

3. Upload PKG with asc

macOS apps export as .pkg files. Upload with asc:

asc builds upload \
  --app "APP_ID" \
  --pkg "/tmp/YourMacAppExport/YourApp.pkg" \
  --version "1.0.0" \
  --build-number "123"

Notes:

  • --pkg automatically sets platform to MAC_OS.
  • For .pkg uploads, --version and --build-number are required (they are not auto-extracted like IPA uploads).
  • Add --wait if you want to wait for build processing to complete.

Build Number Management

Each upload requires a unique build number higher than previously uploaded builds.

In Xcode project settings:

  • CURRENT_PROJECT_VERSION - build number (e.g., "316")
  • MARKETING_VERSION - version string (e.g., "2.2.0")

Check existing builds:

asc builds list --app "APP_ID" --platform IOS --limit 5

Troubleshooting

"No profiles for bundle ID" during export

  • Add -allowProvisioningUpdates flag
  • Verify your Apple ID is logged into Xcode

Build rejected for missing icon (macOS)

macOS requires ICNS format icons with all sizes:

  • 16x16, 32x32, 128x128, 256x256, 512x512 (1x and 2x)

CFBundleVersion too low

The build number must be higher than any previously uploaded build. Increment CURRENT_PROJECT_VERSION and rebuild.

Notes

  • Always clean before archive for release builds
  • Use xcodebuild -showBuildSettings to verify configuration
  • For submission issues (encryption, content rights), see asc-submission-health skill

Source

git clone https://github.com/rudrankriyam/app-store-connect-cli-skills/blob/main/skills/asc-xcode-build/SKILL.mdView on GitHub

Overview

This skill automates building from source and exporting artifacts for App Store Connect. It supports iOS IPA and macOS PKG workflows by archiving with xcodebuild, exporting with an ExportOptions.plist, and uploading via asc.

How This Skill Works

First, clean and archive the target with xcodebuild for iOS or macOS. Then export the artifact using xcodebuild -exportArchive with an ExportOptions.plist (method app-store-connect, teamID) to produce an IPA or PKG. Finally, upload the result with asc builds upload, providing the app ID and path to the IPA or PKG; include -allowProvisioningUpdates to refresh signing if needed. For macOS PKG uploads, you must supply --version and --build-number; you can also use asc to monitor processing.

When to Use It

  • Create an IPA for iOS App Store Connect submission
  • Create a PKG for macOS App Store submission
  • Automate iOS/macOS builds in CI/CD to generate artifacts for upload
  • Publish a new app version by setting CURRENT_PROJECT_VERSION and MARKETING_VERSION
  • Troubleshoot signing or provisioning issues before export (e.g., missing profiles)

Quick Start

  1. Step 1: Ensure Xcode, command line tools, and signing identities (or automatic signing) are configured
  2. Step 2: Run the iOS or macOS build flow to archive and export to IPA or PKG
  3. Step 3: Upload the artifact with asc, supplying --app and --ipa/--pkg paths (and --version/--build-number for PKG)

Best Practices

  • Always run a clean before archive for release builds
  • Use a well-defined ExportOptions.plist with method app-store-connect and your teamID
  • Include -allowProvisioningUpdates to refresh signing when needed
  • For macOS, ensure ICNS icons include all required sizes (16x16 to 512x512)
  • Track build numbers with CURRENT_PROJECT_VERSION and verify with asc builds list before upload

Example Use Cases

  • IOS IPA flow: xcodebuild clean archive -scheme 'YourScheme' -configuration Release -archivePath /tmp/YourApp.xcarchive -destination 'generic/platform=iOS'; xcodebuild -exportArchive -archivePath /tmp/YourApp.xcarchive -exportPath /tmp/YourAppExport -exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates; asc builds upload --app 'APP_ID' --ipa '/tmp/YourAppExport/YourApp.ipa'
  • macOS PKG flow: xcodebuild archive -scheme 'YourMacScheme' -configuration Release -archivePath /tmp/YourMacApp.xcarchive -destination 'generic/platform=macOS'; xcodebuild -exportArchive -archivePath /tmp/YourMacApp.xcarchive -exportPath /tmp/YourMacAppExport -exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates; asc builds upload --app 'APP_ID' --pkg '/tmp/YourMacAppExport/YourApp.pkg' --version '1.0.0' --build-number '123'
  • ExportOptions.plist example: minimal plist for App Store Connect with teamID YOUR_TEAM_ID to accompany IPA export
  • Check existing builds: asc builds list --app 'APP_ID' --platform IOS --limit 5
  • Troubleshoot: If you see 'No profiles for bundle ID', add -allowProvisioningUpdates and ensure your Apple ID is logged into Xcode

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers