返回博客首页
← 所有帖子

从 Windows 或 Linux 远程构建 NativeScript 应用

2020 年 3 月 4 日 — 作者:Dimitar Tachev

您是否曾经想过如何

  • 在 Windows 或 Linux 上为 iOS 构建 NativeScript 应用?
  • 为您的 NativeScript 应用设置稳定的 CI?
  • 避免 iOS 代码签名管理?

如果是这样,NativeScript 远程构建插件 正适合您! 🚀

它是如何工作的?

该插件使用多个 NativeScript CLI 钩子 并通过以下方式修改其行为:

  • 跳过本地 原生工具[1] 要求。
  • 跳过 CLI prepare 阶段的原生资源处理 - 它们将在远程处理。
  • 用选定远程的构建方法替换 CLI 本地构建

在撰写本文时,该插件支持 Circle CI 远程构建。

CLI 的其余逻辑照常工作,例如,tns debug 命令准备 JavaScript 文件,上传到连接的设备,显示日志,打开调试套接字,显示用于调试的 URL 等等。

以下视频演示了如何从 Windows 机器上在 iOS 上运行 NativeScript 应用


为什么我们选择 Circle CI?

实现远程需要一些方法 - 主要处理环境变量和下载构建结果。Circle CI 针对这些操作提供了简单的 API,并为开源项目提供了大量免费的 Linux 和 macOS 机器。

但是,插件抽象不依赖于 Circle CI,实现新的远程应该只需要几天。例如,我们已经有了使用另一个云解决方案的初始 POC 远程 - Travis CI 和与同一网络中的 macOS 机器建立的本地 ssh 连接。欢迎在 插件 GitHub 存储库 中打开功能请求甚至拉取请求以实现新的远程。

它与 NativeScript CLI 云扩展有什么不同?

让我们比较一下作为 NativeScript 云扩展 的一部分的云构建和这个 NativeScript 远程构建插件,因为它们看起来很相似。

主要区别在于 NativeScript 远程构建插件在没有任何 原生工具[1] 要求的环境中启用现有的 NativeScript CLI 命令,而不是提供额外的命令(例如 tns cloud 命令)。远程构建插件还旨在在 CI 环境中保持稳定可靠。

以下是 NativeScript 云扩展和 NativeScript 远程构建插件的比较表

云扩展 远程构建插件
在没有 原生工具[1] 的情况下构建、运行和发布
在没有 原生工具[1] 的情况下调试     [2]
在没有 原生工具[1] 的情况下运行单元测试
自动 iOS 签名管理[3]
完整的 CI 支持[4]
完整的环境信息[5]
完整的环境控制[6]
仅默认 NativeScript CLI 命令
免费     [7]     [8]

比较基于 NativeScript 远程构建插件的 CircleCI 远程

原生工具[1]
任何原生环境要求,如 Java、Android SDK、Android Studio、macOS、Xcode、Cocoapods、Docker 等等。
云扩展调试支持[2]
它只能通过 NativeScript Sidekick 使用。
iOS 签名管理[3]
如果最终用户负责传递 --provision 标志并根据当前构建配置选择合适的证书。在远程构建插件中,这是由 Fastlane Match 服务 自动处理的。
完整的 CI 支持[4]
如果用户可以在拉取请求或提交上构建和运行测试。换句话说,如果支持并行构建同一应用程序的多个版本。
完整的环境信息[5]
如果用户可以使用完整环境信息(例如,操作系统和 原生工具[1] 的版本)。
完整的环境控制[6]
如果用户可以控制环境设置(例如,更改操作系统和 原生工具[1] 的版本)。
云扩展价格[7]
NativeScript 云扩展提供了有限数量的免费构建。
远程构建插件价格[8]
NativeScript 远程构建插件的 Circle CI 提供商仅取决于 Circle CI 定价。它为每个人提供了有限数量的免费 Android 构建,以及为开源项目提供了有限数量的 免费 iOS 构建

如何开始?

步骤 1:更新到 NativeScript 6.4 或更高版本

在插件开发期间,我们不得不公开更多 NativeScript CLI 钩子并在我们的 iOS 运行时中编辑 iOS 原生项目模板。NativeScript CLI 和 iOS 运行时 6.4 中提供了必要的更改。

步骤 2:按照插件安装和设置指南操作

最新的安装信息、设置指南和可用的远程都在 插件的 README 中提供。

步骤 3:我们喜欢您的反馈

留下评论或打开一个问题,提供您的反馈。您的评论和建议对我们非常重要!