如何使用迦太基从Cartfile中仅更新一个库?


87

我的Cartfile有很多库。当我这样做时,carthage update它将遍历所有库。这可能需要很长时间。

有没有办法用迦太基来更新一个图书馆?像这样吗 (这不起作用)

carthage update "evgenyneu/moa"

Answers:


150

0.12版本开始 build,,checkoutupdate采用可选的空格分隔的依赖关系列表

对于如下的Cartfile

github "Alamofire/Alamofire"
github "ReactiveX/RxSwift"

您可以选择更新一个依赖项

carthage update Alamofire

或多个依赖项

carthage update Alamofire RxSwift

如果需要添加标志,请最后添加它们:

carthage update Alamofire --platform iOS

24
迦太基更新Box --no-use-binaries --platform iOS //如果您需要指定其他标志
nalexn

@Alex Salom:Box是Cartfile中仓库的名称吗?如果您使用了诸如AlamoFire这样的更熟悉的工具,将会更容易理解?什么是结果部分?另一个回购名称还是?
eonist

1
@GitSyncApp,是的,您必须编写以空格分隔的依赖项名称。我编辑了答案
Alex Salom

@MartinRomañuk到底什么不起作用?我刚刚尝试了上面的示例,carthage bootstrap它只处理了Cartfile中定义的两个依赖中的一个依赖。看一下我的终端机pasteboard.co/I9bARyq.png
Alex Salom

@AlexSalom公平地说,您正在使用,bootstrap而答案却说使用了update。随着bootstrap您下载的任何Carfile.resolved表示,也不会更新。
Lluis Gerard

13

迦太基现在支持更新单个依赖项。如果您的Cartfile中包含以下内容:

github "bitstadium/HockeySDK-iOS"

然后,您可以通过运行来仅更新此一个依赖项

carthage update HockeySDK-iOS

9

现在答案是否定的。。。如果您跑步,carthage help update您会看到

Update and rebuild the project's dependencies

[--configuration Release]
    the Xcode configuration to build (ignored if --no-build option is present)

[--platform all]
    the platform to build for (ignored if --no-build option is present)

[--verbose]
    print xcodebuild output inline (ignored if --no-build option is present)

[--no-build]
    skip the building of dependencies after updating

[--use-ssh]
    use SSH for downloading GitHub repositories

[--use-submodules]
    add dependencies as Git submodules

[--no-use-binaries]
    check out dependency repositories even when prebuilt frameworks exist (ignored if --no-build option is present)

[--color auto]
    whether to apply color and terminal formatting (one of ‘auto’, ‘always’, or ‘never’)

[/path/to/your/app]
    the directory containing the Carthage project

如您所见,没有提到仅指定一个要更新的依赖项的选项。

您应该在项目存储库上打开一个问题,要求提供支持。


9

如果框架未存储在GitHub中,或者您正在使用git标识符,则cartfile外观如下所示:

git "ssh://git@bitbucket.org/teamname/repo-name.git" ~> 1.0

那么您只能更新运行以下命令的那个

carthage update repo-name

6

我尝试了所有答案,对我而言,仅在运行后临时删除评论存储库

carthage update --platform ios

将Catfile恢复到以前的状态后



0

迅捷5

//MARK:- Step 1
carthage update KeychainAccess --platform iOS

carthage update SDKNAME(like i mention KeychainAccess upper) --platform iOS

如果您遇到这样的错误

//MARK:- If this error occur
error: unable to find utility "xcodebuild", not a developer tool or in PATH

然后再次使用Terminal 1中的第1部分

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

然后再次

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

0

[迦太基更新流程]

carthage [update|bootstrap|checkout|build] [dependency1] [dependency2] [--no-use-binaries] [--platform <name>]

//--no-use-binaries - does not use prebuild binary and use source code
//--platform - specify a platform

最长的阶段是build步骤[xcodebuild],因为:

  1. fat binary使用[关于]构建lipo
  2. 迦太基构建shared frameworks schemes了一个项目。如果您确切知道需要哪种架构,则可以:

    • 将特定方案保留在xcschemes文件夹中.../Carthage/Checkouts/<dependency>/<project>.xcodeproj/xcshareddata/xcschemes/<schema>.xcscheme

    • Carthage/Checkouts文件夹打开构建的项目->管理方案...->保留特定方案


0

看起来carthage update repo-name不起作用Carthage 0.36.0。我通过手动更新解决了这个问题Carthage.resolved。例如,添加Cartfile一个新的依赖项:

github "konkab/AlamofireNetworkActivityLogger" ~> 3.0.0

Cartfile.resolved手动添加到新的依赖项:

github "konkab/AlamofireNetworkActivityLogger" "3.0.0"

然后执行carthage bootstrap以仅更新一个依赖项:

carthage bootstrap

它将使用Carthage.resolved并仅添加一个依赖项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.