xbase 项目介绍
项目概述
xbase 是一款旨在替代 Xcode 的开发环境,它提供了一种可靠的方法来开发苹果的新软件产品,如 iOS、watchOS 和 tvOS 等平台的应用程序。用户可以在自己喜欢的编辑器中,使用 xbase 实现对 Xcode 项目和 Swift 包的构建、监视和运行。此外,xbase 还支持实时日志记录以及一些语言服务器协议(LSP)的功能,如代码自动补全和导航。
xbase 还内置支持多种 Xcode 项目生成器,这使用户在添加或删除文件时无须启动 Xcode 或手动编辑 '*.xcodeproj' 文件。不过,用户仍然需要这些生成器,直到 xbase 完全支持文件和文件夹的添加/删除功能。
项目动机
该项目的创作者在购买了一台 M1 MacBook 后开始涉足 iOS/macOS 应用开发。然而,由于创作者习惯了 vim/shell 环境的键盘操作,对转向一个依赖鼠标的闭源开发环境难以适应。因此,创作者决定通过开发 xbase 来简化自己的开发流程,从而更高效地生产出 xOS 产品。
项目特点
- 自动补全和代码导航:自动生成编译数据库并提供代码符号的导航和自动补全功能。
- 支持多 neovim 实例:多个 neovim 实例支持实现无进程重复和共享状态,能够跨实例停止后台服务。
- 后台守护进程自动管理:根据连接的客户端实例数量自动启动或停止守护进程。
- 多目标/项目支持:支持在单一 neovim 实例中同时处理多个项目。
- 模拟器支持:支持在目标平台的模拟器上运行产品,并监视构建和运行的变化。
- 运行时/构建日志:实时记录构建日志和
print()
输出。 - 状态行支持:能够通过全局变量在状态行中更新构建/运行命令。
- 低资源占用:运行 xbase 时通常只占用 0.1% 的内存和 0% 的 CPU。
- 支持多 xcodeproj 生成器:在不存在 xcodeproj 时自动生成,并在文件或目录变更时自动更新。
- Swift 包支持:在
.build
文件夹不存在时自动生成,更新Package.swift文件或添加或移除文件/目录。
生成器支持
xbase 主要支持两种项目生成器:[XcodeGen] 和 [Tuist]。对于初学者,推荐使用 XcodeGen,因为它使用 YAML 格式配置语言,较为简单。而 Tuist 功能强大,适合需要多种功能的用户。
安装与使用
要安装 xbase,用户只需运行 make install
命令,这会执行 cargo build --release
并将生成的二进制文件放置在 ~/.local/share/xbase/
目录下。
对于 neovim 用户,xbase 提供了多种插件管理器的安装配置,如 packer、vim-plug 和 dein。安装完成后,用户需要设置 sourcekit-lsp
并添加更多的根模式文件。
使用 xbase 在 neovim 中进行开发时,用户需打开含有 project.yml
、Project.swift
或 *.xcodeproj
文件的代码基础目录,xbase 的后台服务将自动启动并注册项目进行重新编译监视。
调试
有时 xcodebuild 可能会出现问题,这时可以通过查看日志找到根本原因。可以通过命令 tail -f /tmp/xbase.log
查看守护进程日志和 tail -f /tmp/xbase-build-server.log
查看构建服务器日志。在需要手动停止服务时,可以执行 killall xbase xbase-sourcekit-helper
命令。
xbase 目前仍在开发中,用户如果遇到问题,可以积极报告错误、提出问题或建议新功能。这个项目旨在为开发者提供一个简化且高效的开发环境。