2015年8月29日 星期六

Google USB Driver驅動程式安裝與相關技巧

至今於Android SDK內提供的模擬器執行速度仍然偏慢,雖有其他替代方案,但多數App還是需要執行在真機(實體的手機)上的。有些品牌的手機使用廠商提供的區動即可,但有些要另外處理。

依照以下步驟檢查與安裝,應可順利完成。目前已實測Win 7、Win 8與Win 8.1,而Win 10的部份仍有些例外情況待排除。

環境確認

我們用最直觀的方式來檢查,首先打開Android Studio,在任何一個專案中點選下方「Android Monitor」若有出現裝置名稱,以及一堆Log資訊即表示手機已與ADB連線,在這種情況下你應該可以直接執行。


同時,請確定手機的連線模式為「媒體裝置連線」且「已啟用USB偵錯」。


有些品牌的手機在安裝完原廠提供的驅動程式後即可 (裝完你就可以看到一堆Log出現於LogCat中),但也有例外的情況,這時我們可以試試Google提供的USB Driver (見下一步驟)。

準備Google USB Driver

首先必須確定電腦內已備有相關檔案,Google USB Driver可藉由SDK Manager取得,打開SDK Manager,確認Extras下的Google USB Driver有無下載,若無,請把它下載下來。


請留意SDK Manager上方的路徑,這些檔案屬於Android SDK,自然集中在某個資料夾,已下載的驅動也會放在這邊,我們稍後會用到它,以本圖為例,路徑即為「E:\Users\user\AppData\Local\Android\android-sdk」。

為了後續安裝方便,我們直接在檔案總管內一步一步展開路徑,到達android-sdk後,再依序開啟extras → google → usb_driver,並把目前這一長串完整路徑複製下來。




為行動裝置更新驅動程式

開啟「裝置管理員」,找到目前連接至電腦的行動裝置,在上面按下右鍵→更新驅動程式軟體。



  選擇「瀏覽電腦上的驅動程式軟體(R)」。



選擇「讓我從電腦上的裝置驅動程式清單中挑選(L)」。



在此對話框填入前面複製的Driver路徑,並按下確定。




直接下一步完成安裝即可,中途可能出現一些警告。



至此已完成Google USB Driver的安裝,可以使用本文上方提供的方式,確認手機是否已連線至ADB,並於LogCat介面中顯示Log。






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 觀念,有些看似枯燥的環節反而是重點,稍不留神可能會讓你陷入瘋狂除錯的迴圈。

2015年8月21日 星期五

Android Log系列方法使用教學(配合Android Studio)

Hello!各位,這是家象首篇行動應用開發的技術文章,未來將規劃為一系列單元,不定期於FB專頁與此處連載。

本次的主題是如何在Android開發中使用Log,並以Android Studio作為開發環境,善用相關功能讓開發過程更為順利。

在開發過程中,可能會想透過類似 console 的介面閱覽變數值,或是在特定程式區段中輸出字串,以便判斷是否有執行,雖然這些事可以透過 debug 模式完成,但Log直覺、易用的特性仍是值得大家試試的!

主要使用的Log家族共約有5種,皆為static method,要使用前必須先 import android.util.Log

Log.v("Tag", "Value");
Log.d("Tag", "Value");
Log.i("Tag", "Value");
Log.w("Tag", "Value");
Log.e("Tag", "Value");
Log.a("Tag", "Value");

註:此處的wtf為What a Terrible Failure之意。

上述method可對應至Android Studio的logcat面板之Log level,方便檢視內容,但不是單一對應,分別有:
Verbose:列出所有Log。
Debug:列出d, I, w, e, wtf。
Info:列出I, w, e, wtf。
Warn:列出w, e, wtf。
Error:列出e, wtf。
Assert:列出wtf。

依上述變化調整level,可達過濾之用,亦可於搜尋框輸入關鍵字搜尋,通常填入「標籤值」。


進階延伸:神秘的第3參數
呼叫Log.d( )時,可以看到有3參數的多載方法,第3參數型別為Throwable,可供傳入Exception 或 Error物件,使程式執行至此除了印出 Log 也一併產生 Exception 或 Error 物件。