Xcodebuild exportArchive: не найдено подходящих устройств
После обновления до Xcode 8 с iOS 10 я получаю именно эту ошибку. Я нахожусь на последнем El Capitan и использую следующие версии ruby (я обновил через rvm, то же самое с 2.0.0, которое является версией системы) и CFPropertyList:
Philipps-MacBook-Pro:mobile-sdk prakuschan$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
Philipps-MacBook-Pro:mobile-sdk prakuschan$ gem list CF
*** LOCAL GEMS ***
CFPropertyList (2.3.3)
Команда xcodebuild -exportArchive выполняется в оболочке script, и после успешного архива я получаю следующую ошибку:
** ARCHIVE SUCCEEDED **
2016-09-22 10:02:16.460 xcodebuild[10375:8369748] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/9y/r64c9wld0jx2yf3glsrzhhr00000gn/T/AppName_2016-09-22_10-02-16.456.xcdistributionlogs'.
2016-09-22 10:02:18.228 xcodebuild[10375:8369748] [MT] IDEDistribution: Step failed: <IDEDistributionThinningStep: 0x7fe435f9dfb0>: Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
error: exportArchive: No applicable devices found.
Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
** EXPORT FAILED **
При изучении xcdistributionlogs IDEDistribution.standard.log содержит следующие строки в самом конце:
2016-09-22 08:02:18 +0000 [MT] /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool exited with a signal 6
2016-09-22 08:02:18 +0000 [MT] ipatool JSON: (null)
Я не знаю, ценно ли это, но это путь к ipatool:
2016-09-22 08:02:17 +0000 [MT] Running /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool
Любая помощь очень ценится. Я уже пробовал много предложений, найденных в google, но не нашел решения.
Ответы
Ответ 1
Я видел ту же проблему. После поиска:
https://forums.developer.apple.com/thread/13446
И в других местах для Xcode 7 аналогичные проблемы. Я понял, что это уникально. Вы можете исправить это, если вы настроите ipatool script в Xcode 8.
sudo vi /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool
И закомментируйте эту строку:
# Check the artwork idiom.
#return nil,"the device doesn't support the app UIDeviceFamily" unless (deviceTraits.supportedIdioms & bundle.supportedIdioms).size > 0
Обнаружено путем отключения команды ipatool в:
/var/folders/.../IDEDistribution.standard.log
Вы можете найти их через:
$ sudo find /private/var -name "*.xcdistributionlogs"
Соответствующие шаги детали/отладки: https://github.com/fastlane/fastlane/issues/8737
Ответ 2
У нас была такая же проблема "No applicable devices found"
после запуска
xcodebuild -exportArchive -archivePath ../bin/archive/GetSocialTestApp.xcarchive -exportPath ../bin/ -exportOptionsPlist ../../scripts/exportOptions.plist
Рабочее решение: wrap xcodebuild
с xcbuild-safe.sh
из fastlane repo. Подробное описание, описанное здесь.
Как оказалось, проблема была вызвана переменными окружения rvm
, xcbuild-safe.sh
очищает их перед выполнением xcodebuild
.
Не работают решения, которые мы пробовали:
- измените
ipatool
script, как описано здесь
- понижение до ruby 2.0.0
- установите рубиновые камни
CFPropertyList
, sqlite3
, которые ipatool
жаловались на
Ответ 3
Я получал Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found."
с моим корпоративным проектом, когда включал стороннюю структуру. Мой файл exportOptionsPlist
содержал запись compileBitcode=NO
, но сам проект по-прежнему содержал биткод.
Я также использовал журнал в /var/folders/.../IDEDistribution.standard.log
и нашел более ясную ошибку, которая привела меня к решению.
Дополнительная информация: https://developer.apple.com/library/content/technotes/tn2432/_index.html
Ответ 4
Скопируйте следующий код и добавьте его в конец ~/.bashrc(~/.zshrc, если вы используете ZSH). и выйти из терминала и снова запустить его (необходимо).
unset RUBYLIB
unset RUBYOPT
unset BUNDLE_BIN_PATH
unset _ORIGINAL_GEM_PATH
unset BUNDLE_GEMFILE
unset GEM_HOME
unset GEM_PATH
FYI:
Так как Xcode имеет зависимость от 2 внешних драгоценных камней: sqlite и CFPropertyList
Дополнительная информация https://github.com/fastlane/fastlane/issues/6495
Мы должны отключить эти переменные для rbenv, rvm и когда пользователь использует связной
Даже если мы не будем использовать rbenv в некоторых средах, таких как CircleCI,
Нам также необходимо явно отключить GEM_HOME и GEM_PATH.
Дополнительная информация https://github.com/fastlane/fastlane/issues/627
Ответ 5
Что это! Установите bitcode = no
, исправленная ошибка.
Ответ 6
Ответы @Tom Harada работали для меня, но я хотел найти, что привело к поломке по умолчанию ipatool
.
Это был SDK Google Cast 3.2, в котором отсутствовала запись в рамки plist. Обновление его до 3.3 разрешило проблему экспорта.
Refs:
https://code.google.com/p/google-cast-sdk/issues/detail?id=954
https://github.com/fastlane/fastlane/issues/6223#issuecomment-267343853
Ответ 7
У моей сборки script есть та же проблема, и я проверяю некоторые фреймворки, которые я добавил. Существует структура, которая включает файл plist (имя совпадает с именем Info.plist). Таким образом, я удаляю файл Info.plist, сборка script работает нормально.
![введите описание изображения здесь]()
Ответ 8
Имела ту же проблему с XCode 8.2.1
В моем случае проблема воспроизводилась при экспорте архива для дистрибутива adhoc или appstore со следующим экспортным информационным plist
<?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>teamID</key>
<string>TEAMID</string>
<key>method</key>
<string>ad-hoc</string> # or `app-store`
<key>uploadSymbols</key>
<true/>
<key>compileBitcode</key>
<false/>
<key>uploadBitcode</key>
<false/>
</dict>
</plist>
Оказалось, что одна из связанных фреймворков была скомпилирована с использованием битового кода. Это было указано в журнале экспорта xcode:
IDEDistribution.stadard.log
:
error: Failed to verify bitcode in YandexMapKit.framework/YandexMapKit:
error: Bundle only contains bitcode-marker /var/folders/zb/ftpjx10s547ddmzm_ybqdm51xdv_t7/T/IDEDistributionThinningStep.NKQ/Payload/Avito.app/Frameworks/YandexMapKit.framework/YandexMapKit (armv7)
Мне пришлось вручную перекомпилировать проект YandexMapKit
в рамки iphoneos
- и iphonesimulator
- и объединить их в универсальную фреймворк
Ответ 9
Сначала вам нужно проверить, что если вы установили sqlite3 и CFPropertyList с gem на свой Mac.
Используйте эти команды для просмотра результата в терминале:
-
gem list | grep sqlite3
-
gem list | grep CFPropertyList
если вы ничего не печатаете, вам нужно установить их с помощью sudo
-
sudo gem install sqlite3
-
sudo gem install CFPropertyList