• 开启手机USB调试(在设置->更多设置->开发者选项->USB调试),同时打开USB安装(一定要打开USB调试开关,...react-native run-android 在此过程中会弹出安装提示,要确认通过安...
    1. 开启手机USB调试(在设置->更多设置->开发者选项->USB调试),同时打开USB安装(一定要打开USB调试开关,否则会报错)
    2. 检查真机跟电脑是否连接成功

    命令为:

    adb devices
    

    结果为:

    14ed2fcc device
    

    则真机跟电脑连接成功

    1. 在项目目录下,启动运用
    react-native run-android
    

    在此过程中会弹出安装提示,要确认通过安装才可进行安装

    1. 通过真机上的menu按键或者摇晃手机会出现一个菜单,然后选择"Debug JS Remotely"选项,即可以开始在 Chrome 中调试 JavaScript 代码。点击这个选项的同时会自动打开调试页面 http://localhost:8081/debugger-ui.

    2. 在vscode上运行:在vscode中安装React Native Tools插件,然后按F1,输入react选择在Android设备上运行即可,也可以使用命令react-native run-android

    3. 在vscode上调试:按F5进入调试,在设置文件launch.json中配置:

    {
         "version": "0.2.0",
      "configurations": [
          {
          "name": "Debug Android",
          "program": "${workspaceRoot}/.vscode/launchReactNative.js",
          "type": "reactnative",
          "request": "launch",
          "platform": "android",
          "sourceMaps": true,
          "outDir": "${workspaceRoot}/.vscode/.react"
        },
        {
          "type": "chrome",
          "request": "launch",
          "name": "Launch Chrome against localhost",
          "url": "http://localhost:8081/debugger-ui",
          "webRoot": "${workspaceFolder}"
        }
      ]
    }
    

    然后按下debug就可以进行断点调试了

    展开全文
  • 在做React Native开发时,少不了的需要对React Native程序进行调试调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。本文将向大家分享React Native程序调试的一些技巧和心得。 ...

    在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。本文将向大家分享React Native程序调试的一些技巧和心得。

    Developer Menu

    Developer Menu是React Native给开发者定制的一个开发者菜单,来帮助开发者调试React Native应用。

    提示:生产环境release (production) 下Developer Menu是不可用的。

    如何开启Developer Menu

    在模拟器上开启Developer Menu

    Android模拟器:

    可以通过Command⌘ + M 快捷键来快速打开Developer Menu。也可以通过模拟器上的菜单键来打开。

    心得:高版本的模拟器通常没有菜单键的,不过Nexus S上是有菜单键的,如果想使用菜单键,可以创建一个Nexus S的模拟器。

    iOS模拟器:

    可以通过Command⌘ + D快捷键来快速打开Developer Menu。

    在真机上开启Developer Menu:

    在真机上你可以通过摇动手机来开启Developer Menu。

    预览图

    Developer Menu

    Reloading JavaScript

    在只是修改了js代码的情况下,如果要预览修改结果,你不需要重新编译你的应用。在这种情况下,你只需要告诉React Native重新加载js即可。

    提示:如果你修改了native 代码或修改了Images.xcassets、res/drawable中的文件,重新加载js是不行的,这时你需要重新编译你的项目了。

    Reload js

    Reload js即将你项目中js代码部分重新生成bundle,然后传输给模拟器或手机。
    在Developer Menu中有Reload选项,单击Reload让React Native重新加载js。对于iOS模拟器你也可以通过Command⌘ + R 快捷键来加载js,对于Android模拟器可以通过双击r键来加载js。

    提示:如果Command⌘ + R 无法使你的iOS模拟器加载js,则可以通过选中Hardware menu中Keyboard选项下的 “Connect Hardware Keyboard” 。

    小技巧:Automatic reloading

    Enable Live Reload

    Enable Live Reload

    React Native旨在为开发者带来一个更好的开发体验。如果你觉得上文的加载js代码方式太low了或者不够方便,那么有没有一种更简便加载js代码的方式呢?
    答案是肯定的。 
    在 Developer Menu中你会看到”Enable Live Reload” 选项,该选项提供了React Native动态加载的功能。当你的js代码发生变化后,React Native会自动生成bundle然后传输到模拟器或手机上,是不是觉得很方便。

    Hot Reloading

    Hot Reloading

    另外,Developer Menu中还有一项需要特别介绍的,就是”Hot Reloading”热加载,如果说Enable Live Reload解放了你的双手的话,那么Hot Reloading不但解放了你的双手而且还解放了你的时间。 当你每次保存代码时Hot Reloading功能便会生成此次修改代码的增量包,然后传输到手机或模拟器上以实现热加载。相比 Enable Live Reload需要每次都返回到启动页面,Enable Live Reload则会在保持你的程序状态的情况下,就可以将最新的代码部署到设备上,听起来是不是很疯狂呢。

    提示:当你做布局的时候启动Enable Live Reload功能你就可以实时的预览布局效果了,这可以和用AndroidStudio或AutoLayout做布局的实时预览相媲美。

    Errors and Warnings

    在development模式下,js部分的Errors 和 Warnings会直接打印在手机或模拟器屏幕上,以红屏和黄屏展示。

    Errors

    React Native程序运行时出现的Errors会被直接显示在屏幕上,以红色的背景显示,并会打印出错误信息。 你也可以通过 console.error()来手动触发Errors。

    Errors

    Warnings

    React Native程序运行时出现的Warnings也会被直接显示在屏幕上,以黄色的背景显示,并会打印出警告信息。 你也可以通过 console.warn()来手动触发Warnings。 你也可以通过console.disableYellowBox = true来手动禁用Warnings的显示,或者通过console.ignoredYellowBox = ['Warning: ...'];来忽略相应的Warning。

    Warnings

    提示:在生产环境release (production)下Errors和Warnings功能是不可用的。

    Chrome Developer Tools

    Chrome 开发工具

    谷歌 Chrome 开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具。开发者工具允许网页开发者深入浏览器和网页应用程序的内部。该工具可以有效地追踪布局问题,设置 JavaScript 断点并可深入理解代码的最优化策略。 Chrome 开发工具一共提供了8大组工具:

    • Element 面板: 用于查看和编辑当前页面中的 HTML 和 CSS 元素。
    • Network 面板:用于查看 HTTP 请求的详细信息,如请求头、响应头及返回内容等。
    • Source 面板:用于查看和调试当前页面所加载的脚本的源文件。
    • TimeLine 面板: 用于查看脚本的执行时间、页面元素渲染时间等信息。
    • Profiles 面板:用于查看 CPU 执行时间与内存占用等信息。
    • Resource 面板:用于查看当前页面所请求的资源文件,如 HTML,CSS 样式文件等。
    • Audits 面板:用于优化前端页面,加速网页加载速度等。
    • Console 面板:用于显示脚本中所输出的调试信息,或运行测试脚本等。

    提示:对于调试React Native应用来说,Sources和Console是使用频率很高的两个工具。

    你可以像调试JavaScript代码一样来调试你的React Native程序。

    如何通过 Chrome调试React Native程序

    你可以通过以下步骤来调试你的React Native程序:

    第一步:启动远程调试

    在Developer Menu下单击”Debug JS Remotely” 启动JS远程调试功能。此时Chrome会被打开,同时会创建一个“http://localhost:8081/debugger-ui.” Tab页。
    http-//localhost-8081/debugger-ui

    第二步:打开Chrome开发者工具

    在该“http://localhost:8081/debugger-ui.”Tab页下打开开发者工具。打开Chrome菜单->选择更多工具->选择开发者工具。你也可以通过快捷键(Command⌘ + Option⌥ + I on Mac, Ctrl + Shift + I on Windows)打开开发者工具。

    打开开发者工具

    打开Chrome开发着工具之后你会看到如下界面:
    打开Chrome开发着工具

    真机调试

    在iOS上

    打开”RCTWebSocketExecutor.m “文件,将“localhost”改为你的电脑的ip,然后在Developer Menu下单击”Debug JS Remotely” 启动JS远程调试功能。

    在Android上

    方式一: 
    在Android5.0以上设备上,将手机通过usb连接到你的电脑,然后通过adb命令行工具运行如下命令来设置端口转发。 
    adb reverse tcp:8081 tcp:8081

    方式二:
    你也可以通过在“Developer Menu”下的“Dev Settings”中设置你的电脑ip来进行调试。

    心得:在使用真机调试时,你需要确保你的手机和电脑处在同一个网段内,即它们实在同一个路由器下。

    小技巧:


    巧用Sources面板

    Sources 面板提供了调试 JavaScript 代码的功能。它提供了图形化的V8 调试器。 Sources面板

    Sources 面板可以让你看到你所要检查的页面的所有脚本代码,并在面板选择栏下方提供了一组标准控件,提供了暂停,恢复,步进等功能。在窗口的最下方的按钮可以在遇到异常(exception)时强制暂停。源码显示在单独的标签页,通过点击 打开文件导航面板,导航栏中会显示所有已打开的脚本文件。

    心得:Chrome开发着工具中的Sources面板几乎是我最常用的功能面板。通常只要是开发遇到了js报错或者其他代码问题,在审视一遍自己的代码而一无所获之后,我首先就会打开Sources进行js断点调试。

    执行控工具

    从上图可以看到“执行控工具”按钮在侧板顶部,让你可以按步执行代码,当你进行调试的时候这几个按钮非常有用:

    • 继续(Continue): 继续执行代码直到遇到下一个断点。
    • 单步执行(Step over): 步进代码以查看每一行代码对变量作出的操作,当代码调用另一个函数时不会进入这个函数,使你可以专注于当前的函数。
    • 跳入(Step into): 与 Step over 类似,但是当代码调用函数时,调试器会进去这个函数并跳转到函数的第一行。
    • 跳出(Step out): 当你进入一个函数后,你可以点击 Step out 执行函数余下的代码并跳出该函数。
    • 断点切换(Toggle breakpoints): 控制断点的开启和关闭,同时保持断点完好。

    查看js文件

    如果你想在开发者工具上预览你的js文件,可以在打开Sources tab下的debuggerWorker.js选项卡,该选项卡下会显示当前调试项目的所有js文件。

    查看js文件

    断点其实很简单

    断点(Breakpoint) 是在脚本中设置好的暂停处。在DevTools中使用断点可以调试JavaScript代码,DOM更新和 network calls。

    心得:你可以像使用Xcode/AndroidStudio调试Native应用一样,来使用Chrome开发者工具通过断点对程序进行调试。

    添加和移除断点

    在 Sources 面板的文件导航面板中打开一个JavaScript文件来调试,点击边栏(line gutter) 为当前行设置一个断点,已经设置的断点处会有一个蓝色的标签,单击蓝色标签,断点即被移除。

    添加移除断点

    心得:右键点击蓝色标签会打开一个菜单,菜单包含以下选项:执行到此(Continue to Here),黑盒脚本(Blackbox scripts),移除断点(Remove Breakpoint), 编辑断点(Edit Breakpoint),和 禁用断点(Disable Breakpoint)。在这里你可以对断点进行更高级的定制化的操作。右键蓝色图标

    高级操作

    上文讲到右键点击蓝色标签会打开一个菜单,下面就介绍一下该菜单下的高级操作。

    执行到此(Continue to Here):

    如果你想让程序立即跳到某一行时,这个功能会帮到你。如果在该行之前还有别的断点,程序会依次经过前面的断点。另外需要提出的是这个功能在任意一行代码的边栏(gutter line)前单击右键都会看到。

    黑盒脚本(Blackbox scripts):

    黑盒脚本会从你的调用堆栈中隐藏第三方代码。

    编辑断点(Edit Breakpoint):

    通过该功能你可以创建一个条件断点,你也可以在边栏(gutter line) 右键并选择添加条件断点(Add Conditional Breakpoint) 。在输入框中,输入一个可解析为真或假的表达式。仅当条件为真时,执行会在此暂停。 
    条件断点

    心得:如果你想让程序在某处从来都不要暂停,可以编辑一个条件永远为false的条件断点。另外,你也可以在该行代码的边栏(gutter line)前单击右键选择“Never pause here”即可,你会发现“Never pause here”其实就是在该行代码上设了一个永远为false的条件断点。Never pause here

    管理你的断点

    你可以通过Chrome开发者工具的右边面板来统一管理你的断点。

    管理断点

    心得:你可以通过断点前的复选框来启用和禁用断点,也可以单击右键来进行更多的操作(如:移除断点,移除所有断点,启用禁用断点等)。

    有一种断点叫全局断点

    全局断点的作用是,当程序出现异常时,会在异常的地方暂停,这对快速定位异的常位置很方便。
    做iOS开发的同学都知道在Xcode中可以设置全局断点,其实在Chrome 开发者工具中也同样有与之对应的功能,叫“Pause On Caught Exceptions”。如果勾选上此功能,则即使所发生运行时异常的代码在 try/catch 范围内,Chrome 开发者工具也能够在错误代码处停住。 
    全局断点

    不要忽略控制台

    DevTools 控制台(Console) 可以让你在目前已暂停的状态下进行试验。按 Esc 键打开/关闭控制台。

    Console

    心得:你可以在控制台(Console)上打印变量,执行脚本等操作。在开发调试中非常有用。

    参考

    chrome-devtools
    CN-Chrome-DevTools
    Debugging

    About

    本文出自《React Native学习笔记》系列文章。 
    了解更多,可以关注我的GitHub 
    @https://crazycodeboy.github.io/


    展开全文
  • React Native / React调试技巧 做过原生APP开发的同学们都清楚,我们在Xcode和studio中就可以直接对编写的代码进行断点调试,很方便,但是web开发断点调试就不能直接在开发工具中完成了,需要借助浏览器来完成,...

    React Native / React调试技巧

    做过原生APP开发的同学们都清楚,我们在Xcode和studio中就可以直接对编写的代码进行断点调试,很方便,但是web开发断点调试就不能直接在开发工具中完成了,需要借助浏览器来完成,React相关的开发断点调试和web开发基本上一样,也是在浏览器上进行调试,虽然没有原生那么方便,但是也还算简单。React Native调试需要借助官方的Developer Menu,下面我们就来简单聊聊这个Developer MenuChrome Developer Tools

    Developer Menu

    模拟器开启Developer Menu

    • iOS模拟器
      • 可以通过Command⌘ + D快捷键来快速打开Developer Menu
    • android模拟器
      • 可以通过Command⌘ + M快捷键来快速打开Developer Menu。也可以通过模拟器上的菜单键来打开

    http://ovyjkveav.bkt.clouddn.com/17-12-4/24659707.jpg

    真机开启Developer Menu

    • iOS和Android真机通过摇动手机来开启Developer Menu

    Reloading JavaScript

    在只是修改了js代码的情况下,如果要预览修改结果,你不需要重新编译你的应用。在这种情况下,你只需要告诉React Native重新加载js即可。

    注意: 如果你修改了native的代码或修改了Images.xcassets、res/drawable中的文件,重新加载js是不行的,这时你需要重新编译你的项目了

    Reload js

    Reload js将你项目中js代码部分重新生成bundle文件,然后传输给模拟器或手机

    在Developer Menu中单击Reload让React Native重新加载js。对于iOS模拟器你也可以通过Command⌘ + R快捷键来加载js,对于Android模拟器可以通过双击r键来加载js

    注意:如果Command⌘ + R 无法使你的iOS模拟器加载js,可以通过选中Hardware menu中Keyboard选项下的 ‘Connect Hardware Keyboard’ 试试

    Enable Live Reload

    在 Developer Menu中有 ‘Enable Live Reload’ 选项,该选项提供了React Native动态加载的功能。当你的js代码发生变化后,React Native会自动生成bundle然后传输到模拟器或手机上

    gif

    Enable Hot Reloading

    Developer Menu中还有一项需要特别介绍的,就是’Enable Hot Reloading’热加载,如果说Enable Live Reload解放了你的双手的话,那么Hot Reloading不但解放了你的双手而且还解放了你的时间。 当你每次保存代码时Hot Reloading功能便会生成此次修改代码的增量包,然后传输到手机或模拟器上以实现热加载。相比 Enable Live Reload需要每次都返回到启动页面,Enable Live Reload则会在保持你的程序状态的情况下,就可以将最新的代码部署到设备上,当你做布局的时候启动Enable Live Reload功能你就可以实时的预览布局效果了,方便省时

    Warning

    React Native程序运行时出现的Warnings也会被直接显示在屏幕上,以黄色的背景显示,并会打印出警告信息,你也可以通过console.warn()来手动触发Warnings,你也可以通过console.disableYellowBox = true来手动禁用Warnings的显示,或者通过console.ignoredYellowBox = ['Warning: ...']来忽略相应的Warning

    img

    Error

    React Native程序运行时出现的Error会被直接显示在屏幕上,以红色的背景显示,并会打印出错误信息, 你也可以通过 console.error()来手动触发Error

    img

    注意: 在生产环境release下Error和Warning功能不在生效

    如何真机调试

    • iOS上

    配置好相应的调试证书,直接连接线连接到真机运行即可

    • android

    摇晃手机,调出Developer Menu面板,在’Developer Menu’下的’Dev Settings’中Debug server host & prot for device配置自己路由器ip地址。端口使用8081即可

    image

    image

    Chrome Developer Tools

    Chrome 开发工具

    谷歌Chrome开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具。开发者工具允许网页开发者深入浏览器和网页应用程序的内部。该工具可以有效地追踪布局问题,设置 JavaScript 断点并可深入理解代码的最优化策略。Chrome开发工具一共提供了8大组工具:

    • Element 面板: 用于查看和编辑当前页面中的 HTML 和 CSS 元素
    • Network 面板:用于查看 HTTP 请求的详细信息,如请求头、响应头及返回内容等
    • Source 面板:用于查看和调试当前页面所加载的脚本的源文件
    • TimeLine 面板: 用于查看脚本的执行时间、页面元素渲染时间等信息
    • Profiles 面板:用于查看 CPU 执行时间与内存占用等信息
    • Resource 面板:用于查看当前页面所请求的资源文件,如 HTML,CSS 样式文件等
    • Audits 面板:用于优化前端页面,加速网页加载速度等
    • Console 面板:用于显示脚本中所输出的调试信息,或运行测试脚本等

    注意: 对于调试React Native应用来说,Sources和Console是使用频率最高的两个工具

    你可以像调试JavaScript代码一样来调试你的React Native程序

    如何通过Chrome调试React Native程序

    • 启动远程调试

    在Developer Menu下单击’Debug JS Remotely’启动JS远程调试功能,此时Chrome会被打开,同时会创建一个’http://localhost:8081/debugger-ui‘网页

    image

    • 打开Chrome开发者工具

    在该’http://localhost:8081/debugger-ui‘网页下打开开发者工具,打开Chrome菜单->选择更多工具->选择开发者工具。你也可以通过快捷键(Command⌘ + Option⌥ + I on Mac, Ctrl + Shift + I on Windows)打开开发者工具

    打开Chrome开发着工具之后你会看到如下界面

    image

    Sources面板

    Sources面板提供了调试 JavaScript 代码的功能

    image

    Sources面板可以让你看到你所要检查的页面的所有脚本代码,并在面板选择栏下方提供了一组标准控件,提供了暂停,恢复,步进等功能。在窗口的最下方的按钮可以在遇到异常(exception)时强制暂停。源码显示在单独的标签页,通过点击 打开文件导航面板,导航栏中会显示所有已打开的脚本文件

    Chrome开发着工具中的Sources面板几乎是最常用的功能面板。通常只要是开发遇到了js报错或者其他代码问题,在审视一遍自己的代码而一无所获之后,首先就会打开Sources进行js断点调试

    执行控制工具

    从上图可以看到’执行控制工具’按钮在侧板顶部,让你可以按步执行代码,当你进行调试的时候这几个按钮非常有用:

    • 继续(Continue): 继续执行代码直到遇到下一个断点
    • 单步执行(Step over): 步进代码以查看每一行代码对变量作出的操作,当代码调用另一个函数时不会进入这个函数,使你可以专注于当前的函数
    • 跳入(Step into): 与 Step over 类似,但是当代码调用函数时,调试器会进去这个函数并跳转到函数的第一行
    • 跳出(Step out): 当你进入一个函数后,你可以点击 Step out 执行函数余下的代码并跳出该函数
    • 断点切换(Toggle breakpoints): 控制断点的开启和关闭,同时保持断点完好

    查看js文件

    如果你想在开发者工具上预览你的js文件,可以在打开Sources tab下的debuggerWorker.js选项卡,该选项卡下会显示当前调试项目的所有js文件,或者是用快捷键 cmd + o 调出文件搜索直接进行搜索,这个更加便捷高效

    断点

    断点(Breakpoint)是在脚本中设置好的暂停处,在DevTools中使用断点可以调试JavaScript代码

    • 添加和移除断点

    在 Sources 面板的文件导航面板中打开一个JavaScript文件来调试,点击边栏(line gutter) 为当前行设置一个断点,已经设置的断点处会有一个蓝色的标签,单击蓝色标签,断点即被移除

    image

    右键点击蓝色标签会打开一个菜单,菜单包含以下选项:执行到此(Continue to Here),黑盒脚本(Blackbox scripts),移除断点(Remove Breakpoint), 编辑断点(Edit Breakpoint),和 禁用断点(Disable Breakpoint)。在这里你可以对断点进行更高级的操作

    image

    高级操作

    • Continue to Here

    如果你想让程序立即跳到某一行时,这个功能会帮到你。如果在该行之前还有别的断点,程序会依次经过前面的断点。另外需要提出的是这个功能在任意一行代码的边栏(gutter line)前单击右键都会看到

    • Blackbox scripts

    黑盒脚本会从你的调用堆栈中隐藏第三方代码

    • Edit Breakpoint

    通过该功能你可以创建一个条件断点,你也可以在边栏(gutter line) 右键并选择添加条件断点(Add Conditional Breakpoint) 。在输入框中,输入一个可解析为真或假的表达式。仅当条件为真时,执行会在此暂停

    image

    如果你想让程序在某处从来都不要暂停,可以编辑一个条件永远为false的条件断点。另外,你也可以在该行代码的边栏(gutter line)前单击右键选择“Never pause here”即可,你会发现“Never pause here”其实就是在该行代码上设了一个永远为false的条件断点

    image

    管理断点

    你可以通过Chrome开发者工具的右边面板来统一管理你的断点

    image

    你可以通过断点前的复选框来启用和禁用断点,也可以单击右键来进行更多的操作(如:移除断点,移除所有断点,启用禁用断点等)

    全局断点

    全局断点的作用是,当程序出现异常时,会在异常的地方暂停,这对快速定位异的常位置很方便。
    做iOS开发的同学都知道在Xcode中可以设置全局断点,其实在Chrome 开发者工具中也同样有与之对应的功能,叫’Pause On Caught Exceptions’。如果勾选上此功能,则即使所发生运行时异常的代码在 try/catch 范围内,Chrome 开发者工具也能够在错误代码处停住

    image

    控制台

    DevTools控制台(Console)可以让你在目前已暂停的状态下进行试验。按 Esc 键打开/关闭控制台

    你可以在控制台(Console)上打印变量,执行脚本等操作。在开发调试中最常用

    image

    更多文章

    • 作者React Native开源项目OneM【500+ star】地址(按照企业开发标准搭建框架完成开发的):https://github.com/guangqiang-liu/OneM:欢迎小伙伴们 star
    • 作者简书主页:包含60多篇RN开发相关的技术文章http://www.jianshu.com/u/023338566ca5 欢迎小伙伴们:多多关注多多点赞
    • 作者React Native QQ技术交流群:620792950 欢迎小伙伴进群交流学习
    • 友情提示:在开发中有遇到RN相关的技术问题,欢迎小伙伴加入交流群(*620792950),在群里提问、互相交流学习。交流群也定期更新最新的RN学习资料给大家,谢谢大家支持!*

    小伙伴们扫下方二维码加入RN技术交流QQ群

    QQ群二维码,500+ RN工程师在等你加入哦

    展开全文
  • React Native调试心得

    2016-12-12 09:49:52
    在做React Native开发时,少不了的需要对React Native程序进行调试调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。本文将向大家分享React Native程序调试的一些技巧和心得。 ...

    在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。本文将向大家分享React Native程序调试的一些技巧和心得。

    Developer Menu

    Developer Menu是React Native给开发者定制的一个开发者菜单,来帮助开发者调试React Native应用。

    提示:生产环境release (production) 下Developer Menu是不可用的。

    如何开启Developer Menu

    在模拟器上开启Developer Menu

    Android模拟器:

    可以通过Command⌘ + M 快捷键来快速打开Developer Menu。也可以通过模拟器上的菜单键来打开。

    心得:高版本的模拟器通常没有菜单键的,不过Nexus S上是有菜单键的,如果想使用菜单键,可以创建一个Nexus S的模拟器。

    iOS模拟器:

    可以通过Command⌘ + D快捷键来快速打开Developer Menu。

    在真机上开启Developer Menu:

    在真机上你可以通过摇动手机来开启Developer Menu。

    预览图

    Developer Menu

    Reloading JavaScript

    在只是修改了js代码的情况下,如果要预览修改结果,你不需要重新编译你的应用。在这种情况下,你只需要告诉React Native重新加载js即可。

    提示:如果你修改了native 代码或修改了Images.xcassets、res/drawable中的文件,重新加载js是不行的,这时你需要重新编译你的项目了。

    Reload js

    Reload js即将你项目中js代码部分重新生成bundle,然后传输给模拟器或手机。
    在Developer Menu中有Reload选项,单击Reload让React Native重新加载js。对于iOS模拟器你也可以通过Command⌘ + R 快捷键来加载js,对于Android模拟器可以通过双击r键来加载js。

    提示:如果Command⌘ + R 无法使你的iOS模拟器加载js,则可以通过选中Hardware menu中Keyboard选项下的 “Connect Hardware Keyboard” 。

    小技巧:Automatic reloading

    Enable Live Reload

    Enable Live Reload

    React Native旨在为开发者带来一个更好的开发体验。如果你觉得上文的加载js代码方式太low了或者不够方便,那么有没有一种更简便加载js代码的方式呢?
    答案是肯定的。 
    在 Developer Menu中你会看到”Enable Live Reload” 选项,该选项提供了React Native动态加载的功能。当你的js代码发生变化后,React Native会自动生成bundle然后传输到模拟器或手机上,是不是觉得很方便。

    Hot Reloading

    Hot Reloading

    另外,Developer Menu中还有一项需要特别介绍的,就是”Hot Reloading”热加载,如果说Enable Live Reload解放了你的双手的话,那么Hot Reloading不但解放了你的双手而且还解放了你的时间。 当你每次保存代码时Hot Reloading功能便会生成此次修改代码的增量包,然后传输到手机或模拟器上以实现热加载。相比 Enable Live Reload需要每次都返回到启动页面,Enable Live Reload则会在保持你的程序状态的情况下,就可以将最新的代码部署到设备上,听起来是不是很疯狂呢。

    提示:当你做布局的时候启动Enable Live Reload功能你就可以实时的预览布局效果了,这可以和用AndroidStudio或AutoLayout做布局的实时预览相媲美。

    Errors and Warnings

    在development模式下,js部分的Errors 和 Warnings会直接打印在手机或模拟器屏幕上,以红屏和黄屏展示。

    Errors

    React Native程序运行时出现的Errors会被直接显示在屏幕上,以红色的背景显示,并会打印出错误信息。 你也可以通过 console.error()来手动触发Errors。

    Errors

    Warnings

    React Native程序运行时出现的Warnings也会被直接显示在屏幕上,以黄色的背景显示,并会打印出警告信息。 你也可以通过 console.warn()来手动触发Warnings。 你也可以通过console.disableYellowBox = true来手动禁用Warnings的显示,或者通过console.ignoredYellowBox = ['Warning: ...'];来忽略相应的Warning。

    Warnings

    提示:在生产环境release (production)下Errors和Warnings功能是不可用的。

    Chrome Developer Tools

    Chrome 开发工具

    谷歌 Chrome 开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具。开发者工具允许网页开发者深入浏览器和网页应用程序的内部。该工具可以有效地追踪布局问题,设置 JavaScript 断点并可深入理解代码的最优化策略。 Chrome 开发工具一共提供了8大组工具:

    • Element 面板: 用于查看和编辑当前页面中的 HTML 和 CSS 元素。
    • Network 面板:用于查看 HTTP 请求的详细信息,如请求头、响应头及返回内容等。
    • Source 面板:用于查看和调试当前页面所加载的脚本的源文件。
    • TimeLine 面板: 用于查看脚本的执行时间、页面元素渲染时间等信息。
    • Profiles 面板:用于查看 CPU 执行时间与内存占用等信息。
    • Resource 面板:用于查看当前页面所请求的资源文件,如 HTML,CSS 样式文件等。
    • Audits 面板:用于优化前端页面,加速网页加载速度等。
    • Console 面板:用于显示脚本中所输出的调试信息,或运行测试脚本等。

    提示:对于调试React Native应用来说,Sources和Console是使用频率很高的两个工具。

    你可以像调试JavaScript代码一样来调试你的React Native程序。

    如何通过 Chrome调试React Native程序

    你可以通过以下步骤来调试你的React Native程序:

    第一步:启动远程调试

    在Developer Menu下单击”Debug JS Remotely” 启动JS远程调试功能。此时Chrome会被打开,同时会创建一个“http://localhost:8081/debugger-ui.” Tab页。
    http-//localhost-8081/debugger-ui

    第二步:打开Chrome开发者工具

    在该“http://localhost:8081/debugger-ui.”Tab页下打开开发者工具。打开Chrome菜单->选择更多工具->选择开发者工具。你也可以通过快捷键(Command⌘ + Option⌥ + I on Mac, Ctrl + Shift + I on Windows)打开开发者工具。

    打开开发者工具

    打开Chrome开发着工具之后你会看到如下界面:
    打开Chrome开发着工具

    真机调试

    在iOS上

    打开”RCTWebSocketExecutor.m “文件,将“localhost”改为你的电脑的ip,然后在Developer Menu下单击”Debug JS Remotely” 启动JS远程调试功能。

    在Android上

    方式一: 
    在Android5.0以上设备上,将手机通过usb连接到你的电脑,然后通过adb命令行工具运行如下命令来设置端口转发。 
    adb reverse tcp:8081 tcp:8081

    方式二:
    你也可以通过在“Developer Menu”下的“Dev Settings”中设置你的电脑ip来进行调试。

    心得:在使用真机调试时,你需要确保你的手机和电脑处在同一个网段内,即它们实在同一个路由器下。

    小技巧:


    巧用Sources面板

    Sources 面板提供了调试 JavaScript 代码的功能。它提供了图形化的V8 调试器。 Sources面板

    Sources 面板可以让你看到你所要检查的页面的所有脚本代码,并在面板选择栏下方提供了一组标准控件,提供了暂停,恢复,步进等功能。在窗口的最下方的按钮可以在遇到异常(exception)时强制暂停。源码显示在单独的标签页,通过点击 打开文件导航面板,导航栏中会显示所有已打开的脚本文件。

    心得:Chrome开发着工具中的Sources面板几乎是我最常用的功能面板。通常只要是开发遇到了js报错或者其他代码问题,在审视一遍自己的代码而一无所获之后,我首先就会打开Sources进行js断点调试。

    执行控工具

    从上图可以看到“执行控工具”按钮在侧板顶部,让你可以按步执行代码,当你进行调试的时候这几个按钮非常有用:

    • 继续(Continue): 继续执行代码直到遇到下一个断点。
    • 单步执行(Step over): 步进代码以查看每一行代码对变量作出的操作,当代码调用另一个函数时不会进入这个函数,使你可以专注于当前的函数。
    • 跳入(Step into): 与 Step over 类似,但是当代码调用函数时,调试器会进去这个函数并跳转到函数的第一行。
    • 跳出(Step out): 当你进入一个函数后,你可以点击 Step out 执行函数余下的代码并跳出该函数。
    • 断点切换(Toggle breakpoints): 控制断点的开启和关闭,同时保持断点完好。

    查看js文件

    如果你想在开发者工具上预览你的js文件,可以在打开Sources tab下的debuggerWorker.js选项卡,该选项卡下会显示当前调试项目的所有js文件。

    查看js文件

    断点其实很简单

    断点(Breakpoint) 是在脚本中设置好的暂停处。在DevTools中使用断点可以调试JavaScript代码,DOM更新和 network calls。

    心得:你可以像使用Xcode/AndroidStudio调试Native应用一样,来使用Chrome开发者工具通过断点对程序进行调试。

    添加和移除断点

    在 Sources 面板的文件导航面板中打开一个JavaScript文件来调试,点击边栏(line gutter) 为当前行设置一个断点,已经设置的断点处会有一个蓝色的标签,单击蓝色标签,断点即被移除。

    添加移除断点

    心得:右键点击蓝色标签会打开一个菜单,菜单包含以下选项:执行到此(Continue to Here),黑盒脚本(Blackbox scripts),移除断点(Remove Breakpoint), 编辑断点(Edit Breakpoint),和 禁用断点(Disable Breakpoint)。在这里你可以对断点进行更高级的定制化的操作。右键蓝色图标

    高级操作

    上文讲到右键点击蓝色标签会打开一个菜单,下面就介绍一下该菜单下的高级操作。

    执行到此(Continue to Here):

    如果你想让程序立即跳到某一行时,这个功能会帮到你。如果在该行之前还有别的断点,程序会依次经过前面的断点。另外需要提出的是这个功能在任意一行代码的边栏(gutter line)前单击右键都会看到。

    黑盒脚本(Blackbox scripts):

    黑盒脚本会从你的调用堆栈中隐藏第三方代码。

    编辑断点(Edit Breakpoint):

    通过该功能你可以创建一个条件断点,你也可以在边栏(gutter line) 右键并选择添加条件断点(Add Conditional Breakpoint) 。在输入框中,输入一个可解析为真或假的表达式。仅当条件为真时,执行会在此暂停。 
    条件断点

    心得:如果你想让程序在某处从来都不要暂停,可以编辑一个条件永远为false的条件断点。另外,你也可以在该行代码的边栏(gutter line)前单击右键选择“Never pause here”即可,你会发现“Never pause here”其实就是在该行代码上设了一个永远为false的条件断点。Never pause here

    管理你的断点

    你可以通过Chrome开发者工具的右边面板来统一管理你的断点。

    管理断点

    心得:你可以通过断点前的复选框来启用和禁用断点,也可以单击右键来进行更多的操作(如:移除断点,移除所有断点,启用禁用断点等)。

    有一种断点叫全局断点

    全局断点的作用是,当程序出现异常时,会在异常的地方暂停,这对快速定位异的常位置很方便。
    做iOS开发的同学都知道在Xcode中可以设置全局断点,其实在Chrome 开发者工具中也同样有与之对应的功能,叫“Pause On Caught Exceptions”。如果勾选上此功能,则即使所发生运行时异常的代码在 try/catch 范围内,Chrome 开发者工具也能够在错误代码处停住。 
    全局断点

    不要忽略控制台

    DevTools 控制台(Console) 可以让你在目前已暂停的状态下进行试验。按 Esc 键打开/关闭控制台。

    Console

    心得:你可以在控制台(Console)上打印变量,执行脚本等操作。在开发调试中非常有用。

    展开全文
  • 运行react-native run-android ,模拟器正常运行,用的(魅族手机)却不能运行,报错:React Native 之 com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException; 然后通过博文...

    一:遇到问题:Android 真机无法运行,模拟器可正常运行

    1. 运行react-native run-android ,模拟器正常运行,用的(魅族手机)却不能运行,报错:React Native 之 com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException;
    2. 然后通过博文react踩坑记录,我用androidStudio修改了Gradle(Project)版本为 1.2.3,
      修改gradle
    3. 但是,随后运行react-native run-android,又报错,
      Gradle Wapper版本
      我们当然要毫不留情的将2.141的Gradle-Wapper 版本修改为 2.2版本这里写图片描述
      然后我们运行react-native run-android,终于看到梦寐以求的界面:
      这里写图片描述

    二:在真机上调试代码?

    根据上面的做法,我们如愿以偿的看到了调试效果,但是当我修改js代码的时候还需要安装一遍吗,根据网上的信息,我需要摇一摇手机出现开发者菜单,但是我就是把手机砸了他也不出来,我用的是魅族(metal),最后我给大家说两种方法:

    1. 修改手机权限

      打开魅族的手机管家,进入权限管理,进入应用权限管理,找到你所安装的项目打开桌面悬浮窗的权限,记住一定是桌面悬浮窗权限:
    这里写图片描述
    ,然后摇一摇手机,就出现重新刷新菜单(开发者菜单)

    2.命令行方法

    前提是我们要开启悬浮窗,要不然下面的步骤没效果:进入安卓sdk中的目录:F:\android\AndroidSDK\platform-tools,然后给abd.exe他设置一个全局的环境变量,以便我们直接使用abd shell命令,然后我们输入adb shell input keyevent 82,然后就看到了开发者菜单,点击刷新就看到了效果。

    展开全文
  • react-native 真机调试

    2019-04-10 08:46:51
    在根目录下react-native run-android 程序会自动安装在连接的真机上 ➢ 安装程序 打开USB调试模式,确认是文件传输,不是充电状态 选择继续安装 ➢ 初始界面 react-native的初始界面,能看到就说明程序运行...
  • 最近调试RN,发现用usb连着真的很不舒服,就想到了以前用android studio插件无线调试的时候。但是呢,ADB WIFI这个插件怎么都不起作用了,卸载重装也不行。 (对了,我的操作系统用的macos high serria。)这就很...
  • ReactNative调试方法

    2018-02-25 23:59:14
    我们开发任何软件都逃不过调试ReactNative也不例外,那么如何调试呢? 1、打开谷歌浏览器设置 2、打开扩展程序商店 3、搜索扩展程序react developer tools 4、安装 5、运行程序在运行带RN的工程后,当前页面...
  • 另外在安卓模拟器打开远程调试的时候:google浏览器的地址栏设置ip地址如: 192.168.3.10:8081/debugger-ui/...reactnative项目的调试是个大问题,尤其是android调试,你永远都不会知道你走出来这个坑,还有多少坑...
  • React-Native自带的打印log的命令 ...android studio调试习惯了,然后在webstorm调试react-native找到了一个调试插件:react-native-console 可以直接从webstorm的设置中添加插件 File>>Set...
  • 其实Mac下配置安卓环境可以通过AndroidStudio来完成,这个度娘上有很多的资料,在这记录下我绕过AndroidStudio进行安卓的真机调试的配置过程。 贴上运行时的报错信息:No connected devices! FAILURE: Build ...
  • 出现如下图所示,ip地址输入的是本机的ip地址加:8081还是这个错误…求救(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`) ![图片说明](http://img.bbs.csdn.net/upload/201603/07/1457363390_80674.png)
  •   此文重点介绍React Native开发的程序调试工具及过程。  呼出Developer Menu对话框,如下图所示: Android物理设备或者IOS物理设备 : 摇晃手机呼出。 Android模拟器:Command⌘ + M IOS模拟器:Command...
  • 一、概述 ...这篇文章介绍的Webstorm与React-Native断点调试android-studio与Java的断点调试类似,反正就是个人感觉非常好用。 二、内容 1.开发环境(React-Native开发环境就不介绍了,自行goog...
  • 今天做项目时,在React Native中调用了原生组件,点击按钮时,程序就闪退,在React Native中却看不到程序的log,原生代码log只有在android studio中查看!最后找到了Android Studio运行React Native项目的方法。 1,...
  • 现在呢,我的手机上已经装好了AwesomeProject的应用,现在开始实时更新和调试。 1.开始摇晃你的手机,注意抓稳了,别扔出去了。会弹出下面的界面。 2.点击dev settings进去之后,我们可以看到一个选项是 debug...
  • 1、开启 USB 调试 2、检查你的设备是否能正确连接到 ADB(Android Debug Bridge),使用adb devices命令 $ adb devices List of devices attached emulator-5554 offline # Google emulator 14ed2fcc device # ...
  • react native 无法reload的时候,在项目根目录下按住shift,鼠标右键点击“在此处打开命令窗口”,cmd命令运行如下:react-native bundle –platform android –dev false –entry-file index.android.js –bundle-...
1 2 3 4 5 ... 20
收藏数 7,288
精华内容 2,915
关键字:

native react 安卓调试