在Ubuntu上為Android手機抓圖

Android是一個基於Linux的隨身設備作業系統,近期發展頗為快速。而使用智慧型手機,就像使用電腦一樣,偶而會想要為現在的畫面進行抓圖(screenshot),除了可以跟別人分享自己的畫面配置,用在介紹軟體也很適合。

如果要為Android手機進行抓圖,基本上分為兩個方法。第一個是root手機,也就是取得手機的最高權限。然而這個方法除了有一定的技術性,也有可能造成保固失效。因此現在要介紹的是第二個方法,也就是借助Android SDK中提供的工具-DDMS來達到目的。

SDK是所謂的軟體開發套件,顧名思義,就是提供給開發者在開發軟體時可以借助的工具。裡面除了開發時需要的環境外,也提供了測試和查看錯誤訊息的工具。同時,在手機中也提供了「USB偵錯模式」,可以讓開發者觀看程式實際運行時的訊息。

在這篇教學中,算是會把基本的Android SDK環境安裝完成。但老實說,我的目的只是要抓圖,並不需要安裝如Eclipse之類的軟體,但除了下載SDK,執行DDMS需要的ADB似乎還要另外安裝,因此怕麻煩我就直接整個裝下去了。所以對於硬碟空間較不足,或是對於系統有潔癖......(誤)對於不喜歡電腦安裝太多不會用到的程式之人可能不適合。

1:設定UDEV規則
在Uubntu(Kubuntu亦同)底下,我們必須設定UDEV的例外規則,系統才會准許DDMS與手機連線。

首先,我們要先建立/etc/udev/rules.d/90-android.rules這個檔案,請先開啟終端機,並輸入以下指令:
*Ubuntu(Gnome)使用者:
$gksudo gedit /etc/udev/rules.d/90-android.rules

*Kubuntu(KDE)使用者:
$kdesudo kate /etc/udev/rules.d/90-android.rules
然後在這個檔案中輸入以下內容:
SUBSYSTEM=="usb", ATTRS{idVendor}=="(idVendor)", MODE="0666"
其中(idvendor)可以從這裡查詢製造商所對應的代碼。但假如你跟我一樣不清楚的話,可以輸入lsusb指令查詢。我的作法是先不用USB連結手機查詢一次,之後接上後再查一次(接上就好,不用進入隨身碟模式),多出來的項目,就是目標了。以下以我的情況為例子:
rail02000@Cheng-en-Laptop:~$ lsusb              #未接上手機的結果
Bus 002 Device 005: ID 064e:a219 Suyin Corp.
...省略...
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
rail02000@Cheng-en-Laptop:~$ lsusb              #接上手機的結果
Bus 002 Device 007: ID 0489:c001 Foxconn / Hon Hai 這行就是目標!
Bus 002 Device 005: ID 064e:a219 Suyin Corp.
...省略...
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
其中「ID 0489:c001」的前四碼「0489」就是這裡要填的Vendor id,每台手機都可能不同。

最後重新啟動UDEV,就可以先把終端機關掉了。

$sudo service udev restart
2.設定Android SDK
首先,我們先至Android SDK的網站下載軟體,Platform請選擇Linux(i386),下載後請予以解壓縮。
接著,我們要稍微設定一下環境(老實說我不太清楚用途,設定bash的規則?)。請開啟終端機,輸入以下指令
Ubuntu使用者 :$gedit ~/.bashrc
Kubuntu使用者:$kate ~/.bashrc
接著在這個檔案最下面的地方輸入以下內容:
export PATH=${PATH}:(解壓縮後的目錄位址)/tools
以我為例:
export PATH=${PATH}:/home/rail02000/software/android-sdk-linux_x86/tools
3.安裝及設定Eclipse
接著的步驟是要安裝Eclipse和其他Android SDK開發工具。就如前面所說的,這並不是最佳解,但是一個可用的方法。

我們先來安裝Eclipse,因為現在的Ubuntu套件庫中已經有該軟體(至少9.10版以後確定有),因此只要下這一行簡單的指令,也就是我最常用的apt-get,就可以把Eclipse安裝完成。
$sudo apt-get install eclipse
然後我們要開啟Eclipse(通常會放在跟「開發」有關的分類),第一次開啟時,它可以會要求你設定workspace的位置,這只要依個人喜好設定存放位置即可。

接著選擇「Help」→「Install New Software...」
在「work with」的地方輸入「http://download.eclipse.org/releases/galileo」,然後選擇「Add」
接著清空剛剛的欄位,輸入以下內容後按下「Add」
https://dl-ssl.google.com/android/eclipse/
而底下會出現一些開發工具,基本上可以選擇全部安裝,或是像我下圖安裝這兩項,其實也是夠用的。選擇完之後選擇「Next >」
接著Eclipse可能會要求你確認套件來源或授權條款,如果沒什麼問題,基本上按OK就好了。安裝結束後,選擇Finish即可。
再來,回到主畫面後選擇「Windows」→「Preferences」 ,在左邊選擇「Android」,並於右方設定SDK Location。這裡也許大家就很熟悉了,沒錯!這就是跟上面設定bashrc時同樣的路徑。設定完後選擇OK離開。
最後,選擇「Windows」→「Android SDK and AVD Manager」,點選左側「Available packages(可使用的套件)」,然後選擇符合你手機之Android版本的SDK,按下「Install Selected」進行安裝吧!
接著會出現授權條款的確認畫面,沒問題的話選擇「Accept」安裝。接著程式可能會做一些確認或要求重新啟動程式,基本上也是選Yes即可(笑)。等全部安裝完成並重新啟動Eclipse之後,就可以關閉它了。
4.開啟手機的USB偵錯模式
在一連串複雜的設定後,接著終於要用到手機了。我們要先開啟手機的偵錯模式,才可以在下一步讓DDMS得以抓圖。
請先進入手機的設定畫面,並選擇「應用程式」
接著選擇「開發」

並將「USB偵錯」這個選項開啟
現在,你可以透過USB傳輸線將手機與電腦連接了。不過也是一樣,接上即可,不用進入隨身碟的模式。

5.開啟DDMS抓圖
終於到最後一步了!目前可以說「萬事具備,只欠東風」,整個環境都已經設定好了,現在只要開啟DDMS,就可以直接抓圖了。之後如果想要抓圖,也只要重複第4、5步即可。

首先到SDK所在的資料夾,選擇其中的「Tools」資料夾,在裡面就可以找到「ddms」了!
將它開啟之後,可以看到你的手機和目前的狀況。接著選擇主畫面的「Device」→「Screen Capture」
最後終於可以抓圖啦!
其中各個選項:
Refresh:重新載入,也就是重新抓一次圖
Rotate:旋轉圖片
Save:存檔
Copy:複製圖片
Done:完成,關閉視窗
以上1~5步主要是給Ubuntu Linux的使用者建立抓圖(或正確來說,Android程式開發環境?)的方法,單就抓圖時的步驟,也就是第4、5步,在Windows和Mac OS X上也是共通的。

其實這一連串下來,又要裝東西、又要解壓縮,似乎有點複雜,不過還是希望對有需要的人有所幫助。能抓圖後,就可以來介紹一些有趣的小程式,雖然前提是我願意寫。這篇教學其實之前就想寫了,但一直用「作業還沒寫完」和「我要早點睡」這兩個理由推掉。但有了照片拍完3個禮拜都懶得寫的經驗,認知到真正的問題是懶,所以乾脆現在一口氣打完。(笑)


參考資料
How to Install Android SDK (and Take Screenshots) in Ubuntu 9.10
AndroidScreenshots - Community Ubuntu Documentation
How to find a USB Vendor and Device ID? - whirlpool
至於桌布目前是用這張

ありがとうございます!

留言