AgentSkillsCN

run-ios-simulator

在 iOS 模拟器中构建和运行 iPlug2 iOS 应用程序

SKILL.md
--- frontmatter
name: run-ios-simulator
description: Build and run an iPlug2 iOS app in the iOS Simulator

Run iOS App in Simulator

Use this skill when the user wants to run an iPlug2 iOS project in the iOS Simulator.

Workflow

  1. Identify the project:

    • If not specified, look for .xcworkspace files in the repo root
    • Ask user to choose if multiple projects exist
  2. Check available simulators and get UDID:

    bash
    xcrun simctl list devices available | grep -E "iPhone|iPad"
    

    Extract the UDID from the output (the value in parentheses, e.g., 9E866BC3-9E64-4608-B4D0-D20F1DE3E980)

    Or programmatically:

    bash
    xcrun simctl list devices available -j | jq -r '.devices[] | .[] | select(.name=="[DeviceName]") | .udid'
    
  3. Build for Simulator:

    bash
    xcodebuild -workspace [Project]/[Project].xcworkspace \
      -scheme "iOS-APP with AUv3" \
      -configuration Debug \
      -destination 'platform=iOS Simulator,name=[DeviceName]' \
      build
    
  4. Find the built app:

    bash
    find ~/Library/Developer/Xcode/DerivedData -name "[Project].app" -path "*Debug-iphonesimulator*" -type d 2>/dev/null | head -1
    
  5. Boot simulator and install (use UDID, not "booted"):

    bash
    open -a Simulator
    xcrun simctl boot [UDID] 2>/dev/null || true
    xcrun simctl install [UDID] "[path/to/Project.app]"
    

    Using the UDID ensures the correct simulator is targeted even when multiple are running.

  6. Launch the app (use UDID):

    bash
    # Get bundle ID from Info.plist
    /usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "[path/to/Project.app]/Info.plist"
    xcrun simctl launch [UDID] [bundle.identifier]
    

Notes

  • No code signing required for Simulator builds
  • Always use UDID to target a specific simulator, not booted
  • Default device: iPhone 17 Pro (or latest available)
  • The AUv3 plugin is embedded in the app and will be available to host apps in the Simulator
  • Use xcrun simctl list devices available to see all device options
  • If jq is not installed, extract UDID manually from xcrun simctl list devices available output

Example

For TemplateProject on iPhone 17 Pro:

bash
# Get the UDID for iPhone 17 Pro
UDID=$(xcrun simctl list devices available -j | jq -r '.devices[] | .[] | select(.name=="iPhone 17 Pro") | .udid')

# Build
xcodebuild -workspace TemplateProject/TemplateProject.xcworkspace \
  -scheme "iOS-APP with AUv3" -configuration Debug \
  -destination "platform=iOS Simulator,id=$UDID" build

# Install and run using UDID
open -a Simulator
xcrun simctl boot $UDID 2>/dev/null || true
xcrun simctl install $UDID ~/Library/Developer/Xcode/DerivedData/TemplateProject-*/Build/Products/Debug-iphonesimulator/TemplateProject.app
xcrun simctl launch $UDID com.AcmeInc.TemplateProject