2011-06-02

Android SDK 開發工具指令介紹 adb.exe

系統除錯工具 adb.exe ( Android Debug Bridge ) 是個多功能的工具,讓你可以管理實體設備或虛擬設備上的執行狀況。adb.exe 是一個 Client/Server 型態的系統,包含下列三個部份:

  • 端末程式 ( Client ) : 這個程式是在你的開發環境上運行,可以經由命令列模式 shell 介面下達 adb 指令來操作端末程式。其它 Android 工具如 ADT 或 DDMS  都可以建立一個 adb 端末程式。
  • 伺服程式 ( Server ) : 這個程式是在你的開發環境中的背景執行,伺服程式負責管理介於端末程式和進程程式間的通訊溝通。
  • 進程程式 ( Daemon ) : 這個程式是在你的實體設備或虛擬設備的背景中執行。

adb.exe 指令除了提供應用程式除錯功能外,最重要的功能就是能將編譯好的 Android Package 程式 apk 安裝到實體或虛擬設備上。

另外 adb.exe 除錯工具也支援命令列模式 shell 指令,可以讓你輸入一些指令來管理 Android 系統。

ADB 指令的標準格式 : adb.exe [ -d | -e | -s <serialnumer> ] <command>
-d 表示使用實體連接設備
-e 表示使用模擬設備
-s 有多個設備時,指定設備的序列號碼
例如安裝 HelloWorld.apk 到 Android 模擬器,序號是 5556 的虛擬設備上
adb.exe -s emulator-5556 install helloworld.apk

偵測 ADB 伺服器的資訊
adb.exe devices
可以先看看哪個設備已經和 adb 伺服器連上了,這對於接下來要執行的 adb 指令會有幫助。後面的狀態 device 表示正在執行中,offline 狀態表示在離線狀況,no device 表示沒有裝置在執行。


取得 adb 伺服器的運作狀態
adb.exe get-state
device 運作中, offline 離線, bootloader 開機中

取得 Android 模擬器的執行序列號,如 emulator-5554
adb.exe get-serialno

安裝應用程式 apk 套件

adb.exe [ -s <serialNumber> ] install <APK_PATH>
adb.exe -s emulator-5554 install helloworld.apk
adb.exe install helloworld.apk

移除應用程式 apk 套件
adb.exe [ -s <serialNumber> ] uninstall <PackageName>
adb.exe -s emulator-5554 uninstall com.example.android.helloworld
adb.exe uninstall com.example.android.helloworld
詳細的 package 名稱可以由 Android 作業系統的 /data/data 目錄或 /data/app 目錄來查得。

Android 作業系統命令列模式
adb.exe shell
可以進入 Android 作業系統命令列模式,用來管理和查詢 Android 作業系統的目錄和執行相關的指令。如 ls, cd, mkdir, rmdir, rm, md, mv, exit 等。

上傳檔案到 /sdcard
adb.exe push  <local> <remote>
adb.exe push TestAndroid.png /sdcard

從 /sdcard 下載檔案到本地端
adb.exe pull <remote> <local>
adb.exe pull /sdcard/TestAndroid.png TestAndroid.png

變更 TCP 通訊埠
adb.exe forward tcp:6100 tcp:7100
Android 模擬器預設的 TCP 通訊埠是 6100,若要修改可以使用 adb.exe forward 指令來修改。
adb.exe forward tcp:6100 local:logd

啟動 adb 伺服器
adb.exe start-server

關閉 adb 伺服器
adb.exe kill-server

即時監控 Android 模擬器運作時所產生的除錯記錄
adb.exe logcat

顯示出系統所產生的全部錯誤訊息
adb.exe bugreport
會將 Android 模擬器的 dumpsys, dumpstate 及 logcat 的資料全部顯示出來。

沒有留言: