Xcode 的配置文件虽然是纯文本,但正常人基本看不懂。也没有一个工具可以在不丢失任何信息的情况下把 project.pbxproj
解析成人类可读的格式。
最近开发 Flutter ,发现官方提供的 macOS 和 iOS 模版都是基于 Xcode 的,也就是说如果想要查看或修改构建配置,必须打开 Xcode ,这显然是可以接受的 (unacceptable)。
Xcodeproj 可以把 project.pbxproj
解析成 YAML 格式,在 Flutter 的 macOS 模版上试了下,构建相关的信息基本没丢。
但 Flutter 自身仍要借助 Xcode 来构建,所以只能看是不行的,必须有工具重新生成 project.pbxproj
。
XcodeGen 虽然可以通过 YAML 生成 project.pbxproj
,但它的 spec 跟 Xcodeproj 解析出来的 YAML 完全不同。
目前只能通过对照 Xcodeproj 解析出来的 YAML 和 XcodeGen 的 spec 人工完成。
我花了两天时间把 Flutter macOS 模版里的 project.pbxproj
解析成了 YAML ,简单改改就能直接用了。
https://github.com/jat001/ddns4cdn-aio/blob/main/src/macos/project.yml
另外还有一份通过 Swift 调用 staic library (.a) 或 shared library (.so) 的示例,仍然无需打开 Xcode 就可编译。
https://github.com/jat001/ddns4cdn/tree/main/src/cgo/swift
这个项目其实是 Go 写的,通过 cgo 实现了用 C, C++, Objective-C 和 Swift 调用 Go 。当然,入参只有一个字符串,毕竟类型转换很麻烦,复杂的调用不如直接用目标语言重写。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.