Построение командной строки Xcode 10: Ошибка архивирования с ошибкой Fabric Info.plist

У меня есть сервер Jenkins для автоматического построения проекта iOS, который имеет две цели. Сборка проекта с использованием утилиты командной строки xcodebuild,

Полные команды

/usr/bin/xcodebuild -workspace "Наш проект.xcworkspace"
    -схема "Первая цель"
    -конфигурация
    архив
    DEVELOPMENT_TEAM=TEAMCODE
    -allowProvisioningUpdates

а также

/usr/bin/xcodebuild -workspace "Наш проект.xcworkspace"
    -схема "Вторая цель"
    -конфигурация
    архив
    DEVELOPMENT_TEAM=TEAMCODE
    -allowProvisioningUpdates

До того, как я обновил Xcode до версии 10, он работает отлично. Но после обновления каждый раз вижу ошибку

ошибка: Fabric: Info.plist Ошибка

Невозможно обработать Info.plist по пути /Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/Our_project-xxxx/Build/Intermediates.noindex/ArchiveIntermediates/Our project/BuildProductsPath/Release-iphoneos/First application.app/Info.plist Это может быть проблема синхронизации, убедитесь, что фаза сборки сценария запуска Fabric является последней фазой сборки, и никакие другие сценарии не переместили Our application.app из местоположения, созданного Xcode. Вы также можете добавить "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)" в качестве зависимости "Входные файлы" для фазы сборки сценария запуска Fabric.

** АРХИВ НЕ УДАЛЕН **

После поиска в Google и чтения описания ошибки я все-таки открыл Build phases Вкладка в Xcode и настроить его (переместить Run script пункт до дна, проверьте Run script only when installing и добавить $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) Входные файлы, а также удалить пустые Run script вещь).

Ручное построение из командной строки теперь работает - похоже, проблема решена. Даже Дженкинс построил первую цель! Но цель secong не с той же ошибкой.

Я открыл проект, посмотрел вкладку "Фазы сборки" и увидел, что Run script элемент перемещен выше и новый пустой Run script появился. После этого я провел эксперимент: установил фазы сборки, пересобрал проект в графическом интерфейсе XCode и увидел, что фазы снова переупорядочены. Итак, это происходит во время или после строительства.

Как я могу исправить эту ошибку?

Скажите, можно ли вручную заказать этапы сборки из командной строки? Если да, я просто добавляю строку в шаге Дженкинса.

Кроме того: эта ошибка появляется только в сборке командной строки. Когда я строю проект из графического интерфейса Xcode, он всегда успешен.

6 ответов

Я переместил "Выполнить скрипт" с аварийной синхронизацией в конец после "Встраивать фреймворки модулей" и "Копировать ресурсы модулей", и это помогло https://s tackru.com/images/1e232279c43454130fea68ebb2cc52c5a7c8234b.png

Хорошо, я получил решение от Fabrics. Для Xcode 10 добавьте этот путь к входным файлам в фазе сборки в XCode $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

Я нашел похожее на костыль решение: выбрать Legacy Build System в File -> Workspace Settings -> Build System в графическом интерфейсе XCode.

Почему это плохое решение? Потому что:

  • Legacy Build System медленнее, чем New Build System (Default),

  • Это не настройка XCode, а рабочая область. Т.е. после очистки папки рабочего пространства в Jenkins или некоторых действиях системы управления версиями этот параметр будет сброшен к значению по умолчанию, и нерабочий параметр будет выбран снова.

Решение для завершения настройки Crashlytics и / или Fabric с помощью следующего: 1. Перейдите в Настройки сборки 2. Найдите "Формат отладочной информации" 3. Измените значение "Отладка" с "DWARF" на "DWARF с файлом dSYM" 4. Постройте Ваш проект снова.

Изменить "DWARF" Проверить изображение

Чтобы "DWARF с файлом dSYM", проверьте изображение

Я удалил производные данные проекта, и проблема была решена.

Ставить $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) под Input Files в твоей Build Phases Run Script

Другие вопросы по тегам