使用迦太基的4个技巧

我已经使用Carthage作为我的依赖项管理器大约6个月了,这里有一些我已经学到的技巧。

如《迦太基安装指南》中所示,要从组中更新特定存储库,请使用以下命令:

 迦太基更新 --platform ios 

很好,没问题-但是该存储库名称的格式是什么? 查看此示例Cartfile 。 您能为下面的每个依赖关系猜测正确的存储库名称吗?

  github“ swift / Sugar”“ e081f48892c1234dcgujk5a61892e5088fc544ff” 
github上的“ airbnb / lottie-ios” == 1.5.2
github“ moretap / PrettyBorders”“大师”
git“
git@git.nasa.com:SeanBerry / launch-ios.git“ == 1.2.3

正确的格式是文件名的最后一部分,不包括“ .git”后缀。 因此,以上分别是Sugarlottie-iosPrettyBorderslaunch-ios

如果您使用自己的SDK,则可能是将实验性更改推向实验性分支:

  git“ git@git.company.com/test.git”“ 86753098675309abcdefg” 

有时迦太基会找您一个错误,找不到您的提交。 发生了什么? 作为高级开发人员,当出现问题时,我的第一个直觉是指责自己并质疑我的所有假设。 在这种情况下,这是浪费几个小时的好方法。 事实证明,缓存有时不更新(正如2015年的报道)。 清除它,迦太基将被迫重建对您的依赖的了解:

  rm -rf〜/ Library / Caches / org.carthage.CarthageKit 

将迦太基与源代码管理一起使用时,必须决定是否签入Build文件夹。 没有正确的答案。 如果您将其签入,则使用您的项目的人可以在不运行carthage bootstrap程序的情况下拉动并运行您的应用carthage bootstrap -但您将增加回购的规模。 (Github的Swift默认.gitignore包括Carthage / Build。)

说您签入它,因为您正在使用CI,并且构建服务器需要这些文件。 几周后,苹果发布了新版本的Xcode和Swift。 但是负责SDK的同事尚未更新! 当您尝试使用它们的依赖关系时,您会在Xcode中看到如下错误:

 使用Swift 4.0编译的模块无法在Swift 4.0.2中导入 

Xcode.app使用的Swift版本可能与Xcode命令行工具使用的版本不同。 要检查Carthage使用什么版本来建立依赖关系,请进入Xcode-> Preferences-> Locations

确保将其设置为正确的版本,然后运行:

carthage update coworker-repo --platform ios

依赖关系会很好(假设新版本的Swift当然没有破坏它)。

如果您不检入/ Build文件夹并要求同事通过Carthage安装依赖项,他们可能会使用carthage updatecarthage bootstrap当然,他们可以查看您项目的文档并按照其中的说明进行操作,但是假设有人决定直接进入。

update将查看您的Cartfile并获取满足规范的所有内容的最新版本,例如,如果您指定master ,它将去查看新的master提交是什么并将其写入Cartfile.resolved.

bootstrap将仅查看Cartfile.resolved并获取那些特定的提交。

如果每个人都不在同一页面上,这可能会令人头疼。 要完全避免这种情况,请标记特定的发行版或提交,而不是分支。

  github“ Quick / Nimble” == 7.0.3#不是“ master” 

警告 :如果不使用Cartfile ~> ,将会错过增量更新。 最终,您必须找出最适合您的项目的项目。

肖恩(Sean)在 Livefront 工作, 几乎每天都 使用迦太基。