Xcodebuild: "Не найдено подходящих устройств". при экспорте архива

Как и в Xcode 7 †, шаг архивного экспорта xcodebuild дал нам ошибки.

Команда сборки

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

дает

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 **

Что дает? Как исправить?


† 7.0 и 7.0.1, на Mavericks.

Ответы

Ответ 1

В нашем случае это был конфликт с использованием несистемного рубина через rvm. Чтобы исправить это, вы должны вызвать xcodebuild в контексте rvm use system. Но это осложняется тем, что использование rvm в скриптах сложнее, чем должно быть.

Мы создали script, который исправил это для нас:

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

Это замена для xcodebuild, где

xcodebuild arg1 ... argn

станет

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

Я создал версию готовой версии. Убедитесь, что вы chmod +x в этом файле.

Ответ 2

Таким образом, основные проблемы, о которых упоминает Клей Бриджес, - это то, что в Ruby происходит ошибка. Чтобы быть конкретным, эта ошибка возникает из-за использования устаревшей версии драгоценного камня CFPropertyList.

Вы можете просто обновить этот камень, чтобы исправить проблему. xcodebuild использует системный рубин, поэтому просто выполните следующее:

/usr/bin/gem install CFPropertyList

Ответ 3

Убедитесь, что xcodebuild используется в рубине системы.

Я исправил это, выполнив следующее:

rvm use system