2015年8月24日 星期一

Android開發:如何找到錯誤

許多初學者初次開發 App,在經過一番努力後,出現的竟是「很抱歉,OOO已停止」的訊息,同時不知問題出在哪?錯誤訊息在哪?也不知道該如何詢問。

今次介紹如何利用 Android Studio (其他IDE也可) 提供的功能,協助我們找到問題點,將著重在Log的查閱與追蹤。

程式錯在哪?

會出現「很抱歉,OOO已停止」基本上都屬於嚴重的錯誤,應用程式無法繼續執行,此時應立即查閱 LogCat 介面的資訊,為了方便閱讀可以將 Log level 定為 Error在 Android Studio 中,展開下方的「Android Monitor」並切換至「logcat」即可


如上圖的紅字部分,即是目前需要解決的問題。Log 中藍色字樣是可以連結的,點按後將自動跳至出問題的程式列,以本例而言,MainActivity.java 的第 34 行有問題,點按後將直接跳至該處。

錯誤訊息要出現在 LogCat 有個條件,即 App 的執行環境必須與 ADB(Android Debug Bridge) 連結,簡單來說,有兩種可能:

1.  在 Android Studio (或其他IDE)直接將程式執行於已連結至電腦的行動裝置。
2.  將 App 執行於電腦中的模擬器,若你的模擬器是藉由 IDE 提供的按鈕啟動,應會自動連接。

找到錯誤訊息了,接下來呢?

在本例中,於 MainActivity.java 檔案中的第34行發生 OutOfMemoryError

一旦確認錯誤的地方,你有幾個選擇,除了自身經驗外,相信找 Google 是個便捷、快速的方法,Android 相關議題至今已在網路上累積相當可觀的資料量,除非是隨著 IDE 更新而引起的新問題,多數的問題都是能找到解決方案的。

當然,直接詢問有經驗者也可以,亦需給予必要的資訊(錯誤訊息),在此要提的是,所謂錯誤訊息並不是「很抱歉,OOO已停止」這只是個提醒,看不出錯在哪,以這些字句來詢問是得不到答案的。


後紀

測試、除錯一直是軟體開發的重要環節,也是個困難的問題,本文僅提供概略的方向,讓初學者有些參考依據,不致於在發生錯誤時停滯不前。

筆者曾協助解決一些應用開發的問題,但他們遇到的問題往往屬於 Java 的範疇,尚未牽扯至 Android 的特殊議題。欲使用 Java 開發原生程式的開發者,務必加強 Java 觀念,有些看似枯燥的環節反而是重點,稍不留神可能會讓你陷入瘋狂除錯的迴圈。

沒有留言:

張貼留言