Xcode控制台的 po在共享迦太基依赖时不起作用


  • 您的carthage依赖项是否已检入?是的
  • carthage安装方法:[].pkg, [x] homebrew, [] source
  • which carthage:/usr/local/bin/carthage
  • carthage version: 0.38.0
  • xcodebuild -version: Xcode 12.5,构建版本12E262
  • 您是否使用--no-build?没有
  • 您是否使用--no-use-binaries?是的
  • 您是否使用--use-submodules?没有
  • 您是否使用--cache-builds?没有
  • 您是否使用--new-resolver?是的
  • 您是否使用--use-xcframeworks?是的

Cartfile

binary "https://raw.githubusercontent.com/Snapchat/snap-kit-carthage/repo/SCSDKCreativeKit.json"    == 1.6.5
binary "https://raw.githubusercontent.com/Appboy/appboy-ios-sdk/master/appboy_ios_sdk.json"         == 4.3.2
github "SDWebImage/SDWebImage"                                                                      "5.8.2"
github "https://github.com/SourcePointUSA/ios-cmp-app.git"                                          "5.2.3"
github "facebook/facebook-ios-sdk"                                                                  "v9.2.0"
github "google/promises"                                                                            "1.2.12"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseABTestingBinary.json"                == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseRemoteConfigBinary.json"             == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebasePerformanceBinary.json"              == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"                == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDynamicLinksBinary.json"             == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseCrashlyticsBinary.json"              == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseGoogleSignInBinary.json"             == 7.4.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseProtobufBinary.json"                 == 7.4.0

迦太基输出

Builds fine

实际结果控制台的po不工作。错误提示:

error: virtual filesystem overlay file '/Users/<username>/Library/Caches/org.carthage.CarthageKit/DerivedData/12.5.1_12E507/facebook-ios-sdk/v9.2.0/Build/Intermediates.noindex/FBSDKCoreKit.build/Release-iphonesimulator/FBSDKCoreKit-Dynamic.build/all-product-headers.yaml' not found
error: couldn't IRGen expression. Please check the above error messages for possible root causes.

预期结果po应该可以工作。

我遇到过过去的问题,看起来和我的相似,但他们似乎是很久以前的事了。根据我的理解,这可能是由于我们将Carthage依赖签入了repo。从上面的错误日志中可以看出,Carthage二进制文件包含到运行carthage bootstrap / update的最后一台开发人员机器的绝对路径。从阅读几篇文章,比如这篇文章来看,检入依赖项似乎不是一个好主意,因为我们通过了--no-use-binaries。有人能证实这是不好的做法吗?关于是否检查依赖项,我看到了不同的建议。

由于不检入依赖项意味着在CI上缓存它们,如果有合适的变通方法,这将是一个相当破坏性的更改,我希望避免。我试过git忽略(和git rming).bcsymbolmap.dSYM文件的依赖,因为搜索显示这是绝对路径可以找到的地方,但这并不能解决这个问题。

唯一可行的方法是使用carthage在本地重新构建依赖项。

ps:这个问题最初是迦太基仓库的一个问题,但看起来更像是一个SO问题

我多次遇到同样的错误。很长一段时间,我也没有找到解决办法。但是经过一些新的搜索,我用下一个命令解决了这个问题:

carthage update --platform iOS --no-use-binaries

它适用于我在每一个项目中使用迦太基。要了解更多细节,您可以查看这个问题

最新更新