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

Clay Bridges picture Clay Bridges · Oct 9, 2015 · Viewed 8.3k times · Source

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.

Answer

Clay Bridges picture Clay Bridges · Oct 9, 2015

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.