适用于苹果平台的Home Assistant
入门指南
Home Assistant使用Bundler、Homebrew和Cocoapods来管理构建依赖项。你需要Xcode 15.3(或更高版本),可以从App Store下载。你可以使用以下命令运行应用程序:
git clone https://github.com/home-assistant/iOS.git
cd iOS
# 你必须执行以下操作之一,但不需要全部执行:
## 通过homebrew安装cocoapods,使用以下命令
brew install cocoapods
$(brew --prefix)/opt/ruby/bin/gem install cocoapods-acknowledgements
pod install --repo-update
## 通过homebrew安装ruby,使用以下命令
brew install ruby@3.1
$(brew --prefix)/opt/ruby@3.1/bin/bundle install
$(brew --prefix)/opt/ruby@3.1/bin/bundle exec pod install --repo-update
## 通过rbenv安装ruby,使用以下命令
brew install rbenv ruby-build
rbenv install
bundle install
bundle exec pod install --repo-update
完成后,你可以启动HomeAssistant.xcworkspace
并在模拟器或iOS设备上运行App-Debug
方案。
仅测试前端
要仅测试前端,你可以使用我们的GitHub Actions构建的模拟器版本。
- 从App Store安装Xcode,确保至少是上面提到的版本。你不需要安装或运行其他任何东西。
- 在
/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
或Xcode的Xcode菜单 > 打开开发者工具中启动模拟器。 - 在文件 > 打开模拟器下打开模拟器。你可以在Xcode的组件首选项中安装旧版iOS。
- 从GitHub Action下载模拟器构建,在"Artifacts"下。
- 将生成的
.app
拖放到模拟器上。 - 在主屏幕上找到应用程序并点击启动。
模拟器的行为可能与你预期的不同:
动作 | 效果 |
---|---|
点击 | 轻触 |
点击并拖动 | 滚动 |
按住⌥ | 添加第二个触摸点 |
按住⇧⌥ | 移动两个触摸点 |
⌘←, ⌘→ | 旋转 |
⌘S | 截图 |
⌘R | 录制视频 |
⌘K | 切换软件键盘 |
现在你可以使用Safari的Web Inspector在这个模拟器构建中调试WebView:
- 确保在Safari的高级首选项中启用了"在菜单栏中显示开发菜单"。
- 在开发菜单下,展开你打开的模拟器的"Simulator"菜单。
- 选择要检查的WebView。将打开一个新窗口。
代码签名
虽然应用程序设置为使用自动配置进行调试构建,但你需要自定义一些选项。这是因为应用程序大量使用需要代码签名的权限,即使是模拟器构建也是如此。
编辑文件Configuration/HomeAssistant.overrides.xcconfig
(默认不存在,并被git忽略)并添加以下内容:
DEVELOPMENT_TEAM = 你的团队ID
BUNDLE_ID_PREFIX = 某个包名前缀
Xcode应该在你的团队ID中生成配置文件,我们的配置将禁用你的团队没有的功能,如重要警报。你可以在Apple的开发者门户上找到你的团队ID;它看起来像ABCDEFG123
。
代码风格
作为拉取请求检查的一部分运行Linter。此外,某些Linter要求可以自动纠正。
# 检查Linter问题,不修复
bundle exec fastlane lint
# 检查Linter问题并修复它们
bundle exec fastlane autocorrect
在Xcode项目中,可自动纠正的Linter不会修改你的源代码,但会提供警告。这个项目使用几个Linter:
- SwiftFormat
- SwiftLint(用于SwiftFormat不自动化的内容)
- Rubocop(主要用于Fastlane)
- YamlLint(主要用于GitHub Actions)
持续集成
我们使用Github Actions和Fastlane进行持续集成,通过单元测试和部署到App Store Connect。Mac Developer ID构建在每次master分支构建时都可以作为artifact使用。
环境变量
Fastlane脚本从环境或.env
文件中读取配置,如团队ID。查看.env.sample
了解可用值。
部署
虽然所有部署都通过Github Actions完成,但你可以通过Fastlane手动完成:
部署到App Store Connect
# 创建构建并上传到App Store
# 每个都将其构建结果保存到build/
bundle exec fastlane mac build
bundle exec fastlane ios build
贡献
许可证
Apache-2.0
致谢
此README.md的格式和部分内容来自SwipeIt项目。