0017 - Use Swift to build watchOS app
对应的官方页面地址
ID: | ADR-0017 |
---|---|
状态: | 完成 |
发表于: | 2022-12-30 |
背景和问题陈述
我们希望将 watchOS 应用程序与常规 iOS 应用程序捆绑在一起。watchOS 应用程序将作为一个辅助应用程序,最初提供一种从手表查看之前从 iPhone 同步的 TOTP 代码的方法。
考虑的方案
决策结果
选择的方案:使用 SwiftUI 的 Swift。
积极的后果
完全支持 watchOS
我们可以正确构建和调试应用程序
通过声明式 UI 和预览功能进行快速开发,增强开发体验
使用 UI 上的组件组织代码
框架和 SDK 的更新可在 Apple 发布后立即获得
有更多的文档、示例和公共存储库可供查阅
消极的后果
团队需要学习新的技术堆栈
即使我们可以正确调试应用程序,我们也不能同时调试 iOS 和 watchOS 应用程序(调试 watchOS 应用程序时,iPhone 上安装了一个存根 iOS 应用程序,因此原始应用程序会被存根应用程序覆盖)
由于我们需要将 XCode 构建的 watchOS 应用程序捆绑到 Xamarin iOS 应用程序中并相应地更新 CI,因此设置更加困难
方案的优点和缺点
使用 Xamarin 的 .Net
✅ 保持相同的技术堆栈
✅ 共享大量代码
✅ 更简单的学习曲线和审查
✅ 易于集成到常规 iOS 应用程序中
⛔ 影响 watchOS 开发体验的几个重要问题,尤其是无法正确调试
⛔ watchOS 平台不是 .Net 团队的优先考虑事项
⛔ 没有计划在 MAUI、.Net 7 和 .Net 8 上加入 watchOS 支持
使用 WatchKit 的 Swift
✅ 这是原生方法,意味着它始终是最新的
✅ 有大量的文档和示例/项目可供查看
✅ 调试工作符合预期
⛔ 陡峭的学习曲线(语言 + Watch 相关的内容)
⛔ 难以集成到常规 iOS 应用程序中
使用 SwiftUI 的 Swift
✅ 这是原生方法,意味着它始终是最新的
✅ 有大量的文档和示例/项目可供查看
✅ 调试工作符合预期
✅ 使用 SwiftUI 框架快速开发
✅ 预览功能让开发体验更上一层楼,大大减少了工作量
⛔ 陡峭的学习曲线(语言 + Watch 相关的内容 + SwiftUI 框架)
⛔ 难以集成到常规 iOS 应用程序中
⛔ SwiftUI 还不够完善,因此需要注意一些特殊的导航和渲染问题
最后更新于