it-roy-ru.com

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 выполняется в сценарии оболочки, и после успешного архивирования я получаю следующую ошибку:

** 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, но пока не нашел решения.

16
Philipp

Я видел ту же проблему. После поиска через: 

https://forums.developer.Apple.com/thread/13446

И в других местах для Xcode 7 аналогичные проблемы. Я понял, что это уникальный. Вы можете это исправить, если вы настроите скрипт ipatool в 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's 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

10
user560766

У нас была та же проблема "No applicable devices found" после запуска

xcodebuild -exportArchive -archivePath ../bin/archive/GetSocialTestApp.xcarchive -exportPath ../bin/ -exportOptionsPlist ../../scripts/exportOptions.plist

Рабочее решение: обернуть xcodebuildxcbuild-safe.sh из fastlane repo . Подробное решение описано здесь .

Как оказалось, проблема была вызвана переменными среды rvm, xcbuild-safe.sh очищает их перед выполнением xcodebuild.

Не работают решения, которые мы попробовали:

  • изменить скрипт ipatool как описано здесь
  • понижение до Ruby 2.0.0
  • установите Ruby gems CFPropertyList, sqlite3, на который ipatool жаловался 
5
zasadnyy

Я получал 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

2
Nick

Скопируйте следующее и добавьте его в конец вашего ~/.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 и когда пользователь использует bundler Даже если мы не используем rbenv в некоторых средах, таких как CircleCI, Нам также необходимо явно сбросить GEM_HOME и GEM_PATH . Подробнее информация https://github.com/fastlane/fastlane/issues/627

2
Kun Wang

Это оно! Установите bitcode = no, ошибка исправлена. ????

1
knight2016

Ответы @Tom Harada работали для меня, но я хотел выяснить, что вызывает разрыв по умолчанию ipatool.

Это был Google Cast 3.2 SDK, в котором отсутствовала запись в plist framework. Обновление до 3.3 решило проблему экспорта.

Ссылки: https://code.google.com/p/google-cast-sdk/issues/detail?id=954https://github.com/fastlane/fastlane/Issues/6223 # IssueComment-267343853

0
Nicolas Braun

Во-первых, вам нужно проверить, что если вы установили sqlite3 и CFPropertyList с gem на ваш mac . Используйте эти команды для просмотра результата в вашем терминале: 

  • gem list | grep sqlite3
  • gem list | grep CFPropertyList

если вы ничего не печатаете, то вы должны установить их с Sudo 

  • Sudo gem install sqlite3
  • Sudo gem install CFPropertyList
0
Bevis Liu

Была такая же проблема с XCode 8.2.1

В моем случае проблема воспроизводилась при экспорте архива для adhoc или appstore дистрибутива со следующим списком информации об экспорте

<?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- и объединить их в универсальный фреймворк.

0
Tim

Мой сценарий сборки имеет ту же проблему, и я проверяю некоторые рамки, которые я добавил. Существует структура, включающая файл plist (имя совпадает с именем Info.plist). Итак, я удаляю файл Info.plist, скрипт сборки работает нормально.

 enter image description here

0
riven