跳到主要内容

在设备上运行

在发布应用供用户使用之前,始终建议先在实际设备上测试应用。本文将指导你完成在设备上运行 React Native 应用以及准备生产环境所需的步骤。

提示

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

在 Android 设备上运行应用​

开发操作系统​

1. 启用 USB 调试​

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

要在设备上启用 USB 调试,首先需要进入 设置 → 关于手机 → 软件信息,然后连续点击底部的 Build number 行七次,以启用“开发者选项”菜单。接着返回 设置 → 开发者选项,启用“USB 调试”。

2. 通过 USB 连接设备​

现在,让我们设置一台 Android 设备来运行 React Native 项目。请使用 USB 将设备连接到开发计算机。

接下来,使用 lsusb 检查制造商代码(在 macOS 上,你必须先安装 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”)的行从列表中消失了。这就是我们需要关注的行。

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

从上面的行中,获取设备 ID 的前四位:

22b8:2e76

在本例中,它是 22b8。这是 Motorola 的标识符。

你需要将其输入 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 Debug Bridge。

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

如果右列显示 device,则表示设备已连接。你必须确保同时只有一台设备连接。

3. 运行应用​

在项目根目录下,在命令提示符中输入以下命令,以便在设备上安装并启动应用:

npm run android
备注

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

提示

你也可以使用 React Native CLI 生成并运行 release 构建版本(例如,在项目根目录下运行:yarn android --mode release)。

连接开发服务器

你还可以通过连接到开发计算机上运行的开发服务器,在设备上快速迭代开发。根据你是否可以使用 USB 数据线或 Wi-Fi 网络,有多种实现方式。

方法 1:使用 adb reverse(推荐)​

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

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

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

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

$ adb devices

现在,你可以从 Dev Menu 中启用 Fast Refresh。每当 JavaScript 代码发生更改时,应用都会重新加载。

方法 2:通过 Wi-Fi 连接​

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

打开终端并输入 /sbin/ifconfig,查找计算机的 IP 地址。

  1. 确保笔记本电脑和手机连接到同一个 Wi-Fi 网络。
  2. 在设备上打开 React Native 应用。
  3. 你将看到一个带有错误的红屏。这是正常现象。接下来的步骤会解决该问题。
  4. 打开应用内的 Dev Menu。
  5. 前往 Dev Settings → Debug server host & port for device。
  6. 输入计算机的 IP 地址和本地开发服务器的端口(例如 10.0.1.1:8081)。
  7. 返回 Dev Menu,选择 Reload JS。

现在,你可以从 Dev Menu 中启用 Fast Refresh。每当 JavaScript 代码发生更改时,应用都会重新加载。

为生产环境构建应用​

你已经使用 React Native 构建了一个出色的应用,现在迫不及待地想将它发布到 Play Store。该过程与其他原生 Android 应用相同,但还需要考虑一些额外事项。请参阅生成签名 APK指南了解更多信息。