XcodeProj
XcodeProj是一个用于解析和处理Xcode项目的Swift库。它深受CocoaPods XcodeProj和xcode的启发。
使用XcodeProj的项目
项目 | 仓库 |
---|---|
ProjLint | github.com/JamitLabs/ProjLint |
rules_xcodeproj | github.com/buildbuddy-io/rules_xcodeproj |
Rugby | github.com/swiftyfinch/Rugby |
Sourcery | github.com/krzysztofzablocki/Sourcery |
Tuist | github.com/tuist/tuist |
XcodeGen | github.com/yonaskolb/XcodeGen |
xspm | gitlab.com/Pyroh/xspm |
如果您也在项目中使用XcodeProj,请随意提交PR以将其包含在上面的列表中。
安装
Swift 包管理器
在您的 Package.swift
文件中添加依赖项
let package = Package(
name: "myproject",
dependencies: [
.package(url: "https://github.com/tuist/XcodeProj.git", .upToNextMajor(from: "8.9.0")),
],
targets: [
.target(
name: "myproject",
dependencies: ["XcodeProj"]),
]
)
Carthage
仅限 macOS
# Cartfile
github "tuist/xcodeproj" ~> 8.8.0
CocoaPods
pod 'xcodeproj', '~> 8.8.0
脚本
使用 swift-sh
可以使用脚本自动化项目任务,例如我们可以编写一个脚本,将项目的版本键与表示项目版本的当前 git 标签保持同步
#!/usr/bin/swift sh
import Foundation
import XcodeProj // @tuist ~> 8.8.0
import PathKit
guard CommandLine.arguments.count == 3 else {
let arg0 = Path(CommandLine.arguments[0]).lastComponent
fputs("usage: \(arg0) <project> <new-version>\n", stderr)
exit(1)
}
let projectPath = Path(CommandLine.arguments[1])
let newVersion = CommandLine.arguments[2]
let xcodeproj = try XcodeProj(path: projectPath)
let key = "CURRENT_PROJECT_VERSION"
for conf in xcodeproj.pbxproj.buildConfigurations where conf.buildSettings[key] != nil {
conf.buildSettings[key] = newVersion
}
try xcodeproj.write(path: projectPath)
您可以将此存储在您的仓库中,例如在 scripts/set-project-version
中,然后运行它
$ scripts/set-project-version ./App.xcodeproj 1.2.3
$ git add App.xcodeproj
$ git commit -m "Bump version"
$ git tag 1.2.3
未来的适配可以轻松地包括确定版本和自动增加版本。如果是这样,我们建议使用提供 Version
对象的库。
📝
文档想要开始使用 XcodeProj 吗?请先查阅我们的文档,这有助于您熟悉 API 并了解更多有关 Xcode 项目结构的内容。
📚
参考- Xcode 项目文件格式
- 简要介绍 Xcode 项目格式
- pbexplorer
- pbxproj 标识符
- mob-pbxproj
- Xcodeproj
- Nanaimo
- Facebook Buck
- Swift Package Manager - Xcodeproj
贡献
- 使用 Git 克隆仓库
[email protected]:tuist/xcodeproj.git
。 - 使用 Xcode 打开
Package.swift
。
许可证
XcodeProj 在 MIT 许可下发布。有关详细信息,请参阅LICENSE。
✨
贡献者感谢这些杰出的人们 (表情键)
本项目遵循 all-contributors 规范。欢迎任何形式的贡献!