react-native調試不友好,不像web端可以直接定位到具體組件,還可以選擇相應的代碼塊。
主要調試工具可以配合使用Android Studio,Chrome,終端,真機提示等,我用的IDE是VS Code,一般使用Developer Menu中的debug in remotely,根據打印在Chrome控制檯的信息進行開發。
這篇詳細的關於Developer Menu的文章,比官網描述詳細,值得一看
React Native調試技巧與心得
補充幾點:
- 在虛擬機上進行調試可以通過雙擊R鍵進行reload
- 調試時只能有且只有一個機器(虛擬機或真機)連接可以使用
adb devices
來查看當前連接設備。
在Android5.0以上設備上,將手機通過usb連接到你的電腦,然後通過adb命令行工具運行如下命令來設置端口轉發
adb reverse tcp:8081 tcp:8081
而且,除了搖晃手機,還可以使用adb shell input keyevent 82
來調出Developer Menu
如果你的終端無法識別adb命令,應在終端或者iTerm界面運行如下命令:
open ~/.bash_profile
這樣就開了配置文件,然後在zshrc文件裏面添加如下配置:
export ANDROID_HOME=/Users/*****/Library/Android/sdk(後面配置的是你係統存放SDK的目錄)
然後使用下面的命令保存並應用文件
source ~/.bash_profile(這個表示默認把系統的配置文件拿過來了)
然後就OK了,小夥伴們可以愉快的玩耍了 - 有時候Debug JS Remotely無法連接,此時可以先檢查Chrome中打開了幾個調試頁面,只保留其中一個並檢查網址是否是
http://localhost:8081/debugger-ui
,因爲有時候localhost會被替換成ip地址而無法連接,如果還不能連接,保證該網頁開啓的情況下,再重新跑react-native run-android/ios
命令 - 如果你想在Chrome的network面板看到應用網絡信息,可以在react-native\Libraries\Core\InitializeCore.js -> 搜索 XMLHttpRequest,註釋掉
polyfillGlobal('XMLHttpRequest', () => require('XMLHttpRequest'));
再在真機或模擬器reload 查看Network面板,此時就可以查看到我們的fetch請求了。需要注意的是,當我連接公司內網並需要在請求中加入token的時候,註釋掉這行代碼會導致錯誤。