網路檢查器會根據時間軸列出即時網路活動,顯示收發的資料。透過網路檢查器,您可以查看應用程式轉移資料的方式和時間點,並適當改進基礎程式碼。
如要開啟網路檢查器,請按照下列步驟操作:
- 在 Android Studio 導覽列中,依序選取「View」>「Tool Windows」>「App Inspection」。在「App Inspection」視窗自動連線至應用程式程序後,從分頁中選取「Network Inspector」。
- 如果「App Inspection」視窗未自動連線至應用程式程序,您可能需要手動選取程序。
- 在「App Inspection」視窗中選取要檢查的裝置和應用程式程序。
網路檢查器總覽
「Network Inspector」視窗頂端會顯示活動時間軸。按住並拖曳即可選取時間軸的時段,並檢查流量。
![「Network Inspector」視窗](https://developer.android.com/static/studio/images/debug/network-profiler.png?authuser=9&hl=zh-tw)
詳細資料窗格中的時間圖表有助於找出可能發生效能問題的部分。黃色部分的開頭對應至所傳送要求的第一個位元組,藍色部分的開頭對應至所收到回應的第一個位元組,藍色部分的結尾則對應至所收到回應的最後一個位元組。
在時間軸下方的窗格中,選取下列任一分頁標籤,即可進一步瞭解時間軸中所選時段內的網路活動:
- Connection View:列出應用程式所有 CPU 執行緒在時間軸中所選時段內傳送或接收的檔案。您可以檢查每項要求的大小、類型、狀態和傳輸時間。如要將這份清單排序,請點選任一欄標題。您也可以查看時間軸中所選時段的細目資料,當中會列出每個檔案的傳送或接收時間。
Thread View:顯示應用程式各 CPU 執行緒的網路活動。如圖 2 所示,這個檢視畫面可讓您查看負責處理每項網路要求的執行緒。
圖 2:在「Thread View」中依應用程式執行緒檢查網路要求。 Rules View:規則可讓您測試遇到有不同狀態碼、標頭和內文的回應時,應用程式會有何種行為。建立新規則時,請為新規則命名,然後在「Origin」子區段下方加入您要攔截的回應來源相關資訊。您可以在「Response」子區段中指定修改回應的位置及方式。例如,您可以設定規則,執行含有特定狀態碼的回應,並修改該狀態碼。在「Header rules」和「Body rules」子區段中,建立子規則來新增或修改回應標頭或主體。系統會依照規則的列出順序進行套用。勾選規則旁的「Active」方塊,選擇要啟用或停用的規則。
圖 3. 網路檢查器的「Rules」和「Rule Details」窗格。
在「Connection View」或「Thread View」中按一下要求名稱,即可檢查所傳送或接收資料的詳細資訊。接著點選各分頁標籤,就能查看回應標頭與主體、要求標頭及主體,或是呼叫堆疊。
在「Response」和「Request」分頁中,按一下「View Parsed」連結即可顯示套用格式的文字,點選「View Source」連結則可顯示原始文字。
![切換原始文字和套用格式的文字](https://developer.android.com/static/studio/images/profile/network-profiler-text_2X.png?authuser=9&hl=zh-tw)
除了顯示 HttpsURLConnection
的網路要求外,網路檢查器也支援 OkHttp
。Retrofit 等某些第三方網路程式庫會在內部使用 OkHttp
,因此網路檢查器可讓您查看這些程式庫的網路活動。
Now In Android 範例應用程式
使用 OkHttp
執行網路作業,非常適合用來檢視
動作。
如果使用 HttpsURLConnection
API,您只會在「Request」分頁中看到透過 setRequestProperty
方法加入程式碼的標題,如以下範例所示:
Kotlin
val url = URL(MY_URL_EN) val urlConnection: HttpsURLConnection = url.openConnection() as HttpsURLConnection ... // Sets acceptable encodings in the request header. urlConnection.setRequestProperty("Accept-Encoding", "identity")
Java
URL url = new URL(MY_URL_EN); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); //... // Sets acceptable encodings in the request header. urlConnection.setRequestProperty("Accept-Encoding", "identity");
排解網路連線問題
如果網路檢查器偵測到流量值,但無法辨識任何支援的網路要求,您會收到以下錯誤訊息:
**Network Inspector Data Unavailable:** There is no information for the
network traffic you've selected.
針對網路連線,網路檢查工具目前僅支援 HttpsURLConnection
和 OkHttp
程式庫。如果您的應用程式使用其他網路連線程式庫,您可能無法在網路檢查器中查看網路活動。若出現上述錯誤訊息,但您的應用程式確實使用 HttpsURLConnection
或 OkHttp
,您可以回報錯誤,也可以搜尋 Issue Tracker,在涉及自身問題的現有報表中提供錯誤相關資訊。此外,還能透過這些資源尋求有關其他程式庫的支援。