關於React Native安卓應用調試,我遇到的那些坑

上週開始嘗試使用React Native開發app,在安卓調試環境上踩了很多坑,花費了很多時間。在這裏總結一下,但願你們見到一樣那些坑以後能夠繞道而行。react

首先說明,我是在Mac上進行開發和調試的,所以使用其餘系統的同窗們參考時請自行斟酌。android

1)關於Android虛擬機的選擇shell

RN官方推薦Genymotion,也確實比較好用,不過,我遇到的第一個坑也是今後開始的。在建立虛擬機時,建議你目前不要採用Preview版本的Nexus 5X和6P,其中存在一些bug會致使調試報錯,我花了一天多的時間都沒搞定,後來選擇Nexus 5的穩定版本後很是順利就經過了。react-native

圖片描述

安卓官方的虛擬機也是能夠選擇的,只是界面有點兒簡陋,我沒有找到如何縮放虛擬機界面的解決辦法,因此放棄了。服務器

2)調試中的界面刷新問題app

使用RN開發的一大優點就是修改app中的Javascript代碼時無需從新編譯應用,可是在Genymotion虛擬機中,按照官方的提示按 Command+M 卻沒法喚出開發菜單,這個在Genymotion中的解決辦法是:按照以下圖所示,拖動虛擬機右側的功能分隔線,讓幾個操做按鈕出如今虛擬機右側,這時再按 Command+M 便可順利喚出開發菜單spa

圖片描述

我在使用安卓官方的虛擬機時也遇到了刷新的問題,按F2鍵沒法喚出開發菜單,不過經過命令行輸入:adb shell input keyevent 82 仍是能夠解決這個問題。命令行

3)安卓真機調試中遇到的問題翻譯

真機調試其實挺簡單,首先用USB線將手機與電腦鏈接,並確保手機的usb調試選項打開,此時在項目根目錄下運行:react-native run-android,便可在手機上進行調試。只要晃動手機,便可打開開發者菜單。調試

若是須要經過Wifi鏈接開發服務器,調試時很常見會遇到「Unable to download JS bundle」的錯誤,這時的解決辦法是:

  • 首先確保手機和電腦在同一wifi環境下

  • 在程序主界面,晃動手機,點擊dev settings

  • 點擊最後一項:Debug server host for device

  • 在其中設置電腦的IP和端口,好比 192.168.1.101:8081,而後從新加載JS

還有人給出了一些其餘的解決方案,不過我沒有用上。
http://stackoverflow.com/questions/32572399/react-native-android-failed-to-load-js-bundle

4)關於8081端口占用的問題

若是你同時開發安卓和iOS應用,或者有時在不一樣的應用之間進行切換,編譯時可能會遇到端口8081被佔用的問題,這時能夠運行:lsof -n -i4TCP:8081,檢查端口的使用狀況,必要時能夠經過:kill -9 <端口號>,殺死當前佔用8081端口的進程。

先寫這麼多,想到其餘的再更新。另外我建議在操做時儘可能參考React Native官方的文檔及比較標準的中文翻譯,循序漸進的進行,遇到問題再Google搜索解決方案,而不要一開始就依賴一些快速上手類的文章。

相關文章
相關標籤/搜索