Carthage: Несовместим с системой новой сборки Xcode 9

Созданный на 23 июн. 2017  ·  3Комментарии  ·  Источник: Carthage/Carthage

  • carthage version : 0,23,0
  • xcodebuild -version : Xcode 9.0 (версия сборки 9M137d)
  • Вы используете --no-build ? Нет.
  • Вы используете --no-use-binaries ? Нет.
  • Вы используете --use-submodules ? Нет.
  • Вы используете --cache-builds ? Нет.

С новой системой сборки Xcode

Cartfile

github "TintPoint/Overlay" "9b650a401ab25d6ed0fd6b9c11624f4675b2e0ed"

Карфаген Выход

> carthage update
*** Checking out Overlay at "9b650a401ab25d6ed0fd6b9c11624f4675b2e0ed"
*** xcodebuild output can be found in /var/folders/8_/50yhmqsx707b9p23hj_lns680000gn/T/carthage-xcodebuild.cqRGfQ.log
*** Building scheme "Overlay" in Overlay.xcodeproj
Failed to write to ~/<ProjectName>/Carthage/Build/iOS/Overlay.framework: Error Domain=NSCocoaErrorDomain Code=260 "The file “Overlay.framework” couldn’t be opened because there is no such file." UserInfo={NSFilePath=~/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/9b650a401ab25d6ed0fd6b9c11624f4675b2e0ed/Build/Products/Release-iphoneos/Overlay.framework, NSUnderlyingError=0x7f802dc72250 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

Со старой системой сборки Xcode

Это тот же проект. Единственное изменение - я вернулся к старой системе сборки. Ссылка: https://github.com/TintPoint/Overlay/commit/d903b7ae8f2cae50775b4d4499e72190a577e3dc

Cartfile

github "TintPoint/Overlay" "d903b7ae8f2cae50775b4d4499e72190a577e3dc"

Карфаген Выход

> carthage update
*** Checking out Overlay at "d903b7ae8f2cae50775b4d4499e72190a577e3dc"
*** xcodebuild output can be found in /var/folders/8_/50yhmqsx707b9p23hj_lns680000gn/T/carthage-xcodebuild.hyv7ig.log
*** Building scheme "Overlay" in Overlay.xcodeproj
help wanted

Самый полезный комментарий

Это все еще проблема с Xcode 9 GM и Carthage 0.25.

Все 3 Комментарий

Просто попробовал сам. Похоже, это из-за того, что мы выполняем действие clean . В старой системе сборки «чистая» очищала только продукты и промежуточные объекты сборки.

Clean.Remove clean <user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/d903b7ae8f2cae50775b4d4499e72190a577e3dc/Build/Intermediates.noindex/Overlay.build/Release-iphoneos/Overlay.build
    builtin-rm -rf <user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/d903b7ae8f2cae50775b4d4499e72190a577e3dc/Build/Intermediates.noindex/Overlay.build/Release-iphoneos/Overlay.build

Clean.Remove clean <user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/d903b7ae8f2cae50775b4d4499e72190a577e3dc/Build/Products/Release-iphoneos/Overlay.framework
    builtin-rm -rf <user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/d903b7ae8f2cae50775b4d4499e72190a577e3dc/Build/Products/Release-iphoneos/Overlay.framework

Clean.Remove clean <user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/d903b7ae8f2cae50775b4d4499e72190a577e3dc/Build/Products/Release-iphoneos/Overlay.framework.dSYM
    builtin-rm -rf <user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/d903b7ae8f2cae50775b4d4499e72190a577e3dc/Build/Products/Release-iphoneos/Overlay.framework.dSYM

** CLEAN SUCCEEDED **

Но в новой системе просто решили пойти и сдуть всю папку Build

Removing '<user-home>/Library/Caches/org.carthage.CarthageKit/DerivedData/Overlay/9b650a401ab25d6ed0fd6b9c11624f4675b2e0ed/Build'

Похоже, это проблема только для платформ, с которыми мы объединяем архитектуру. Любая другая схема сразу выполняет копию. Но в случае с симулятором мы упорядочиваем два набора архитектуры (устройство, симулятор), объединяем продукты, а затем делаем копию. Возможные решения, о которых я могу думать:
- По завершении переместите фреймворки в промежуточную область, затем выполните двоичное слияние оттуда, вместо того, чтобы просто выполнять слияние непосредственно из каталога продуктов сборки.
- Поскольку мы уже настраиваем наши производные данные, далее разбиваем их по SDK симулятора или нет, чтобы очистка устройства не мешала сборке симулятора.

Согласно Apple, новая система сборки имеет другое чистое поведение. Чтобы быть более конкретным, старая система предлагает два варианта: очистить и очистить папку сборки. Новая система предлагает только один вариант: очистить папку сборки.

Это все еще проблема с Xcode 9 GM и Carthage 0.25.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги