跳至主要内容

在设备上运行

在将您的应用发布给用户之前,最好在实际设备上进行测试。本文档将指导您完成在设备上运行 React Native 应用并使其准备好投入生产的必要步骤。

信息

如果您使用 create-expo-app 设置项目,则可以通过扫描运行 npm start 时显示的 QR 码,在 Expo Go 中在设备上运行您的应用。有关更多信息,请参阅 Expo 指南,了解如何在设备上运行您的项目

在 Android 设备上运行您的应用

开发操作系统

1. 通过 USB 启用调试

默认情况下,大多数 Android 设备只能安装和运行从 Google Play 下载的应用。您需要在设备上启用 USB 调试,以便在开发过程中安装您的应用。

要在设备上启用 USB 调试,您首先需要启用“开发者选项”菜单,方法是转到**设置** → **关于手机** → **软件信息**,然后点击底部的 版本号 行七次。然后,您可以返回到**设置** → **开发者选项** 以启用“USB 调试”。

2. 通过 USB 连接您的设备

现在让我们设置一个 Android 设备来运行我们的 React Native 项目。继续通过 USB 将您的设备连接到开发机器。

接下来,使用 lsusb 检查制造商代码(在 Mac 上,您必须先安装 lsusb)。lsusb 应输出类似以下内容

$ lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 22b8:2e76 Motorola PCS
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

这些行表示当前连接到您机器的 USB 设备。

您需要的是表示您手机的那一行。如果您不确定,请尝试拔掉手机并再次运行命令

$ lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

您将看到,在移除手机后,包含手机型号(在本例中为“Motorola PCS”)的行从列表中消失了。这就是我们关心的行。

总线 001 设备 003:ID 22b8:2e76 Motorola PCS

从上面的行中,您需要从设备 ID 中获取前四位数字

22b8:2e76

在本例中,它是 22b8。这是摩托罗拉的标识符。

您需要将其输入到您的 udev 规则中才能启动并运行

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android-usb.rules

确保您将 22b8 替换为您在上述命令中获得的标识符。

现在,通过运行 adb devices 检查您的设备是否已正确连接到 ADB(Android 调试桥)。

$ adb devices
List of devices attached
emulator-5554 offline # Google emulator
14ed2fcc device # Physical device

在右侧列中看到 device 表示设备已连接。您一次只能连接一个设备

3. 运行您的应用

从项目的根目录开始,在命令提示符中键入以下内容以在设备上安装并启动您的应用

npm run android

如果出现“桥接配置不可用”错误,请参阅使用 adb reverse

提示:您还可以使用 React Native CLI 生成和运行 release 版本(例如,从项目的根目录:yarn android --mode release)。

连接到开发服务器

您还可以通过连接到开发机器上运行的开发服务器,快速迭代设备。有几种方法可以实现此目的,具体取决于您是否有权访问 USB 线缆或 Wi-Fi 网络。

如果您的设备运行 Android 5.0(棒棒糖)或更高版本、已启用 USB 调试并通过 USB 连接到开发机器,则可以使用此方法。

在命令提示符中运行以下命令

$ adb -s <device name> reverse tcp:8081 tcp:8081

要查找设备名称,请运行以下 adb 命令

$ adb devices

您现在可以从Dev 菜单启用快速刷新。只要您的 JavaScript 代码发生更改,您的应用就会重新加载。

方法 2:通过 Wi-Fi 连接

您还可以通过 Wi-Fi 连接到开发服务器。您需要首先使用 USB 线缆将应用安装到设备上,但完成此操作后,您可以按照以下说明进行无线调试。在继续操作之前,您需要开发机器的当前 IP 地址。

打开终端并键入 /sbin/ifconfig 以查找您机器的 IP 地址。

  1. 确保您的笔记本电脑和手机位于**同一** Wi-Fi 网络上。
  2. 在您的设备上打开 React Native 应用。
  3. 您会看到带有错误的红色屏幕。这没关系。以下步骤将解决此问题。
  4. 打开应用内Dev 菜单
  5. 转到**Dev 设置** → **设备的调试服务器主机和端口**。
  6. 输入您机器的 IP 地址和本地开发服务器的端口(例如 10.0.1.1:8081)。
  7. 返回**Dev 菜单**并选择**重新加载 JS**。

您现在可以从Dev 菜单启用快速刷新。只要您的 JavaScript 代码发生更改,您的应用就会重新加载。

构建您的应用以供生产

您已使用 React Native 构建了一个很棒的应用,现在您迫不及待地想将其发布到 Play 商店。此过程与任何其他原生 Android 应用相同,但需要考虑一些其他因素。请遵循生成签名 APK的指南以了解更多信息。