如何愉快地调试一个 React Native for Android APP
调试Android APP的设备有两种:
模拟器:Android SDK自带的 emulator 或者第三方的 Genymotion
真机这里重点说说如何用真机调试,模拟器如果仅仅是跑个demo用用还行,对实际开发意义不大,故不在此赘述。真机调试的前提条件:
首先确保你的电脑和手机设备在同一个Wi-Fi环境下。
其次你需要开启USB调试才能在你的设备上安装你的APP。一定要确定你已经打开设备的USB调试开关!
确保你的设备已经被成功连接,可以输入adb devices核实:
在右边那列看到device说明你的设备已经被正确连接了。注意,你只应当连接仅仅一个设备。 因为如果你连接了多个设备(包含模拟器在内),你后续的一些操作可能会失败。拔掉不需要的设备,或者关掉模拟器,确保adb devices的输出只有一个是连接状态。
现在我们可以运行 react-native run-android 来在设备上安装并启动我们的应用了
这句命令执行后,实际上就是在本地起一个node server,并且将你的android project编译打包,再上传到你的手机上。然后当js文件有改动或debug模式下手动选择reload js时候会自动更新bundle文件,达到改动js文件后即时显示的调试效果。
这“红屏”又是什么鬼?别着急,是正常的,我们需要连接上开发服务器,下面的步骤会解决这个问题。
首先确保你的电脑和手机设备在同一个Wi-Fi环境下。
其次你需要开启USB调试才能在你的设备上安装你的APP。一定要确定你已经打开设备的USB调试开关!
确保你的设备已经被成功连接,可以输入adb devices核实:
在右边那列看到device说明你的设备已经被正确连接了。注意,你只应当连接仅仅一个设备。
因为如果你连接了多个设备(包含模拟器在内),你后续的一些操作可能会失败。拔掉不需要的设备,或者关掉模拟器,确保adb devices的输出只有一个是连接状态。
现在我们可以运行 react-native run-android 来在设备上安装并启动我们的应用了
这
句命令执行后,实际上就是在本地起一个node server,并且将你的android
project编译打包,再上传到你的手机上。然后当js文件有改动或debug模式下手动选择reload
js时候会自动更新bundle文件,达到改动js文件后即时显示的调试效果。
这“红屏”又是什么鬼?别着急,是正常的,我们需要连接上开发服务器,下面的步骤会解决这个问题。
摇晃手机,或者运行adb shell input keyevent 82,可以调出开发者菜单。
点击进入Dev Settings
点击Debug server host for device
输入你电脑的IP地址和端口号(譬如我的是192.168.3.15:8081)
注意:如果你的设备是android5.0以上版本(API 21+),就不用折腾这步了
而是:运行adb reverse tcp:8081 tcp:8081 (建立一个从设备向电脑转发的端口,前提是设备和电脑通过USB相连)
不需要更多配置,你就可以使用Reload JS和其它的开发选项了
Chrome开发者工具
在Chrome上调试js代码,需要在开发菜单中选择Debug JS,这会打开一个新的页。
在
Chrome中,按下? + option + i或者选择视图(View) -> 开发者(Developer) ->
开发工具(Developer Tools)来打开开发工具控制台。打开有异常时暂停(Pause On Caught
Exceptions)选项,能够获得更好的开发体验。
Chrome中并不能直接看到App的用户界面,而只能提供console的输出,以及在sources项中断点调试js脚本。
要查看APP日志?
在终端下运行adb logcat *:S ReactNative:V ReactNativeJS:V可以看到你的应用的日志。
实时刷新
这个选项可以在你的js代码变更了之后,自动触发所连设备或者模拟器自动刷新。
开启方法:先打开开发菜单,选择Dev Settings,然后选择Auto reload on JS change选项。
到此才能完整的调试Android RN, 繁琐到累绝不爱。。
等等,能否想办法简化一下过程?
既然我们的RN项目里包含了完整的android工程,何不把android工程导入到android studio 去运行?不但可以同时查看js的日志和native的日志,而且开发android的同学最熟悉AS,利用AS的快捷键和各类插件提升调试效率。
have a try , 答案是肯定的!
执行react-native start 也可以起一个node server,只是它不帮你安装APP到device 。
以上就是我踩坑后整理的方法,按这套组合拳就可以愉快地调试了。水平有限,抛砖引玉,如果你有更好的方法!欢迎拍砖!
此处插播一个广告:拍砖请拍到我们的杏树林开放空间(246078103),期待感兴趣的同学加入。
之后要解决的一些issue
1,关于设备MinSdkVerison
RN 只支持Android4.1.2(API16)以上设备,4.0根据网络数据大概占比0.7比例,随着大部分app已经不支持4.0以下设备了,这块倒还可以接受 , 目前我们的病历夹是3.0(API-11) , 口袋是4.0(API-14)
2,我们的androidRN现在只能通过Debug JS才能渲染出界面,而不能正常的用Reload JS
3,在界面跳转时卡的令人发指
其次你需要开启USB调试才能在你的设备上安装你的APP。一定要确定你已经打开设备的USB调试开关!
确保你的设备已经被成功连接,可以输入adb devices核实:
在右边那列看到device说明你的设备已经被正确连接了。注意,你只应当连接仅仅一个设备。
因为如果你连接了多个设备(包含模拟器在内),你后续的一些操作可能会失败。拔掉不需要的设备,或者关掉模拟器,确保adb devices的输出只有一个是连接状态。
现在我们可以运行 react-native run-android 来在设备上安装并启动我们的应用了
这
句命令执行后,实际上就是在本地起一个node server,并且将你的android
project编译打包,再上传到你的手机上。然后当js文件有改动或debug模式下手动选择reload
js时候会自动更新bundle文件,达到改动js文件后即时显示的调试效果。
这“红屏”又是什么鬼?别着急,是正常的,我们需要连接上开发服务器,下面的步骤会解决这个问题。
摇晃手机,或者运行adb shell input keyevent 82,可以调出开发者菜单。
点击进入Dev Settings
点击Debug server host for device
输入你电脑的IP地址和端口号(譬如我的是192.168.3.15:8081)
注意:如果你的设备是android5.0以上版本(API 21+),就不用折腾这步了
而是:运行adb reverse tcp:8081 tcp:8081 (建立一个从设备向电脑转发的端口,前提是设备和电脑通过USB相连)
不需要更多配置,你就可以使用Reload JS和其它的开发选项了
Chrome开发者工具
在Chrome上调试js代码,需要在开发菜单中选择Debug JS,这会打开一个新的http://localhost:8081/debugger-uitab页。
在
Chrome中,按下⌘ + option + i或者选择视图(View) -> 开发者(Developer) ->
开发工具(Developer Tools)来打开开发工具控制台。打开有异常时暂停(Pause On Caught
Exceptions)选项,能够获得更好的开发体验。
Chrome中并不能直接看到App的用户界面,而只能提供console的输出,以及在sources项中断点调试js脚本。
要查看APP日志?
在终端下运行adb logcat *:S ReactNative:V ReactNativeJS:V可以看到你的应用的日志。
实时刷新
这个选项可以在你的js代码变更了之后,自动触发所连设备或者模拟器自动刷新。
开启方法:先打开开发菜单,选择Dev Settings,然后选择Auto reload on JS change选项。
到此才能完整的调试Android RN, 繁琐到累绝不爱。。
等等,能否想办法简化一下过程?
既然我们的RN项目里包含了完整的android工程,何不把android工程导入到android studio 去运行?不但可以同时查看js的日志和native的日志,而且开发android的同学最熟悉AS,利用AS的快捷键和各类插件提升调试效率。
have a try , 答案是肯定的!
执行react-native start 也可以起一个node server,只是它不帮你安装APP到device 。
以上就是我踩坑后整理的方法,按这套组合拳就可以愉快地调试了。水平有限,抛砖引玉,如果你有更好的方法!欢迎拍砖!
此处插播一个广告:拍砖请拍到我们的杏树林开放空间(246078103),期待感兴趣的同学加入。
之后要解决的一些issue
1,关于设备MinSdkVerison
RN 只支持Android4.1.2(API16)以上设备,4.0根据网络数据大概占比0.7比例,随着大部分app已经不支持4.0以下设备了,这块倒还可以接受 , 目前我们的病历夹是3.0(API-11) , 口袋是4.0(API-14)
2,我们的androidRN现在只能通过Debug JS才能渲染出界面,而不能正常的用Reload JS
3,在界面跳转时卡的令人发指
对于这个融合了js & iOS & Android的新物种,尝试和它近距离接触的过程中,发现与单独调试js或者native比起来,调试RN的过程确实很繁琐,怎么个繁琐法?
假设已经配置好了Android开发环境,clone your project,并且已经npm install 了全部的依赖包,到这个姿势就可以开始调试了。
调试Android APP的设备有两种:
模拟器:Android SDK自带的 emulator 或者第三方的 Genymotion
真机
这里重点说说如何用真机调试,模拟器如果仅仅是跑个demo用用还行,
逄伯硝普: 首先确保你的电脑和手机设备在同一个Wi-Fi环境下.其次你需要开启USB调试才能在你的设备上安装你的APP.一定要确定你已经打开设备的USB调试开关!确保你的设备已经被成功连接,可以输入adb devices核实:在右边那列看到...
易县13669177734: 怎样让reactnative在火狐浏览器上调试 - ?
逄伯硝普: 基于React Native的应用抛开结合系统API层面的功能,其本质还是js,使用火狐浏览器的开发者响应模式即可进行一般的界面调试.进入步骤:1、点击右上角的"菜单"按钮;2、在弹出框选择“开发者”;3、在弹出的下一级界面点选“响应式设计模式”即可进入;也可以使用快捷键:ctrl+shift+m.但是涉及到底层交互的,建议还是考虑使用模拟器进行开发调试.
易县13669177734: 怎么安装react native那个到手机上 - ?
逄伯硝普: react-native ios 打包安装到手机中的方法:1、安装nactiv-cli来完成react-native所运行的环境,安装命令如下:npm install -g react-native-cli2、运行源码抓取命令手机React Native的源码和依赖,提供在xcode中创建的项目之用.react-native init ...
易县13669177734: 如何在Windows的命令行下进行程序编译和gdb调试 - ?
逄伯硝普: 1、概念介绍.1、Windows下的cmd就是Windows的命令行终端,其中的一些命令和Ubuntu的有些许区别,不过在这个博客的范畴中没有涉及. 2、Windows的环境变量,大概可以说是如果设置好了在path路径里面了,就可以直接在cmd命令行...
易县13669177734: 形容“生活过得好”的词语有哪些? - ?
逄伯硝普: 国泰民安、天伦之乐、安居乐业、丰衣足食、安家立业 一、国泰民安 [ guó tài mín ān ] 【解释】:泰:平安,安定.国家太平,人民安乐. 【出自】:宋·吴自牧《梦梁录·山川神》:“每岁海潮太溢,冲激州城,春秋醮祭,诏命学士院,撰...
易县13669177734: react native 中ios怎么使用toast - ?
逄伯硝普: ios中没有类似于Androidtoast效果的提示,在提示用户的时候显得尤为不便,因此做了一个类似Toast的功能.UILabel *hintLabel = [[UILabel alloc] initWithFrame:CGRect(80,400,160,40)]; hintLabel.textAlignment = NSTextAlignmentCenter; ...
易县13669177734: 清晨几位晨练的社区居民愉快地谈论着:建筑工人张鹏:“身体是革命的本...?
逄伯硝普: 1、教诲如春风,师恩似海深,桃李满天下,春晖遍四方! 2、 我是一棵绿树,沐浴着智慧的阳光,在您知识的土壤里,茁壮成长.天的深情,地的厚爱,铭刻在我心里,生生世世,永不忘怀. 3、老师,您还记得我吗?那个顽皮而不懂事的孩子....
易县13669177734: 怎么调节情绪 - ?
逄伯硝普: 1)意识调节法 人的意识能够调节情绪的发生与强度,有些思想修养水平高的人往往 比思想修养水平较低的人能够更有效地调节情绪.一个人要努力以意识来控制情绪的变化, 可以用"我应……""我能……"加上要想办的事情来调控自己的...
易县13669177734: 怎样才能调节情绪?
逄伯硝普: 当一个人处于不良情绪状态时,常常可以用下面的方法来调节自己的情绪: (1)意识调节法 人的意识能够调节情绪的发生与强度,有些思想修养水平高的人往往 比思想修养水平较低的人能够更有效地调节情绪.一个人要努力以意识来控制情...