Search code examples
xcodervmxcode7xcodebuild

xcodebuild: "No applicable devices found." when exporting archive


As of Xcode 7†, the xcodebuild export archive step has been giving us errors.

Build command

xcodebuild -exportArchive -archivePath "path/to/Thing.xcarchive" \
        -exportPath "path/to/" \
        -exportOptionsPlist path/to/PackageOptions-adhoc.plist

yields

2015-10-08 16:28:27.409 xcodebuild[62682:464728] [MT] IDEDistribution: Step failed: <IDEDistributionThinningStep: 0x7ff1a42d23f0>: Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo=0x7ff1a72ddd80 {NSLocalizedDescription=No applicable devices found.}
error: exportArchive: No applicable devices found.

Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo=0x7ff1a72ddd80 {NSLocalizedDescription=No applicable devices found.}

** EXPORT FAILED **

What gives? How to fix?


† 7.0 & 7.0.1, on Mavericks.


Solution

  • In our case, this was a conflict with our use of a non-system ruby via rvm. To fix, you need to call xcodebuild inside the context of rvm use system. But doing this is complicated by the fact that using rvm in scripts is harder than it should be.

    We created a script which fixed this for us:

    #!/bin/bash --login
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
    rvm use system
    xcodebuild "$@"
    

    This is a drop-in replacement for xcodebuild, where

    xcodebuild arg1 ... argn
    

    would become

    path/to/xcbuild-safe.sh arg1 ... argn
    

    I've gisted a production-ready version. Make sure you chmod +x on that file.