OpenSwiftUI
OpenSwiftUI 是 Apple 的 SwiftUI 的开源实现
该项目的目的如下:
- 在非 Apple 平台(例如 Linux 和 Windows)上构建 GUI 应用程序
- 诊断和调试 Apple 平台上的 SwiftUI 问题
并且 API 设计和文档尽可能与原始 SwiftUI API 保持兼容。
[!TIP] “如果你能当海盗,为什么还要加入海军?” — 史蒂夫·乔布斯
:)
目前,该项目处于早期开发阶段。
完整的 API 文档 托管在 GitHub Pages 上。
注意事项
该项目仅用于学习和研究目的。
如果您选择使用该项目,则需自行承担风险,并负责遵守任何适用的法律。
本项目的作者不对因您使用本项目而可能产生的任何后果负责。
[!WARNING] 该包在 Apple 平台上使用了许多隐藏 API 和私有框架。
请不要在 Apple 的生产环境(例如 App Store)中使用此包。
否则,它可能会在任何未来的 SDK/OS 更新中破坏您的构建或导致您的应用程序崩溃。
使用
集成指南
要将 OpenSwiftUI 集成到您自己的 Xcode 项目中,请参阅 INTEGRATION.md 以获取详细的分步说明。
示例应用程序
查看 Example 文件夹,并使用 ExampleApp 进行尝试
[!IMPORTANT] 在运行示例之前,请在同一目录中克隆 OpenAttributeGraph。
有关更多详细信息,请参阅 Example/README.md。
构建
当前建议用于构建项目的工具链为 Swift 6.2.4 / Xcode 26.3,配合 macOS 15.5 或 iOS 18.5 模拟器。
不使用测试框架进行构建
./Scripts/build
使用库演化进行构建
./Scripts/openswiftui_swiftinterface
[!NOTE] 本项目的配置严重依赖于许多环境变量。
在 macOS 平台上,您可以使用以下工具来更轻松地管理环境变量。
- EnvPane:一个用于环境变量的 macOS 偏好设置面板
- MenuHelper:一个提升效率的 Finder 扩展应用。
- 通过
Scripts/sync_launchagent.sh使用 launchctl
支持的平台
下表描述了 OpenSwiftUI 当前对各种平台的支持级别:
Darwin 平台状态
| 测试类型 | CI 状态 |
|---|---|
| SwiftUI 兼容性 | |
| UI 测试 |
平台支持
| 平台 | CI 状态 | 支持状态 | 构建 | 测试 | 部署 | 负责人 |
|---|---|---|---|---|---|---|
| macOS | ⭐️⭐️⭐️ *1 | ✅ | ✅ | ✅ | @Kyle-Ye, @Mx-Iris | |
| iOS | ⭐️⭐️⭐️⭐️ *2 | ✅ | ✅ | ✅3 | @Kyle-Ye | |
| visionOS | 无 | ⭐️ *4 | ✅ | ✅ | ✅3 | @Kyle-Ye |
| Ubuntu 22.04 | ⭐️⭐️ *5 | ✅ | ✅ | ❌ | @Kyle-Ye | |
| Android | 无 | 尚不支持 | ❌ | ❌ | ❌ | |
| Windows | 无 | 尚不支持 | ❌ | ❌ | ❌ |
[!NOTE] 跨平台的 OpenAttributeGraph 尚未完全实现。
目前仅与 AttributeGraph 保持 API 兼容。
因此,大多数核心功能仅在基于 AttributeGraph 变体构建的 Apple 平台上可用。
[!NOTE] 若要申请平台所有权,请先为目标平台做出贡献,然后联系项目负责人。
当前支持的功能
- 颜色/图像/路径渲染(暂不支持文本)
- 布局系统
- 动画系统
- onAppear/onDisappear 修饰符
- 基础几何效果
架构

产品
- OpenSwiftUI
- 一个 SwiftUI 源码兼容框架。
- OpenSwiftUIExtension
- 针对 OpenSwiftUI 和 SwiftUI 的广泛 API 集合。
- OpenSwiftUIBridge
- 一个桥接层,用于将其他 DSL 框架增量迁移到 OpenSwiftUI 并自由混合使用。
版本化文档
文档站点使用
VersionedDocC 构建,并自动
跟踪 main 和最近的发布系列。它提供版本切换、构建
日期以及 API 变更比较功能。
在本地构建并预览该站点,请使用:
Scripts/preview-documentation.sh
See Docs/Documentation.md for configuration, caching, and release details.
免责声明
SwiftUI 是 Apple Inc. 的商标。本项目与 Apple Inc. 没有任何关联、背书或联系。OpenSwiftUI 是一个独立的开源实现,旨在用于教育和研究目的。
许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
有关第三方许可证和致谢,请参阅 CREDITS.md。