微软将停用 App Center:React Native 开发人员应该使用以下工具

                               再见,应用中心!你好,EAS + Sentry + GitHub Actions!

React Native 开发人员大遗憾:微软宣布将于 2025 年 3 月 31 日关闭Visual Studio App Center

多年来, Infinite Red一直将 App Center 作为许多 React Native 咨询客户的 CI/CD 流程和开发工作流程的关键部分。它有很多有用的功能:

  • 构建:基于云的 iOS 和 Android 构建服务
  • 测试:在真实的 iOS 和 Android 设备上进行设备测试
  • 分发:部署到测试人员和应用商店
  • CodePush:直接将更新部署到用户的设备
  • 分析和诊断:崩溃报告和使用情况分析

它们集中在一个地方确实很方便,但是现在微软停止了这一计划,我们需要寻找一些替代方案。

微软为何关闭App Center?

我不认为微软宣布放弃对 React Native 的大量投资。毕竟,微软领导了React Native 发布团队,维护了React Native Windows / macOSReact Native Test Apprnx-kit等。他们还在 Office 应用套件、Skype 甚至 Windows 等中使用了 React Native!他们在 React Native 上的投资越来越多。

相反,我有一个理论。我对此没有任何内幕信息,但我可以做数学计算。App Center 的许多服务都是免费的,这不是一个可持续的商业模式,即使这使得它在使用 React Native 的公司中很受欢迎。在我看来,除非 App Center 成为收入来源,否则它最终将不可避免地关闭。

这确实令人沮丧,但没关系——我们还有一些很好的替代方案!

让我们根据我们丰富的 React Native 经验,谈谈我们对每个方面的建议。我们对最佳前进道路有一些自己的看法。

TL;DR: 使用 EAS (世博会报名服务) 用于构建管道和无线 (OTA) 更新,GitHubActions 或 CircleCI 用于自动化测试,以及哨兵用于错误跟踪和监控。

什么是 EAS?

EAS是Expo团队构建的一套云服务,旨在简化 Expo 和裸 React Native 项目的构建、部署和更新。(您无需使用 Expo 即可使用 EAS!)

一些主要特点:

  • EAS Build:为 iOS 和 Android 托管云构建。轻松构建二进制文件,无需复杂的本机工具。
  • EAS 提交:自动将您的应用提交到 Apple App Store 和 Google Play Store。
  • EAS 更新:将更新直接部署到您的应用程序,类似于 CodePush。

EAS 的魅力在于所有组件的协同工作。您可以设置从代码到生产的顺畅工作流程,并能够灵活地根据自己的需求进行自定义。

EAS 也 100% 专注于 React Native,而 App Center 则更像是一种通用的移动应用服务。Expo 的团队是 React Native 生态系统的专家,并且已经从事多年。这意味着他们非常关心 React Native 应用,并且他们的服务最适合与 React Native 配合使用。

什么是 Sentry?

Sentry是一款流行的错误和性能监控平台。它可以帮助开发人员跨多个平台和语言识别、分类和修复代码中的问题。

Sentry 可以为您提供非常重要的见解,让您的 React Native 应用保持稳定和高效。它是 EAS 的绝佳补充,可实现强大的 React Native 工作流程。我们使用 Sentry 多年,它是同类产品中最好的之一。

对于 React Native 应用程序,Sentry 提供了一些非常好的功能:

  • 错误监控:在一个地方捕获并汇总来自 JavaScript 代码、本机代码和第三方库的错误
  • 性能监控和分析:通过在各种环境中对程序的调用堆栈进行采样来跟踪软件的性能。获取有关代码的函数级信息,并使您能够微调程序的性能。
  • 发布健康:比较不同版本之间的崩溃率、故障率和性能,以快速识别有问题的版本
  • 设备数据:查看设备详细信息(如型号、操作系统、方向等),以更快地重现错误
  • 面包屑:通过自动收集的事件日志了解用户在发生错误之前做了什么
  • 会话重放:目前,React for web 具有会话重放功能,但他们似乎很快就会推出 React Native 重放功能

不仅如此,Sentry 还非常关心他们的React Native体验。他们的文档很好,也很相关。

我们将在下面的错误跟踪和指标部分详细讨论 Sentry。

好的,让我们开始迁移!

从 App Center Build 迁移到 EAS Build

EAS Build 是 App Center Build 的自然替代品,尤其是对于 React Native 开发人员而言。它为 iOS 和 Android 提供托管云构建,无需复杂的本机工具设置。

以下是迁移的详细指南:

  1. 使用以下命令安装最新的 EAS CLInpm i -g eas-cli
  2. 在项目目录中运行eas init以设置 EAS 配置
  3. 使用以下方式登录eas login
  4. eas.json通过运行来设置你的构建配置文件eas build:configure
  5. 运行eas build以开始您的第一次构建

欲了解更多详细信息,请参阅EAS Build 文档

从 App Center Test 迁移到 GitHub Actions / CircleCI

如果您尚未设置其他测试 CI 服务,我们建议您使用 GitHub ActionsCircleCI。我们的团队已经使用它们多年了,事实上在初步评估之后从未真正使用过 App Center Test。

GitHub 操作

一般来说,如果您使用 GitHub,GitHub Actions 是您的最佳选择。它会自动配置您的环境变量,并且设置起来稍微省力一些。

使用 GitHub Actions,您可以相对便宜地运行 Android 版本。以下是用于设置该配置的示例 Android React Native 配置(来源)。

<span style="background-color:#f9f9f9"><span style="color:#242424"><span style="color:#836c28">名称:</span> <span style="color:#c41a16">GitHub</span> <span style="color:#c41a16">操作</span>

<span style="color:#836c28">:</span> [ <span style="color:#c41a16">push</span>,<span style="color:#c41a16">pull_request</span> ]

<span style="color:#836c28">作业:</span>
  <span style="color:#836c28">构建:</span>
    <span style="color:#836c28">运行于:</span> <span style="color:#c41a16">ubuntu-latest</span>
    <span style="color:#836c28">容器:</span> <span style="color:#c41a16">reactnativecommunity/react-native-android</span>
    <span style="color:#836c28">步骤:</span>
    <span style="color:#1c00cf">-</span> <span style="color:#836c28">用途:</span> <span style="color:#c41a16">actions/checkout@v2 </span>
    <span style="color:#1c00cf">-</span> <span style="color:#836c28">名称:</span> <span style="color:#c41a16">Envinfo</span>
      <span style="color:#836c28">运行:</span> <span style="color:#c41a16">npx </span> <span style="color:#c41a16">envinfo </span>
    <span style="color:#1c00cf">-</span> <span style="color:#836c28">名称:</span> <span style="color:#c41a16">构建</span> <span style="color:#c41a16">应用程序</span>
      <span style="color:#836c28">运行:</span> <span style="color:#c41a16">yarn </span> <span style="color:#c41a16">install </span> <span style="color:#c41a16">&& </span> <span style="color:#c41a16">cd </span> <span style="color:#c41a16">android </span> <span style="color:#c41a16">&& </span> <span style="color:#c41a16">chmod </span> <span style="color:#c41a16">+x </span> <span style="color:#c41a16">gradlew </span> <span style="color:#c41a16">&& </span> <span style="color:#c41a16">./gradlew </span> <span style="color:#c41a16">assembleRelease</span></span></span>

如果您想要构建 iOS,则需要 macOS 映像,每次构建的成本大约是 macOS 映像的 8-10 倍。我们正在为此制定Ignite Cookbook配方,一旦有配方,我会更新文章(如果我忘记了,请通过电子邮件提醒我!)

圆环

如果您不使用 GitHub 或因为其他原因不想使用 GitHub Actions,我们发现CircleCI是一个很好的替代方案。

在我们的Ignite Cookbook中,我们有一个在 CircleCI 上应用 React Native 的秘诀:

Sample YAML for CircleCi for Ignite | Ignite Cookbook for React Native

CircleCI 与 GitHub Actions 一样,以相对便宜的成本提供 Android 构建,而通过 macOS 机器构建 iOS 的成本约为 Linux 机器的 8-10 倍。

EAS 构建测试

如果您有兴趣尝试的话,EAS Build 还通过Detox提供了非常早期的端到端测试服务。

从 App Center Distribution 迁移至 EAS Submit

EAS Submit 可让您轻松将应用版本发送给测试人员和应用商店。它是 App Center 分发服务的绝佳替代方案。

设置 EAS Build 后,您可以使用eas submit它将您的构建上传到 Apple App Store 或 Google Play Store。EAS 将负责将您的构建发送给相应的审阅者。

对于 iOS 上的 TestFlight 分发,您还可以使用eas submit --platform ios --non-interactive它上传您的构建并自动将其发送给您的 TestFlight 测试人员。

请参阅EAS 提交文档以了解更多信息。

从 App Center CodePush 迁移到 EAS 更新

App Center 最常见的用途之一是使用 CodePush 进行 OTA(“无线”)更新。以下是有关如何从 CodePush 转移到 EAS 更新的高级指南:

  1. react-native-code-push通过删除该包以及 JS 和本机代码中对它的任何引用来卸载 CodePush SDK 。
  2. 确保您的项目有app.json一个带有expo对象的正确文件。
  3. 通过运行来安装该exponpx install-expo-modules@latest
  4. 使用 安装最新的 EAS CLI npm i -g eas-cli
  5. 使用 登录您的 Expo 帐户eas login
  6. 按照从步骤 4 开始的 EAS 更新指南,为 EAS 更新配置您的项目,构建和部署更新。
  7. 测试您的应用以验证更新是否有效。安装当前的应用商店版本,使用 EAS 部署新更新,然后启动应用以在几次重启后查看更新。
  8. 重建您的应用程序并将新的支持更新的版本提交到应用商店。

这只是一个概述 — 请务必遵循详细的 EAS 更新迁移指南,了解具体步骤。Expo 最近也发布了一篇关于此内容的博客文章。您应该查看EAS 更新文档,它可以帮助您配置应用检查更新的时间。

从 App Center Analytics & Diagnostics 迁移到 Sentry

从 App Center 的分析和崩溃报告切换到 Sentry 相当简单:

  1. 注册Sentry 账户并创建新项目
  2. 使用以下命令在您的应用中安装Sentry SDK(1500 颗星)npm i @sentry/react-native
  3. 在应用程序的入口文件中初始化 Sentry(或 Ignite 的内置位置
  4. 部署您的应用程序并开始在 Sentry 仪表板中查看错误报告和分析

Sentry 的 React Native 文档有更详细的说明,如果你更喜欢Expo 的 Sentry 文档,它们也很好。

@sentry/react-nativeSDK 是 Expo(Expo CLI)和 Sentry 合作开发的,这就是它如此优秀的原因!

您可能还需要考虑在 Sentry 中设置发布健康跟踪,以监控无崩溃的用户和会话。这类似于 App Center 提供的分析数据。

自托管 EAS 和 Sentry

EASSentry有相当慷慨的免费套餐,但如果您需要超出他们提供的服务且成本过高,您可以选择自己处理。

值得注意的是,两者都有付费等级,这意味着......它们可能不会像 App Center 那样关闭。🥴

对于 EAS,您可以进行本地构建,而不必依赖其服务器。顾名思义,您可以在您的机器上本地运行它们,也可以在您自己的基础架构上运行它们。以下是相关文档

<span style="background-color:#f9f9f9"><span style="color:#242424">eas build--平台android--本地</span></span>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先行者-阿佰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值