在Linux下安裝android開發環境並以USB調試方式鏈接手機進行開發

在Linux下安裝android開發環境並以USB調試方式鏈接手機進行開發

機器型號   HTC Tattoo
固件版本 android1.6
開發宿主系統 MagicLinux2.5(同樣適用於其他Linux發行版本)

本文爲Linux下搭建android開發環境快速指南,並解決了Linux下android手機usb調試設備不能正確識別的問題。

首先要配置android SDK開發環境

1、下載android1.6 SDK
因爲我的固件版本爲android1.6因此下載sdk1.6
http://dl.google.com/android/android-sdk-windows-1.6_r1.zip
http://kugou.me/android-sdk-linux_x86-1.6_r1.tgz

將SDK解壓到
~/android/android-sdk-linux_x86-1.6_r1

2、安裝eclipse
因爲android官方推薦使用eclipse,而且官方也推出了eclipse插件ADT輔助開發。
去eclipse官方網站下載eclipEclipse IDE for Java EE Developers (For Linux 32/64 bit)
eclipse不用安裝,直接解壓到目錄中運行eclipse就可以了。

3、安裝ADT
打開eclipse
Help--> Install New SoftWare..
Add...
添加Location:http://dl-ssl.google.com/android/eclipse
點擊下一步 接受 下載 安裝。

4、配置ADT
安裝ADT後會重啓eclipse
首先需要指定SDK目錄:
Window--> Preferences--> android -->SDK Location:
指定路徑爲~/android/android-sdk-linux_x86-1.6_r1
OK。現在可以新建虛擬機創建android工程進行開發調試了。
關於如何使用eclipse+ADT開發android應用程序在網上有大量的教程,請自己google :)


下面是用USB調試方式連接手機的方法

這裏比較麻煩的是Linux不會自動配置好android手機設備文件的權限。
因此我們需要手動配置,以下操作步驟涉及到udev的配置和設備信息的查看技巧:

1、首先我們需要使用以下命令實時監視系統信息
sudo tail -f /var/log/messages

2、此時在usb接口上連接手(手機需要切換到usb調試模式 設置-->應用程序-->開發-->usb調試)
messages會出現
un 13 18:12:08 MagicLinux kernel: usb 2-1: new high speed USB device using ehci_hcd and address 57
Jun 13 18:12:09 MagicLinux kernel: usb 2-1: New USB device found, idVendor=0bb4, idProduct=0c02
Jun 13 18:12:09 MagicLinux kernel: usb 2-1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Jun 13 18:12:09 MagicLinux kernel: usb 2-1: Product: Android Phone
Jun 13 18:12:09 MagicLinux kernel: usb 2-1: Manufacturer: HTC
Jun 13 18:12:09 MagicLinux kernel: usb 2-1: SerialNumber: HT9A4LG04864
Jun 13 18:12:09 MagicLinux kernel: usb 2-1: configuration #1 chosen from 1 choice
Jun 13 18:12:09 MagicLinux kernel: scsi50 : SCSI emulation for USB Mass Storage devices
Jun 13 18:12:14 MagicLinux kernel: scsi 50:0:0:0: Direct-Access     HTC      Android Phone    0100 PQ: 0 ANSI: 2
Jun 13 18:12:14 MagicLinux kernel: sd 50:0:0:0: Attached scsi generic sg2 type 0
Jun 13 18:12:14 MagicLinux kernel: sd 50:0:0:0: [sdb] Attached SCSI removable disk
Jun 13 18:17:54 MagicLinux kernel: usb 2-1: USB disconnect, address 57
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: new high speed USB device using ehci_hcd and address 58
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: New USB device found, idVendor=0bb4, idProduct=0c02
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: Product: Android Phone
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: Manufacturer: HTC
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: SerialNumber: HT9A4LG04864
Jun 13 18:17:57 MagicLinux kernel: usb 2-1: configuration #1 chosen from 1 choice
Jun 13 18:17:57 MagicLinux kernel: scsi51 : SCSI emulation for USB Mass Storage devices
Jun 13 18:18:02 MagicLinux kernel: scsi 51:0:0:0: Direct-Access     HTC      Android Phone    0100 PQ: 0 ANSI: 2
Jun 13 18:18:02 MagicLinux kernel: sd 51:0:0:0: Attached scsi generic sg2 type 0
Jun 13 18:18:02 MagicLinux kernel: sd 51:0:0:0: [sdb] Attached SCSI removable disk

看到上面紅色字體了嗎,那就是udev識別的usb調試設備標識 idVendor=0bb4, idProduct=0c02
大多數G4 android手機應該都一樣。

3、配置udev規則文件,調整設備文件權限
接下來我們就可以根據前面獲得的usb調試設備標識來調整我們的設備文件的各種屬性以幫助android sdk識別usb調試設備。
在/etc/udev/rules.d下創建規則文件50-android.rules
cat 內容如下:

[sunshine@MagicLinux rules.d]$ cat 50-android.rules
SUBSYSTEMS=="usb",ATTRS{idVendor}=="0bb4",SYMLINK+="android_adb",OWNER="sunshine"

ATTRS{idVendor} 爲上一步獲得的 idVendor 參數
SYMLINK 參數使設備目錄增加一個連接文件指向原設備文件
OWNER爲你當前的用戶,也是你運行adb服務的用戶
(這裏要特別注意,我們的目的就是使android手機調試設備文件的所有者權限與開啓的 adb 服務的所有者權限相一致,這樣usb設備才能被adb服務識別)。

運行以下命令使剛更改的配置生效 (此處針對於Fedora及其衍生版本,其他Linux版本請查看udev man)
sudo udevadm control --reload-rules

4、重新插入USB,生成新的設備文件
這時會在/dev/下出現一個連接文件android_adb,它指向的設備就是你的USB調試的手機設備。

5、開啓adb服務,搜尋usb調試設備
在~/android/android-sdk-linux_x86-1.6_r1/tools下運行
$./adb kill-server
$./adb start-server
$./adb devices                             #列出所有已識別設備
List of devices attached
HT9A4LG04864    device             #這個就是我的手機usb設備了

安裝一個apk試試吧
./adb install *.apk

在eclipse中也可以發現連接的手機設備,進行開發調試,當然前提是adb服務已經識別usb設備。
秀一張eclipse下調試android程序的圖片:



注:獲取設備的udev標識的方法多樣, 上面介紹的方法只是其中一種,也是比較準確的一種 :)
如果你知道usb設備的設備文件,在獲得idVendor時也可以使用其他命令,如:
udevinfo -a -p /sys/class/usb_device/...
udevinfo -e
而且在使用 udev 配置規則文件時可以使用任何一個參數來指定設備。

參考文章
http://androidboss.com/using-android-debug-bridge-adb-in-linux/
http://www.2linessoftware.com/2009/01/31/getting-android-sdk-to-work-with-fedora-10/
以及一些udev配置的相關文章

首屆Google暑期大學生博客分享大賽——2010 Andriod篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章