Построение командной строки 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