android - 在不同设备上为 React Native 应用程序运行模拟器
问题描述
由于 Xcode 和 Android Studio 消耗很多,我在开发 React Native 应用程序时在我的 Mac 上遇到了存储和处理能力问题。
我的问题是,当我在 Mac 上编码时,有什么方法可以在另一台 PC 上运行模拟器(在我的情况下是 android 模拟器)?
谢谢
解决方案
我尝试了以下解决方案,它也可能对您有用。来源在这个 repo中。
如果您想在一台机器上编写和编译 Android 应用程序并在另一台机器上启动的模拟器上远程调试它,请按照以下说明操作:
准备
首先,您需要在远程机器上安装 SSH 服务器。
Ubuntu
您可以使用 OpenSSH。
sudo apt install openssh-server
视窗
您可以通过此链接在 Windows 上安装 OpenSSH 。
联系
现在您必须使用 SSH 隧道将本地计算机连接到远程服务器。
模拟器在每个实例上侦听两个 TCP 端口:5554 用于 telnet 接口,5555 用于控制与 DDMS 等工具的通信。因此,您可能只需要转发端口 5555 就可以侥幸成功。每个后续仿真器都采用下一个可用的偶数+奇数端口号元组。
请注意,您需要输入在远程服务器上运行的模拟器的 IP 地址,而不是 emulator-ip,还需要输入远程机器用户名和主机名,而不是 myuser 和 remote-server。
Ubuntu
在本地机器上尝试:
ssh -NL 5554:emulator-ip:5554 -L 5555:emulator-ip:5555 myuser@remote-server
视窗
按照此链接说明并在下面添加两个源端口和目标:
源端口:5554 目标:emulator-ip:5554
源端口:5555 目标:emulator-ip:5555 然后连接到远程服务器。
亚行
模拟器在启动时尝试通知本地 adb 服务器;因此,您需要重新启动 adb 才能探测本地 5554+ 端口。
adb 杀死服务器;亚行设备
adb devices 显示了一个新的模拟器——emulator-5554——你可以像在本地机器上运行一样使用它。
跑步
最后运行:
react-native run-android
该应用程序应安装在模拟器上,但您可能会遇到错误:
错误:多个设备/模拟器无法运行 adb reverse:命令失败:path/to/sdk/adb -s emulator-5554 reverse tcp:8081 tcp:8081 您需要在应用程序的开发人员菜单中指定调试主机 IP 和端口-> 开发设置 -> 调试服务器主机和端口,即您的本地机器 IP 地址和 8081 端口。
请注意,安装 APK 后,您无需执行任何这些步骤。您可以只启动 npm 服务器:在本地机器的项目目录中启动 npm start,在远程机器的模拟器上运行应用程序,然后重新加载。如果还有另一个错误:
线程“设备列表监视器”中的异常 java.lang.NullPointerException
尝试:
react-native run-android --deviceId
推荐阅读
- filter - 如何使用过滤器运算符返回 Observable?
- asp.net-core - app.UseStatusCodePagesWithReExecute("/Error/{0}"); 在 ASP.NET Core 2.2 中不工作
- reactjs - 盖茨比不使用反应钩子改变状态
- node.js - 如何修复 Node.js azure blob 以在 azure blob 存储中上传和下载文件
- excel - 代码适用于两种产品,但是当我添加第三个产品代码时会抓取数据,但不会只为第三个产品保存数据。它出什么问题了?
- maps - Openlayers 标记偏移(不在正确的位置)
- html - 响应式设计问题:忽略最大宽度的媒体查询
- bash - 如何跳过 .csv 文件中的重复条目
- r - 如何根据R中的向量重新排序矩阵?
- python - 修复语法错误。当列名是“操作短文本”时,尝试从 pandas DataFrame 中选择多行和多列