在 Xcode 项目中添加分叉的 Swift 包
Add forked Swift Package in Xcode project
我最近从 GitHub 分叉了一个 Swift 包库,以实现我一直缺少的功能。但是,当我尝试在 Xcode 项目中添加我的包版本时(通过添加我的分支的 url),Xcode 找不到任何结果。
这是 Swift 包管理器的预期限制还是我遗漏了什么?
尝试使用 http
而不是 https
:
编辑:
在您尝试使用 http 但问题仍然存在之后,您可能需要创建一个个人访问令牌:
- 转到 GitHub 并登录。
- 在右上角,您会看到您的头像带有一个用于打开菜单的按钮。单击 并选择“设置”。
- 从设置列表中选择开发者设置。
- 从开发者设置列表中选择个人访问令牌。
- 单击“生成个人访问令牌”link。
- 在备注文本字段中输入 Xcode,让您知道令牌是用于 Xcode。
- Select 访问令牌的范围。
- 单击“生成令牌”按钮。
- 复制令牌以便将其粘贴到 Xcode。
现在使用 Xcode 中的令牌:
- 选择 Xcode > 首选项。
- 单击首选项顶部的“帐户”按钮 window。
- 单击“添加”按钮。
- 从帐户列表中选择 GitHub。
- 单击“继续”按钮。
- 在文本字段中输入您的 GitHub 用户名和个人访问令牌。
- 单击“登录”按钮。
我最终通过手动编辑 project.pbxproj 和 Packages.resolved 文件解决了这个限制,以便它们指向存储库分支中的特定提交。
为此,关闭 Xcode,然后使用纯文本编辑器打开这两个文件。
在 project.pbxproj 文件中,更改 repo 的 url 和正确指定版本规则所需的参数。在我的例子中,我写了我需要的提交的哈希值:
/* Begin XCRemoteSwiftPackageReference section */
7902F77227C64GF9001583F1 /* XCRemoteSwiftPackageReference "Cuckoo" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/ajpallares/Cuckoo";
requirement = {
kind = revision;
revision = a9d239ff1bb93fe0204f8285d513f3139b51fbbb;
};
};
对 Packages.resolved 文件执行相同操作:
{
"package": "Cuckoo",
"repositoryURL": "https://github.com/ajpallares/Cuckoo",
"state": {
"branch": null,
"revision": "a9d239ff1bb93fe0204f8285d513f3139b51fbbb",
"version": "null"
}
显然,这不是理想的解决方案,但至少它有效 ¯\(ツ)/¯
事实上,这似乎是 Swift 包管理器的有意限制。参见:
我最近从 GitHub 分叉了一个 Swift 包库,以实现我一直缺少的功能。但是,当我尝试在 Xcode 项目中添加我的包版本时(通过添加我的分支的 url),Xcode 找不到任何结果。
这是 Swift 包管理器的预期限制还是我遗漏了什么?
尝试使用 http
而不是 https
:
编辑:
在您尝试使用 http 但问题仍然存在之后,您可能需要创建一个个人访问令牌:
- 转到 GitHub 并登录。
- 在右上角,您会看到您的头像带有一个用于打开菜单的按钮。单击 并选择“设置”。
- 从设置列表中选择开发者设置。
- 从开发者设置列表中选择个人访问令牌。
- 单击“生成个人访问令牌”link。
- 在备注文本字段中输入 Xcode,让您知道令牌是用于 Xcode。
- Select 访问令牌的范围。
- 单击“生成令牌”按钮。
- 复制令牌以便将其粘贴到 Xcode。
现在使用 Xcode 中的令牌:
- 选择 Xcode > 首选项。
- 单击首选项顶部的“帐户”按钮 window。
- 单击“添加”按钮。
- 从帐户列表中选择 GitHub。
- 单击“继续”按钮。
- 在文本字段中输入您的 GitHub 用户名和个人访问令牌。
- 单击“登录”按钮。
我最终通过手动编辑 project.pbxproj 和 Packages.resolved 文件解决了这个限制,以便它们指向存储库分支中的特定提交。
为此,关闭 Xcode,然后使用纯文本编辑器打开这两个文件。
在 project.pbxproj 文件中,更改 repo 的 url 和正确指定版本规则所需的参数。在我的例子中,我写了我需要的提交的哈希值:
/* Begin XCRemoteSwiftPackageReference section */
7902F77227C64GF9001583F1 /* XCRemoteSwiftPackageReference "Cuckoo" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/ajpallares/Cuckoo";
requirement = {
kind = revision;
revision = a9d239ff1bb93fe0204f8285d513f3139b51fbbb;
};
};
对 Packages.resolved 文件执行相同操作:
{
"package": "Cuckoo",
"repositoryURL": "https://github.com/ajpallares/Cuckoo",
"state": {
"branch": null,
"revision": "a9d239ff1bb93fe0204f8285d513f3139b51fbbb",
"version": "null"
}
显然,这不是理想的解决方案,但至少它有效 ¯\(ツ)/¯
事实上,这似乎是 Swift 包管理器的有意限制。参见: