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