User Script Sandboxing 设置为 NO 。这个设置控制了 Xcode 脚本的沙盒限制,默认情况下,Xcode 会将脚本放入沙盒环境中,限制其访问文件系统的权限,尤其是对某些目录(例如项目文件夹之外的文件)进行修改时,会出现权限题目。
通过将 User Script Sandboxing 设置为 NO,您可以允许脚本访问文件系统中的任何位置,从而制止 Operation not permitted 的错误。
怎样禁用 User Script Sandboxing:
- 打开 Xcode 项目。
- 选择 Xcode 菜单中的 File > Project Settings。
- 在项目设置窗口中,找到 Build Settings。
- 搜索 User Script Sandboxing,并将其设置为 NO。
这将允许您的脚本在构建过程中访问文件系统中的更多内容,并修改文件。
留意事项:
- 安全性: 禁用沙盒模式大概会对您的项目构建过程带来潜在的风险,特别是如果您在脚本中执行了不受信任的操纵。在禁用沙盒后,请确保您的脚本和操纵安全可靠。
- 权限题目: 纵然禁用了沙盒,偶然系统级的权限(例如 sudo 权限)仍然大概影响文件的读写权限。如果您使用了类似/etc/或 /System/ 如许的系统目录,您大概需要使用管理员权限。
总的来说,禁用沙盒模式是办理您遇到的权限题目标一种方法,但需要确保其他安全措施不受影响。
要实现将 Git 提交版本号和 Git 分支名称写入 Info.plist 并通过代码读取,可以按照以下步调操纵:
步调 1: 创建或更新 Info.plist
首先,您需要确保 Info.plist 文件中包罗 Git 提交版本号和 Git 分支名称这两个字段。您可以在 Info.plist 中手动添加,也可以通过脚本自动化添加。以下是您可以在 Info.plist 文件中添加的内容:
- <key>GitCommitHash</key>
- <string>your_git_commit_hash_here</string>
- <key>GitBranch</key>
- <string>your_git_branch_here</string>
复制代码 其中,your_git_commit_hash_here 和 your_git_branch_here 将会在构建过程中被动态更换。
步调 2: 编写脚本自动写入 Info.plist
为了自动将 Git 提交版本号和 Git 分支名称写入 Info.plist,您可以在 Xcode 的构建过程中使用一个自定义的 Shell 脚本。这个脚本将通过 Git 获取当前的提交哈希值和分支名称,并将它们写入 Info.plist。
在 Xcode 项目中添加脚本
- 在 Xcode 中,选择您的项目目标。
2.转到 Build Phases,点击左上角的 + 按钮,选择 New Run Script Phase。
3.将以下脚本添加到脚本框中:
- bash 代码解读复制代码#!/bin/bash
- # 获取当前 Git 提交的哈希值(短格式)
- commit_hash=$(git rev-parse --short HEAD)
- # 获取当前 Git 分支的名称
- branch_name=$(git rev-parse --abbrev-ref HEAD)
- # 获取 Info.plist 文件路径
- plist_path="${PROJECT_DIR}/YourProject/Info.plist" # 请替换为实际路径
- # 修改 Info.plist 中的 Git 信息
- /usr/libexec/PlistBuddy -c "Set :GitCommitHash $commit_hash" "$plist_path"
- /usr/libexec/PlistBuddy -c "Set :GitBranch $branch_name" "$plist_path"
复制代码 此脚本将会在每次构建时执行,并将当前 Git 提交哈希和分支名称动态写入 Info.plist 文件中的 GitCommitHash 和 GitBranch 键。
步调 3: 在代码中读取 Git 信息
在您的代码中,您可以像您提到的那样,通过 Bundle.main.infoDictionary 读取这些值:
- swift 代码解读复制代码// MARK: - Git 相关信息
- /// 获取 Git 提交版本号
- static var gitCommitHash: String {
- guard let commitHash = Bundle.main.infoDictionary?["GitCommitHash"] as? String else {
- return "未知提交"
- }
- return commitHash
- }
- /// 获取 Git 分支名称
- static var gitBranch: String {
- guard let branch = Bundle.main.infoDictionary?["GitBranch"] as? String else {
- return "未知分支"
- }
- return branch
- }
复制代码 小结
- 步调 1:确保 Info.plist 包罗 GitCommitHash 和 GitBranch 键。
- 步调 2:使用自定义脚本获取 Git 信息并将其写入 Info.plist。
- 步调 3:通过 Bundle.main.infoDictionary 读取这些信息。
如许,您就能在应用中动态获取到当前的 Git 提交版本号和分支名称,并通过 Info.plist 将其通报给应用。
作者:LGL
链接:https://juejin.cn/post/7439973899334844416
来源:稀土掘金
著作权归作者所有。商业转载请接洽作者获得授权,非商业转载请注明出处。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |