【问题标题】:How to setup 2 android emulators in android studio to test react native app如何在 android studio 中设置 2 个 android 模拟器来测试反应原生应用程序
【发布时间】:2019-10-06 12:18:04
【问题描述】:

我为 react native 0.59 应用测试添加了另外一个 android 模拟器。我能够启动 2 个模拟器。 adb devices 命令的输出如下:

List of devices attached
emulator-5554   device
emulator-5556   device

当有一个模拟器时,我在 cmd 终端上使用 react-native run-android 和另一台来执行 react-native log-android。后端服务器在同一台 PC 上运行。这是android studio中的虚拟设备:

我想做的是同时启动 2 个代表 2 个用户的应用程序连接到后端进行测试。我试图在 2 个模拟器运行时启动一个应用程序并且应用程序的加载速度非常慢。似乎需要在 2 个不同的端口上启动 2 个应用程序,而我在网上找到的解决方案似乎在这里不起作用。 react-native log-android 在遇到 2 个模拟器时也会抛出错误。

【问题讨论】:

    标签: android-studio react-native android-emulator


    【解决方案1】:

    尝试在 2 个不同的端口上运行 metro-bundler。在您的项目根目录中打开一个终端并使用以下默认命令,

    react-native start

    这会在默认的 8081 端口启动一台服务器。

    在另一个终端运行

    react-native start --port=9090

    这会在端口 9090 启动另一台服务器

    现在在第三个终端运行

    react-native run-android

    这将在两个正在运行的模拟器中以默认端口编译和启动应用程序。

    当应用程序正常启动后,选择一个模拟器并使用Ctrl+M 打开开发菜单。

    点击底部的开发设置按钮。

    单击设备按钮的调试服务器主机和端口。

    输入 localhost:9090 或 ip_address:9090 并点击 OK 按钮

    重新加载应用程序,它将从运行在 9090 端口的 react-native server 获取 js 包

    【讨论】:

    • 按照步骤启动 2 个服务器。但是端口 = 9090 (emulator-5556) 上的服务器出现错误“无法连接到开发服务器”。尝试了几次这些步骤,问题总是在emulator-5556emulator-5554 工作正常并成功加载应用程序。单独emulator-5556 工作正常。
    • 最初emulator-5556会抛出Unable to load script. make sure you're either running a Metro server (run 'react-native start') or that your bundle 'index.android.bundle' is packaged correctly for release.的错误,点击重新加载后会出现Cound not connect to development server的错误。
    • 代替localhost:9090 尝试添加您的IP,例如[your.ip]:9090
    【解决方案2】:

    log-android from react-native CLI 只是使用 adb logcat 来显示 Android 日志。

    adb 有一个-s 参数,可让您指定模拟器序列号。首先,您需要使用adb devices 列出当前打开的设备。你会得到一个列表,例如:

    List of devices attached
    emulator-5554   device
    

    现在你可以指定具体的设备了:

    adb -s emulator-5554 logcat *:S ReactNative:V ReactNativeJS:V
    

    您可以为所有想要查看日志的正在运行的设备多次运行它。

    【讨论】:

    • 如何让2个模拟器在android studio下同时运行?我试图指定 2 个端口,但不知何故它不起作用。
    • 如何获取console.log输出? logcat 输出系统消息但没有 console.log 输出。
    • logcat 输出所有内容,但您可能需要对其进行微调。 <tag>[:priority] 可用于此目的。 RN 的log-android 使用:*:S ReactNative:V ReactNativeJS:V。第一个 *:S 告诉它禁止所有标签上的所有输出,另外两个告诉它只显示与 RN 相关的日志。您也可以这样做:adb logcat *:S ReactNative:V ReactNativeJS:V。您还可以通过管道将grep 过滤到日志以包含特定单词:adb logcat | grep YourFilter
    • 关于正在运行的设备:您也可以从命令行执行此操作,也可以使用 avd:~/Library/Android/sdk/tools/emulator -avd "DEVICE_NAME"。只需在您的模拟器名称上加上下划线而不是空格
    • 带过滤器的logcat输出console.log。
    【解决方案3】:

    @NishantNiar 解决方案是正确的,但我想在这里改变一些东西 首先我运行我的两个不同的模拟器。 然后我运行yarn start --port=9090 而不是npm start --port=9090,因为它给了我一个错误。 然后在另一个终端中运行npm run android,然后第一个模拟器自动在默认端口8081 port 上启动,另一个模拟器在9090 port 上启动。 希望这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多