【React Native】文件翻譯閱讀紀錄 - 指南 - 調整測試

by - 上午9:00




Facebook Open Source React Native

調整測試

啟用鍵盤快捷鍵


React Native支持iOS模擬器中的一些鍵盤快捷鍵。它們如下所述。要啟用它們,請打開“硬件”菜單,選擇“鍵盤”,然後確保選中“連接硬件鍵盤”。

訪問應用程序內開發人員菜單

您可以通過搖動設備或在iOS模擬器的“硬件”菜單中選擇“搖動手勢”來訪問開發人員菜單。當您的應用程序在iOS模擬器中運行時,您也可以使用⌘D鍵盤快捷鍵;當在Mac OS上的Android模擬器和Windows和Linux上的Ctrl + M中運行時,您也可以使用⌘M。或者對於Android,您可以運行命令 adb shell input keyevent 82 來打開開髮菜單(82是菜單鍵代碼)。

在發布(生產)版本中禁用了“開發人員菜單”。

重新加載 JavaScript

您無需在每次進行更改時重新編譯應用,都可以立即重新加載應用的JavaScript代碼。為此,請從“開發人員”菜單中選擇“重新加載”。您也可以在iOS模擬器中按⌘R,或在Android模擬器上點按兩次R。

自動重裝

您可以通過在代碼更改時自動重新加載應用來加快開發時間。通過從開發人員菜單中選擇“啟用實時重新加載”,可以啟用自動重新加載。

您甚至可以更進一步,讓您的應用程序繼續運行,因為您可以通過從開發人員菜單啟用熱重新加載,將新版本的文件自動注入JavaScript包。這將允許您通過重新加載來保持應用程序的狀態。
在某些情況下,熱重新加載無法完美實現。如果您遇到任何問題,請使用完全重新加載來重置您的應用。
您需要重建應用程序才能使更改在某些情況下生效:
  • 您已將新資源添加到本機應用程序包中,例如iOS上的Images.xcassets中的圖像或Android上的res / drawable文件夾。
  • 您修改了本機代碼(iOS上的Objective-C / Swift或Android上的Java / C ++)。

應用內錯誤和警告

錯誤和警告顯示在開發版本中的應用程序內部。

錯誤

應用內錯誤顯示在應用內部帶有紅色背景的全屏警報中。此屏幕稱為RedBox。您可以使用console.error()手動觸發一個。

警告

警告將以黃色背景顯示在屏幕上。這些警報稱為YellowBoxes。單擊警報以顯示更多信息或將其關閉。

與RedBox一樣,您可以使用console.warn()來觸發YellowBox。

可以使用console.disableYellowBox = true;在開發期間禁用YellowBoxes。通過設置應忽略的前綴數組,可以以編程方式忽略特定警告:
import {YellowBox} from 'react-native';
YellowBox.ignoreWarnings(['Warning: ...']);
在CI / Xcode中,也可以通過設置IS_TESTING環境變量來禁用YellowBoxes。

在發布(生產)版本中自動禁用RedBoxes和YellowBoxes。

Chrome開發者工具

要在Chrome中調試JavaScript代碼,請從Developer菜單中選擇“Debug JS Remotely”。這將在http:// localhost:8081 / debugger-ui上打開一個新選項卡。

從Chrome菜單中選擇工具→開發人員工具以打開開發人員工具。您也可以使用鍵盤快捷鍵訪問DevTools(在macOS上⌘⌥I,在Windows上按Ctrl Shift I)。您可能還希望啟用Pause On Caught Exceptions以獲得更好的調試體驗。
注意:React Developer Tools Chrome擴展程序不適用於React Native,但您可以使用其獨立版本。閱讀本節以了解具體方法。

使用自定義JavaScript調試器進行調試

要使用自定義JavaScript調試器代替Chrome開發人員工具,請將REACT_DEBUGGER環境變量設置為將啟動自定義調試器的命令。然後,您可以從Developer菜單中選擇“Debug JS Remotely”以開始調試。

調試器將接收所有項目根的列表,以空格分隔。例如,如果設置REACT_DEBUGGER =“node /path/to/launchDebugger.js --port 2345 --type ReactNative”,則命令 node /path/to/launchDebugger.js --port 2345 --type ReactNative / path / to / reactNative / app 將用於啟動調試器。
以這種方式執行的自定義調試器命令應該是短暫的進程,並且它們不應該產生超過200千字節的輸出。

React 開發者工具

您可以使用獨立版本的React Developer Tools來調試React組件層次結構。要使用它,請在全局安裝react-devtools包:
npm install -g react-devtools
現在從終端運行 react-devtools 以啟動獨立的 DevTool s應用程序:
react-devtools
React DevTools
它應該在幾秒鐘內連接到您的模擬器。

注意:如果您希望避免全局安裝,可以將react-devtools添加為項目依賴項。使用npm install --save-dev react-devtools將react-devtools包添加到項目中,然後將“react-devtools”:“react-devtools”添加到package.json中的scripts部分,然後運行npm run react -devtools從項目文件夾中打開DevTools。

與 React Native Inspector 集成

打開應用內開發人員菜單,然後選擇“顯示檢查器”。它將打開一個疊加層,讓您點按任何UI元素並查看有關它的信息:
React Native Inspector
但是,當react-devtools運行時,Inspector將進入特殊的折疊模式,而是使用DevTools作為主UI。在此模式下,單擊模擬器中的某些內容將調出DevTools中的相關組件:
React DevTools Inspector Integration
您可以在同一菜單中選擇“隱藏檢查器”以退出此模式。

檢查組件實例

在Chrome中調試JavaScript時,您可以在瀏覽器控制台中檢查React組件的道具和狀態。

首先,按照Chrome中的調試說明打開Chrome控制台。

確保Chrome控制台左上角的下拉列表顯示debuggerWorker.js。這一步至關重要。

然後在React DevTools中選擇一個React組件。頂部有一個搜索框,可幫助您按名稱查找。一旦您選擇它,它將在Chrome控制台中以 $r 的形式提供,讓您檢查其道具,狀態和實例屬性。
React DevTools Chrome Console Integration

性能監視器

您可以通過在Developer菜單中選擇“Perf Monitor”來啟用性能覆蓋,以幫助您調試性能問題。

在彈出的應用程序中進行調試

訪問控制台日誌

在應用程序運行時,您可以在終端中使用以下命令顯示iOS或Android應用程序的控制台日誌:
$ react-native log-ios
$ react-native log-android
您也可以通過iOS模擬器中的Debug→Open System Log ...或者在設備或模擬器上運行Android應用程序時在終端中運行adb logcat *:S ReactNative:V ReactNativeJS:V來訪問這些內容。
如果您正在使用Create React Native App,則控制台日誌已顯示在與打包程序相同的終端輸出中。

使用Chrome開發者工具在設備上進行調試

如果您使用的是Create React Native App,則已經為您配置了此功能。
在iOS設備上,打開文件RCTWebSocketExecutor.m並將“localhost”更改為計算機的IP地址,然後從Developer菜單中選擇“Debug JS Remotely”。

在通過USB連接的Android 5.0+設備上,您可以使用adb命令行工具設置從設備到計算機的端口轉發:
adb reverse tcp:8081 tcp:8081
或者,從Developer Menu中選擇“Dev Settings”,然後更新“Debug server host for device”設置以匹配您計算機的IP地址。
如果您遇到任何問題,您的某個Chrome擴展程序可能會以意外的方式與調試程序進行交互。嘗試停用所有擴展程序並逐個重新啟用它們,直到找到有問題的擴展程序。

在Android上使用 Stetho 進行調試 

按照本指南啟用Stetho for Debug模式:
  1. 在android / app / build.gradle中,在依賴項部分中添加以下行:
     debugCompile 'com.facebook.stetho:stetho:1.5.0'
     debugCompile 'com.facebook.stetho:stetho-okhttp3:1.5.0'
    
以上將配置Stetho v1.5.0。如果有更新的版本,您可以訪問 http://facebook.github.io/stetho/ 查看。
  1. 創建以下Java類來包裝Stetho調用,一個用於發布,一個用於調試:
    // android/app/src/release/java/com/{yourAppName}/StethoWrapper.java
    
    public class StethoWrapper {
    
        public static void initialize(Context context) {
            // NO_OP
        }
    
        public static void addInterceptor() {
            // NO_OP
        }
    }
    
    // android/app/src/debug/java/com/{yourAppName}/StethoWrapper.java
    
    public class StethoWrapper {
        public static void initialize(Context context) {
          Stetho.initializeWithDefaults(context);
        }
    
        public static void addInterceptor() {
          OkHttpClient client = OkHttpClientProvider.getOkHttpClient()
                 .newBuilder()
                 .addNetworkInterceptor(new StethoInterceptor())
                 .build();
    
          OkHttpClientProvider.replaceOkHttpClient(client);
        }
    }
    
  2. 打開android / app / src / main / java / com / {yourAppName} /MainApplication.java並替換原來的 onCreate 函數:
  public void onCreate() {
      super.onCreate();

      if (BuildConfig.DEBUG) {
          StethoWrapper.initialize(this);
          StethoWrapper.addInterceptor();
      }

      SoLoader.init(this, /* native exopackage */ false);
    }
  1. 在Android Studio中打開項目並解決任何依賴性問題。 將指針懸停在紅線上後,IDE應指導您完成此步驟。
  2. 運行 react-native run-android.
  3. 在新的Chrome標籤頁中,打開:chrome://inspect,然後點擊“Powered by Stetho”旁邊的“Inspect device”項。

調試本機代碼

使用本機代碼時,例如編寫本機模塊時,您可以從Android Studio或Xcode啟動應用程序,並利用本機調試功能(設置斷點等),就像構建標準本機應用程序一樣。



You May Also Like

0 意見