我們希望修正您的錯誤!但許多錯誤未包含必要資訊。因此,我們將著重在具備完整報告的錯誤相關資源。如要提高錯誤修正的機會,請花點時間閱讀這份文件。
如未完成下列步驟,我們會關閉您的錯誤。在這種情況下,只需重新提出其他的資訊即可。
另請注意,Issue Tracker 並非一個協助性的論壇。如果您對如何使用這些工具,或是如何讓 Android 應用程式順利運作,請造訪 stackoverflow.com 或其中一種 Android 開發人員支援資源。
如何回報錯誤
請確認您使用的是最新版本的工具。因此能夠免於審查已修正的錯誤。可以的話,也請在 Android Studio 的 Issue Tracker 中搜尋類似的問題,看看該問題是否已經回報 (通常可使用錯誤訊息作為搜尋關鍵字)。
依序選取「Help」>「Submit Feedback」,在 Android Studio 中開啟錯誤報告。這是啟動錯誤最簡單的方法,因為錯誤報告會將您的 Android Studio 版本、Java 版本和系統資訊填入錯誤報告,因為我們必須正確重現問題。(否則,請在這裡回報錯誤,然後手動新增版本資訊。)
具體說明重現問題的確切步驟。如果我們能在第一次嘗試重現問題,就比較容易解決。請盡可能包含程式碼片段 (或者,請指向目前可用於重現該錯誤的 GitHub 專案)。螢幕擷圖也有助您觀察事物。
說明您原本預期會發生情況,以及您實際觀察到的內容。
根據錯誤選出描述性的匯總。您可能很驚訝的是,有多少錯誤是由「錯誤」、「問題」、「例外狀況」、「無效」等匯總所提出,這使我們難以將問題排序。
對於特定類型的錯誤,我們需要更多資訊:
Android Studio 錯誤的詳細資料
請提供下列 Android Studio 錯誤的更多相關資訊。
如果 IDE 當機
如果 IDE 本身看起來非常緩慢或完全凍結,請產生幾個執行緒傾印,並附加到錯誤報告中。可讓我們瞭解 IDE 的忙碌狀況 (或預期等待的資源)。
如果 IDE 看起來很緩慢,但不凍結,請一併附上idea.log
檔案 (選取「Help」>「Show Log in Files」,或在 Mac 上則選取「Show Log in Finder」。我們可以從中找出 IDE 緩慢的原因,就是一直在將錯誤擲回到記錄檔中。
使用 CPU 分析器診斷速度緩慢情形
如果您在 Android Studio 中發生緩慢問題,CPU 分析器有時會協助診斷問題。請按照下列步驟使用 Android Studio/IntelliJ Performance Testing 外掛程式擷取 CPU 分析器:
安裝外掛程式。您可以直接從 Android Studio 搜尋外掛程式市集中的「效能測試」,也可以前往外掛程式網站下載與 Studio 相容的版本。
建立 CPU 分析器。 如果 Android Studio 看起來很緩慢,請選擇「Start CPU Usage Profiling」,然後重複幾個會造成延遲問題的動作 (程式碼完成、輸入、等待醒目顯示),然後點擊「Stop CPU Usage Profiling.」
分享設定檔。說明框會顯示 CPU 快照檔案名稱,格式為
snapshot-NNN
。請在錯誤報告中分享該快照檔案。
如果 IDE 記憶體不足
有時,很難重現及回報 Android Studio 中的記憶體問題。為解決這個問題,Android Studio 內含記憶體用量報告。您可以將這份報告傳送給 Android Studio 團隊,協助我們找出記憶體問題的來源。
執行記憶體用量報告
如要執行記憶體用量報告,請按照下列步驟操作:
依序按一下選單列中的「Help」>「Analyze Memory Usage」。
Android Studio 會載入堆積,並提示您重新啟動 IDE。如果重新啟動 IDE,記憶體快照資料分析會立即啟動。否則,記憶體快照資料分析會在您下次執行 Android Studio 時啟動。不論是哪一種情況,IDE 都會在記憶體用量報告可供審查時通知您。
按一下「Review Report」。
傳送報告之前,您可以先審查所有資訊。
完成審查後,請將報告的內容複製及貼上到文件中,並在提交錯誤時附加該檔案。
以這種方式提交報告資訊,即可確保 Android Studio 團隊在調查記憶體問題時,使用 Issue Tracker 與您聯絡。
如果 IDE 當機或擲回例外狀況
如果是其他當機類型,請附上 idea.log
檔案。依序選取「Help」>「Show Log in Files」,在 Mac 上則選取「Show Log in Finder」。
產生執行緒傾印
執行緒傾印是 JVM 中所有執行緒的列印工作,而針對每個執行緒,就是所有堆疊框架的列印。這有助您輕鬆查看 IDE 的忙碌情形,特別是假如您每隔兩秒會產生幾個執行緒傾印。
當您回報 IDE 因處理繁雜的 CPU 或 IDE 凍結時較常發生的錯誤時,執行緒傾印可以得知哪個程式碼正在執行過多工作,或哪些執行緒正在爭用資源並導致死結。
JDK 隨附一個名為「jstack」的工具,可用來產生執行緒傾印。首先,您必須先找到 Android Studio 程序的流程 ID。 您可以使用「jps」指令。(jstack 和 jp 都屬於 JDK 的 bin 目錄。如果您安裝了多個 JDK,請使用與執行 Android Studio 相同的版本,您可以從 Android Studio「About」方塊中查看版本。
使用 Linux、Mac:
jps -mv | grep studio
使用 Windows:
jps -mv | findstr studio
舉例來說,印出的長直線如下:
$ jps -mv | grep studio
37605 -Dfile.encoding=UTF-8 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djna.nosys=true ...
左邊的第一個數字是 37605,也就是程序 ID。
接著,您可以產生執行緒傾印並儲存到檔案 dump.txt 中,如下所示:
jstack -l pid >> dump.txt
如果這個方法無效,還有一些其他針對特定平台的方法可以產生執行緒傾印。如需詳細的操作說明,請參閱「IntelliJ 支援」。
建構工具和 Gradle 錯誤的詳細資料
請附上能說明問題的實際或範例專案。這是確保擷取所有必要資訊的最佳方式。請務必移除所有機密資訊,再分享相關資訊。
如果無法分享專案,請指明您目前使用的工具版本 (嘗試先使用最新的穩定版本或預覽版本):
- Android Gradle 外掛程式版本:選取「File」>「Project Structure」,按一下「Project」,然後找到「Android Gradle Plugin Version」。
- Gradle 版本:在上述頁面中找到「Gradle Version」。
- Android Studio 版本:依序選取「Help」>「About」,然後找出 Android Studio 版本。
此外,請提供下列適用資訊:
- 如果從舊版至目前版本行為產生無預期的變化,請指明兩個版本為何。
- 如果建構失敗而發生錯誤,請使用
--stacktrace
選項在指令列中執行建構作業 (例如./gradlew <task> --stacktrace
) 並向我們提供堆疊追蹤。 - 如果建構時間超出預期,請嘗試下列其中一種做法:
- 執行
./gradlew <task> --scan
並分享已產生的 Gradle 建構作業掃描。 - 執行
./gradlew <task> -Pandroid.enableProfileJson=true
並分享<root-project>/build/android-profile
目錄下產生的 Chrome 追蹤記錄檔案。
- 執行
Android Emulator 錯誤詳細資料
收集模擬器詳細資料最簡單的方法,就是在延伸控制項中使用「File a bug」功能:
- 按一下模擬器面板中的「More」
。
在「Extended controls」視窗中,選取左側的「Bug Report」。
這會開啟一個畫面,供您查看錯誤報告的詳細資料,例如螢幕擷圖、AVD 設定資訊和錯誤報告記錄。您可以在這裡輸入重現步驟,或等到下一個步驟產生的報告再輸入。
等待錯誤報告收集完成後,接著按一下「Send to Google」。系統會開啟另一個視窗,方便您將錯誤報告儲存至資料夾,接著開啟瀏覽器,並在 Google Issue Tracker 中建立報告,其中填妥了必要的模擬器詳細資料。
在報告中,完成其他詳細資料,例如重現錯誤的步驟,並附加建立錯誤報告時儲存的檔案。
否則,您必須手動輸入下列詳細資料:
- 模擬器版本。在模擬器中開啟「Extended controls」,按一下「Help」,然後按一下「About」分頁,找到「Emulator version」
- Android SDK 工具版本。選取「Tools」>「SDK Manager」,按一下「SDK Tools」,然後找到「Android SDK Tools」
- 代管 CPU 模型。
- Linux:開啟
/proc/cpuinfo
- Windows:在「My Computer」上按一下滑鼠右鍵,然後選取「Properties」
- Mac:按一下 Apple 圖示,然後按一下「About This Mac」
- Linux:開啟
- 裝置名稱。在「AVD Manager」中,按一下以開啟裝置「Actions」欄中的下拉式選單,然後選取「View Details」(或開啟
$avdname.avd/config.ini
檔案)。找出 hw.device.name 的項目。例如:hw.device.name=Nexus 5