carthage version
: 0,23,0xcodebuild -version
: Xcode 9.0 (версия сборки 9M137d)--no-build
? Нет.--no-use-binaries
? Нет.--use-submodules
? Нет.--cache-builds
? Нет.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"}}
Это тот же проект. Единственное изменение - я вернулся к старой системе сборки. Ссылка: 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
Просто попробовал сам. Похоже, это из-за того, что мы выполняем действие 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.
Самый полезный комментарий
Это все еще проблема с Xcode 9 GM и Carthage 0.25.