调试
使用模拟器
在实际设备上测试应用程序的性能和感觉是最好的,但在调试时, 模拟器可能更容易使用。
Apple将其模拟器称为“Simulator”,Google将其称为“Emulator”。
iOS版
确保您拥有最新的Xcode(例如来自Mac App Store)。这包括iOS模拟器,以及其他几个工具。
Android
按照我们的Android Studio模拟器指南设置Android工具并创建用于测试的虚拟设备。
开发者菜单
通过此菜单,您可以访问几个对调试有用的功能。它也称为调试菜单。调用它取决于运行应用程序的设备。
在iOS设备上
摇动设备一点点。
在iOS模拟器上
Ctrl-Cmd-Z在模拟器中点击Mac以模拟摇动手势,或按Cmd+D。
在Android虚拟设备上
点击Cmd+M或adb shell input keyevent 82在终端窗口中运行。
调试Javascript
您可以使用Chrome调试工具调试Expo应用程序。它不是在手机上运行应用程序的JavaScript,而是在Chrome中的网络工程师中运行它。然后,您可以像调试Web应用程序时那样设置断点,检查变量,执行代码等。
为确保获得最佳调试体验,请先将Expo Dev Tools中的主机类型更改为LAN或localhost。如果您Tunnel在启用调试时使用,则可能会遇到如此多的延迟,导致您的应用无法使用。在这里,也确保Development Mode检查。
如果您正在使用LAN,请确保您的设备与开发机器位于同一个wifi网络上。这可能不适用于某些公共网络。localhost除非您在模拟器中,否则它不适用于iOS,并且只有在您的设备通过USB连接到您的计算机时才能在Android上运行。
在您的设备上打开应用程序,显示开发人员菜单,然后点按Debug JS Remotely。这应该打开带有网址的Chrome标签http://localhost:19001/debugger-ui。从那里,您可以设置断点并通过JavaScript控制台进行交互。完成后摇动设备并停止Chrome调试。
console.log使用Chrome调试时,默认情况下,语句的行号不起作用。要获得正确的行号,请打开Chrome开发者工具设置,转到“Blackboxing”标签,确保选中“Blackbox content scripts”,并添加expo/src/Logs.js为选中“Blackboxing”的模式。
解决localhost调试问题
当您启动与Expo CLI一个项目,当您按下Run on Android device/emulator Expo开发工具(或终端),Expo CLI会自动告诉你的设备来转发localhost:19000,并19001给你的开发机器,只要你的设备处于连接模拟器运行。如果您正在使用localhost它进行调试但它无法正常工作,请关闭应用程序并使用再次打开它Open on Android。或者,如果安装了Android开发人员工具,则可以使用以下命令手动转发端口:adb reverse tcp:19000 tcp:19000-adb reverse tcp:19001 tcp:19001
源映射和异步函数
源映射和异步函数不是100%可靠。在每种情况下,React Native都无法很好地使用Chrome的源映射,因此如果您想确保在正确的位置进行转换,则应debugger直接使用代码中的调用。
调试HTTP
要调试应用程序的HTTP请求,您应该使用代理。以下选项都有效:
Charles Proxy(50美元,我们的首选工具)
fiddler
在Android上,代理设置应用程序有助于在调试和非调试模式之间切换。不幸的是,它还不适用于Android M.
未来的工作是在Chrome DevTools中显示网络请求。
热重新加载和实时重新加载
热模块重新加载是一种快速重新加载更改而不会丢失屏幕或导航堆栈中的状态的方法。要启用,请调用开发人员菜单并点击“启用热重新加载”项。Live Reload将重新加载整个JS上下文,而Hot Module Reloading将使您的调试周期更快。但是,请确保您没有打开这两个选项,因为这是不受支持的行为。
其他调试技巧
Dotan Nahum在他的“Debugging React Native Applications”Medium中概述了其他有用的工具,例如监视桥接消息和JSEventLoopWatchdog。
网友评论