方式一  chrome devtools的方式

第一步:metro的方式加载bundle

先设置好原生这边的代码,然后记得打开RN服务器。

注意这个enableDebugger的值一定要设置为true

第二步:配置devtools调试端口号

打开chorome,输入chrome://inspect,会进入devtools的调试设置页面:

点击页面上的configure按钮,进行端口号的设置,如下图。

具体设置方式为:host默认localhost,后面端口是重点,如果你RN服务端开的是8081就是8081,你开的是8082就是8082。多配置是不要紧的,不要配错了就行。配置完上方的端口号,记得勾选左下角的Enable port forwarding,最后点击done即可。

按照上面这个顺序,依次配置完,点击完done后,等待大概5秒,会出现这个页面:

此时你会看到Remoto Target里面有了一个target,名叫Hermes React Native,点击这个target里面的inspect链接。

注意:这一块偶尔会自动消失,如果消失了,就要杀死APP重启,然后重新加载成功bundle。再去命令行里面按一下d键,等手机上出现reload以后,按一下刷新页面。刷新完等个大概5秒就出来了。

第三步:添加RN那边的JS源码

点击Sources > Workspace选项卡,点击Add folder按钮,在弹出来的资源选择器中选择当前项目的源文件然后点击选择文件夹按钮,如图:

问题解析

问题一:Failed to fetch source url xxx remote fetches not permitted

解决方案:这个问题可能是RN服务端被挂起了,重启手机,关闭命令行,然后clean一下项目,按照之前启动RN服务端的步骤重新来一遍,不报错了。

问题二:在chrome左边栏打断点并不生效

如果直接在chorome的左边栏打断点,进程并不会阻塞住。但是大家看我的Log已经在控制台打出来了,这说明该行代码其实已经执行过了。

解决方案:在开发安卓IOS的时候,直接在chrome左边栏打上断点就可以了。但是鸿蒙这里目前可能是不支持,需要使用在代码中加debugger的方式

如果仍然不生效,需要杀死APP重新加载一下bundle。然后关闭chrome调试的网页,重进一下,最终断点成功:

方式二  flipper的方式

第一步:下载flipper

flipper是一个三方工具,需要手动下载一下。下载链接为:https://github.com/facebook/flipper/releases/download/v0.171.1/Flipper-win.zip

进不去网页的家人们,记得用4G流量去下载即可。

第二步:配置flipper环境变量

下载完要先配置一下环境变量,配置的路径是有flipper.exe的那个

配置完以后,如果你此时打开flipper:

映入眼帘的是一个报错,无视即可不影响调试。

还有一种快速打开flipper的方式,你到RN服务端按一下D键,弹窗调试菜单,选择openDebugger,就会自动打开flipper。

第三步:进入flipper模式

点击一下Hermes Debugger(RN),进入鸿蒙调试模式

这里左上角报了一个NO APPLICATION SELECTED,不用管,不影响调试。

第四步:Flipper中打开RN代码

点击完左边的Hermes Debugger(RN)后,到右边点一下源代码选项卡。

随后按Ctrl + P(macox上command + P),然后输入你要调试的文件名,选择文件即可打开源代码

第五步:制造断点

和chrome调试不一样的地方是,这个Flipper在你要定位的行号点击即打下断点,当代码运行到此处时便会自动停下,如图所示:

当然,和chrome一样,flipper也支持在代码中写debugger的方式,在你想要断点的地方写上debugger即可,断点时会自动阻塞:

第六步:更新RN代码

当你修改完JS代码,flipper调试这里也会自动更新,前提是你得先把上一次的debug结束,点击右上角的继续执行脚本即可。

问题解析

问题一  报错NO DEVICES FOUND

解决方案:出现这个问题,大概率是RN服务器没连上,重启一下手机和RN服务器即可。

问题二  Flipper连接手机失败

解决方案:如果是这个报错,说明RN服务器正常,但是手机没有连上电脑,可能是数据线松动了。检查一下USB调试是否配置,还有数据线是否松动。

如何在原生鸿蒙中进行RN的断点调试的更多相关文章

  1. Xcode中使用数据(硬件)断点调试

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Xcode的GUI界面中只能添加软断点,而无法增加硬断点.但 ...

  2. phpstorm中xdebug配置和断点调试

    今天赶紧把这个搞了  运行环境: phpStorm 2018 PHP 5.45 nts VC9 Xdebug 2.4.1 0x01 PHP安装xdebug扩展 自己之前装一直没装起 原来是版本问题 下 ...

  3. unity导出工程导入到iOS原生工程中详细步骤

    一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...

  4. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  5. iOS原生项目中集成React Native

    1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...

  6. 原生js中slice()方法和splice()区别

    slice()方法和splice()方法都是原生js中对数组操作的方法. slice(),返回一个新的数组,该方法可从已有的数组中返回选定的元素.例如:arrObject(start,end),sta ...

  7. ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题

    问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...

  8. 原生ajax中get和post请求

    后台代码: class AjaxHanlder(tornado.web.RequestHandler): def get(self): print(self.get_argument('type',N ...

  9. angularjs 动态表单, 原生事件中调用angular方法

    1. 原生事件中调用angular方法, 比如 input的onChange事件想调用angular里面定义的方法 - onChange="angular.element(this).sco ...

  10. 如何在原生工程中引入Cordova工程-for iOS 【转】

    http://blog.csdn.net/e20914053/article/details/50170487 如今混合开发方兴未艾,有的项目可能一开始是原生开发的,后期需要加入混合开发,如将Cord ...

随机推荐

  1. 为什么Java已经不推荐使用Stack了?

    为什么不推荐使用Stack Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低:是因为 Stack 继承自 Vector, 而 Vector 在每个方法 ...

  2. 如何基于Java解析国密数字证书

    一.说明 随着信息安全的重要性日益凸显,数字证书在各种安全通信场景中扮演着至关重要的角色.国密算法,作为我国自主研发的加密算法标准,其应用也愈发广泛.然而,在Java环境中解析使用国密算法的数字证书时 ...

  3. 三牧校队训练题目 Solution

    前置知识: 搜索 队列 栈 递归 (提高难度)记忆化搜索 T1:P1226 [模板]快速幂 暴力想法:\(a\times a\) 进行 \(b\) 次,每次 \(a\times a\mod p\)​. ...

  4. SQL通用语法与分类

    通用语法 1.SQL可以单行或多行书写,以分号结尾. 2.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写. 3.注释 1)单行注释: -- 注释内容  或 # 注释内容(MySQL特有) ...

  5. Axios——异步框架

    Axios--异步框架(简化AJAX代码书写)    Axios 请求方式别名   

  6. 将 LLMs 精调至 1.58 比特: 使极端量化变简单

    随着大语言模型 (LLMs) 规模和复杂性的增长,寻找减少它们的计算和能耗的方法已成为一个关键挑战.一种流行的解决方案是量化,其中参数的精度从标准的 16 位浮点 (FP16) 或 32 位浮点 (F ...

  7. Windows 中的硬链接、目录联接(软链接)、符号链接、快捷方式

    在Linux文件系统中经常提及硬链接(Hard Link)和符号链接(Symbolic Link),Windows中也可以创建链接,但由于丰富的图形界面操作,很少提及链接.Windows 的 NTFS ...

  8. linux cpufreq framework(5)_ARM big Little driver

    1. 前言 也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中? 众所周知,ARM的big·Little架构,也称作HMP(具体可参考 ...

  9. kubernetes中pod的隔离策略

    配置容器级别的安全控制 使用宿主机的网络模式 可以通过设置pod的spec的hostNetwork参数为true开启容器的"host"network模式 spec: hostNet ...

  10. mysql+navicat+eclipse+jsp

    mysql server 5.5安装 微信公众号搜软件智库,然后找到mysql 5.5 百度网盘下载对应自己电脑版本的mysql 百度网盘:http://pan.baidu.com/s/1jI5oB6 ...