iOS 开发包管理之 carthage

iOS 包管理

CocoaPods(Objective-C 时期,支持Objective-C和swift),CocoaPods下载第三方库源代码后会将其编译成静态库.a 文件 或动态库框架.framework 文件 的形式,并将它们添加到项目中,建立依赖关系,这种方式会修改Xcode项目属性配置依赖关系。CocoaPods 搭建了一个中心库,第三方库被 收入到该中心库中,没有收录的第三方库是不能使用 CocoaPods 管理的。

Carthage 没有这样的中心库,支持两种类型的源,一个是github,另一个是git。,第三方库基本上都是从 github 或私有 git 库中下载的,下载后会将其编译成动态框架.framework 文件,再由开发人员自己配置依赖关系,这种方式不会修改 Xcode 项目属性。

安装carthage

复制代码
brew install carthage

在工程目录创建cartfile

复制代码
touch cartfile

并添加依赖

复制代码
github "Alamofire/Alamofire" "5.0.0-rc.3"
github "onevcat/Kingfisher"
github "nixzhu/MonkeyKing"
github "SwiftyJSON/SwiftyJSON" ~> 4.0
github "SnapKit/SnapKit" ~> 5.0.0

github 依赖源,告诉 carthage 去哪里下载文件 ,后面是对应的库的名称 ,格式为 Username/ProjectName

如果是 git 的源,则 git 关键字后面跟的是 git 的地址(git://,http:// ,ssh://开头的地址,或者是本地的地址)

版本号,可选的,它的配置规则如下:

== 1.0 ,表示使用 1.0 版本

>= 1.0 ,表示使用 1.0 或更高的版本

~>1.0 表示使用 1.0 以上但是低于 2.0 的版本,如 1.3,1.6,

版本号还可以是Branch 名 tag 名commit 名即使用特定的分支或标签或提交。commit 名如 5c8a74b 之类的

拉取依赖

配置好文件后,执行下面的命令拉取依赖:

复制代码
carthage update --platform ios # 意思是指下载只支持iOS的依赖,其他如支持macos的依赖就不下载

拉取完成后项目会多出如下文件

  • cartfile: 是我们前面创建的
  • Cartfile.resolved:是具体的依赖版本对应关系,为了多端开发一致,这个文件建议提交到版本控制中。这个文件的内容如下:
  • Carthage 目录:这个目录里包含从 git 里拉取出来的依赖源文件,它包含两个子目录:

    Build 子目录包含了编译后的文件,它包含 Macos 和 iOS 对应的 .framework文件
    Checkouts 子目录就是依赖的源文件

配置项目属性

carthage 需要我们手动去配置。

这个配置就是要告诉 xcode 去前面那个 build 子目录找到所有编译好的依赖。

再配置一个脚本,这个脚本的作用就是在编译项目时把编译好的依赖拷贝过来参与编译

接下来就可以愉快地进行开发了。

相关推荐
2501_9151063211 分钟前
iOS 软件测试工具性能监控、日志分析 KeyMob、Instruments等
android·ios·小程序·https·uni-app·iphone·webview
木叶丸1 小时前
AI 编程概念与 Harness 工程实践入门
人工智能·flutter·ios
zzb15802 小时前
Zed 配置 Swift / iOS 开发
开发语言·ios·swift
黑科技iOS上架1 天前
如何解决AppStore Guideline 5.6被拒
经验分享·ios·ai编程
Geek-Chow1 天前
Mobile App Certificate Pinning: Underlying Principle and a Swift Example
开发语言·ios·swift·安全架构
韩曙亮1 天前
【Flutter】iOS 网络权限设置 ② ( 配置 iOS 平台可使用 HTTP 访问 | ATS 网络安全强制规范 )
网络·flutter·http·ios·https·网络权限·ats
CocoaKier2 天前
Facebook登录的这条红色警告,我终于搞明白了,真是反人类设计!
ios·facebook
humors2212 天前
【转帖】安全企业发布iOS漏洞攻击风险检测工具
安全·ios·手机·苹果
沐风___2 天前
iOS 崩溃收集实战:从「只看到次数、看不到原因」到 Sentry 完整集成
ios·sentry
listening7772 天前
HarmonyOS 6.1 跨端实战:用ArkUI-X把电商App同时跑在Android/iOS上
android·ios·harmonyos