跳到主要内容

在设备上运行

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

提示

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

在 Android 设备上运行您的应用

开发操作系统

1. 启用 USB 调试

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

要启用设备的 USB 调试,您首先需要通过转到 **设置** → **关于手机** → **软件信息**,然后连续点击底部的 Build number 行七次来启用“开发者选项”菜单。之后,您可以返回 **设置** → **开发者选项** 来启用“USB 调试”。

2. 通过 USB 连接您的设备

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

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

bash
$ 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 设备。

您需要找到代表您手机的那一行。如果您不确定,请尝试拔下手机并再次运行命令

bash
$ 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”)的那一行从列表中消失了。这就是我们关心的那一行。

Bus 001 Device 003: ID 22b8:2e76 Motorola PCS

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

22b8:2e76

在这种情况下,它是 22b8。这是摩托罗拉的标识符。

您需要将其输入到您的 udev 规则中才能开始运行

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

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

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

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

在右侧栏中看到 device 表示设备已连接。一次只能连接 **一台设备**。

3. 运行您的应用

从项目根目录,在命令提示符中输入以下命令来安装和启动您的应用到设备上

shell
npm run android
注意

如果收到“bridge configuration isn't available”错误,请参阅使用 adb reverse

提示

您也可以使用 React Native CLI 来生成和运行 release 构建(例如,从项目根目录:yarn android --mode release)。

连接到开发服务器

您也可以通过连接到开发机器上运行的开发服务器来快速迭代。根据您是否可以通过 USB 线缆或 Wi-Fi 网络进行连接,有几种实现方式。

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

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

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

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

shell
$ adb devices

您现在可以从开发者菜单启用快速刷新。当您的 JavaScript 代码发生更改时,您的应用将重新加载。

方法 2:通过 Wi-Fi 连接

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

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

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

您现在可以从开发者菜单启用快速刷新。当您的 JavaScript 代码发生更改时,您的应用将重新加载。

构建您的应用以用于生产

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