Android的ADB工具使用
在SDK的Tools文件夾下包含著Android模擬器操作的重要命令A(yù)DB,ADB的全稱為Android Debug Bridge,就是調(diào)試橋的作用,借助這個工具,我們可以管理設(shè)備或手機模擬器的狀態(tài)?,還可以進行以下的操作:
(1)快速更新設(shè)備或手機模擬器中的代碼,如應(yīng)用或Android系統(tǒng)升級;
(2)在設(shè)備上運行Shell命令;
(3)管理設(shè)備或手機模擬器上的預(yù)定端口;
(4)在設(shè)備或手機模擬器上復(fù)制或粘貼文件。
?
ADB的工作方式比較特殊采用監(jiān)聽Socket TCP 5554等端口的方式讓IDE和Qemu通信,默認(rèn)情況下ADB會daemon相關(guān)的網(wǎng)絡(luò)端口,所以當(dāng)我們運行Eclipse時ADB進程就會自動運行,在Eclipse中通過DDMS來調(diào)試Android程序;也可以通過手動方式調(diào)用,以下為一些常用的操作供參考。
?
1.版本信息
D:\unsetup\android-sdk-windows-1.0_r1\tools>adb version
Android?Debug Bridge?version 1.0.20
2.安裝應(yīng)用到模擬器?
????adb install [-l] [-r] <file>。
其中file是需要安裝的apk文件的決定路徑。
?
3.卸載已經(jīng)安裝的應(yīng)用
(1)方法1:
?????adb uninstall [-k] <package>。
其中package表示需要卸載的應(yīng)用的包的名字,k表示是否保留應(yīng)用的配置信息和cache數(shù)據(jù)。
?
(2)手動刪除。
adb shell
cd /data/app
rm app.apk
4.進入設(shè)備或模擬器的Shell
adb shell
????通過上面的命令,就可以進入設(shè)備或模擬器的Shell環(huán)境中,在這個Linux?Shell中,可以執(zhí)行各種Linux?的命令,另外如果只想執(zhí)行一條Shell命令,可以采用以下的方式:
adb shell [command]
如:
D:\unsetup\android-sdk-windows-1.0_r1\tools>adb shell df
/dev: 49564K total, 0K used, 49564K available (block size 4096)
/sqlite_stmt_journals: 4096K total, 0K used, 4096K available (block size 4096)
/system: 69120K total, 65508K used, 3612K available (block size 4096)
/data: 76544K total, 63684K used, 12860K available (block size 4096)
/cache: 69120K total, 1244K used, 67876K available (block size 4096)
?
5.轉(zhuǎn)發(fā)端口
可以使用?forward?命令進行任意端口的轉(zhuǎn)發(fā)—一個模擬器/設(shè)備實例的某一特定主機端口向另一不同端口的轉(zhuǎn)發(fā)請求。下面演示了如何建立從主機端口7100到模擬器/設(shè)備端口8100的轉(zhuǎn)發(fā)。
adb forward tcp:7100 tcp:8100
同樣地,可以使用ADB來建立命名為抽象的UNIX域套接口,上述過程如下所示:
adb forward tcp:7100 local:logd
6.復(fù)制文件
可以使用adb pull ,push?命令將文件復(fù)制到一個模擬器/設(shè)備實例的數(shù)據(jù)文件或是從數(shù)據(jù)文件中復(fù)制。install?命令只將一個apk文件復(fù)制到一個特定的位置,與其不同的是,pull?和?push?命令可讓用戶復(fù)制任意的目錄和文件到一個模擬器/設(shè)備實例的任何位置。
從模擬器或者設(shè)備中復(fù)制文件或目錄,使用如下命:
adb pull <remote> <local>
將文件或目錄復(fù)制到模擬器或者設(shè)備,使用如下命令:
adb push <local> <remote>
在這些命令中,?<local>?和<remote>?分別指通向自己的發(fā)展機(本地)和模擬器/設(shè)備實例(遠(yuǎn)程)上的目標(biāo)文件/目錄的路徑。
下面是一個例子::
adb push foo.txt /sdcard/foo.txt
7.搜索模擬器/設(shè)備的實例
????取得當(dāng)前運行的模擬器/設(shè)備的實例的列表及每個實例的狀態(tài),如:
D:\unsetup\android-sdk-windows-1.0_r1\tools>adb devices
List of devices attached
HT843GZ03305 ? ?device
8.查看bug報告?
D:\unsetup\android-sdk-windows-1.0_r1\tools>adb bugreport
========================================================
== dumpstate
========================================================
------ SYSTEM LOG ------
04-12 16:59:46.521 D/ShowTrack(23968): MyOverlay::darw..mDefCaption=I'm Here.
04-12 16:59:46.531 D/ShowTrack(23968): MyOverlay::darw..mDefCaption=I'm Here.
04-12 16:59:46.531 D/ShowTrack(23968): MyOverlay::darw..mDefCaption=I'm Here.
04-12 16:59:46.541 D/ShowTrack(23968): MyOverlay::darw..mDefCaption=I'm Here.
04-12 16:59:47.391 I/ActivityManager( ? 55): Starting activity: Intent { comp={com.iceskysl.iTracks/com.iceskysl.iTracks.iTracks} }
04-12 16:59:47.641 D/iTracks (23968): renderListView.
04-12 16:59:47.671 D/ShowTrack(23968): MyOverlay::darw..mDefCaption=I'm Here.
04-12 16:59:47.681 D/ShowTrack(23968): MyOverlay::darw..mDefCaption=I'm Here.
9.記錄無線通訊日志
????一般來說,無線通訊的日志非常多,在運行時沒必要去記錄,但我們還是可以通過命令,設(shè)置記錄:
D:\unsetup\android-sdk-windows-1.0_r1\tools>adb shell
# logcat -b radio
logcat -b radio
D/HTC_RIL ( ? 30): (t=1239390296)<< 0
D/HTC_RIL ( ? 30): (t=1239390296)>> AT@HTCPDPFD=0
D/HTC_RIL ( ? 30): (t=1239390296)<< 0
D/HTC_RIL ( ? 30): (t=1239390296)>> AT+CSQ
D/HTC_RIL ( ? 30): (t=1239390296)<< +CSQ: 29,99
D/HTC_RIL ( ? 30): 0
D/HTC_RIL ( ? 30): (t=1239390296)>> AT+CREG?
D/HTC_RIL ( ? 30): (t=1239390296)<< +CREG: 2,3
D/HTC_RIL ( ? 30): 0
10.獲取設(shè)備的ID和序列號
adb get-product
D:\unsetup\android-sdk-windows-1.0_r1\tools>adb get-serialno
HT843GZ03305
?
?
11.通過遠(yuǎn)程Shell端運行AQLite3連接數(shù)據(jù)庫
通過ADB遠(yuǎn)程Shell端,可以通過Android的軟AQLite?3?命令程序來管理數(shù)據(jù)庫。SQLite?3?工具包含了許多使用命令,例如,.dump?顯示表的內(nèi)容,.schema?可以顯示出已經(jīng)存在的表空間的SQL CREATE結(jié)果集。SQLite3還允許遠(yuǎn)程執(zhí)行sql命令。
?
通過SQLite?3 ,?按照前面的方法登錄模擬器的遠(yuǎn)程Shell端,然后啟動工具就可以使用SQLite?3?命令。當(dāng)SQLite?3?啟動以后,還可以指定想查看的數(shù)據(jù)庫的完整路徑。模擬器/設(shè)備實例會在文件夾中保存SQLite3數(shù)據(jù)庫/data/data/<package_name> /databases /。
?
示例如下:
$ adb ?shell
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions
.... enter commands, then quit...
?
sqlite> .exit
當(dāng)啟動SQLite?3的時候,就可以通過Shell端發(fā)送SQLite?3,命令了。用exit?或<Ctrl+D>組合鍵退出ADB遠(yuǎn)程Shell端。
?
?
?
12.ADB命令列表
下列表格列出了adb支持的所有命令,并對它們的意義和使用方法做了說明.
| Category | Command | Description | Comments |
| Options | -d | 僅僅通過USB接口來管理abd | 如果不只是用USB接口來管理則返回錯誤 |
| -e | 僅僅通過模擬器實例來管理adb | 如果不是僅僅通過模擬器實例管理則返回錯誤 | |
| -s <serialNumber> | 通過模擬器/設(shè)備的允許命令號碼來發(fā)送命令來管理adb (如?“emulator-5556″) | 如果沒有指定號碼,則會報錯 | |
| General | devices | 查看所有連接模擬器/設(shè)備的設(shè)施的清單 | 查看?Querying for Emulator/Device Instances?獲取更多相關(guān)信息 |
| help | 查看adb所支持的所有命令 | ? | |
| version | 查看adb的版本序列號 | ? | |
| Debug | logcat [<option>] [<filter-specs>] | 將日志數(shù)據(jù)輸出到屏幕上 | ? |
| bugreport | 查看bug的報告,如dumpsys ,dumpstate ,和logcat?信息 | ? | |
| jdwp | 查看指定設(shè)施的可用的JDWP信息 | 可以用?forward jdwp:<pid>端口映射信息來連接指定的JDWP進程,例如: | |
| Data | install <path-to-apk> | 安裝Android為(可以模擬器/設(shè)施的數(shù)據(jù)文件.apk指定完整的路徑) | ? |
| pull <remote> <local> | 將指定的文件從模擬器/設(shè)施拷貝到計算機上 | ? | |
| push <local> <remote> | 將指定的文件從計算機上拷貝到模擬器/設(shè)備中 | ? | |
| Ports and Networking | forward <local> <remote> | 用本地指定的端口通過Socket方法遠(yuǎn)程連接模擬器/設(shè)施 | 端口需要描述下列信息:
|
| ppp <tty> [parm]… | 通過USB運行ppp:
需要提醒的不能自動啟動PDP連接 | ? | |
| Scripting | get-serialno | 查看adb實例的序列號 | 查看?Querying for Emulator/Device Instances?可以獲得更多信息 |
| get-state | 查看模擬器/設(shè)施的當(dāng)前狀態(tài) | ||
| wait-for-device | 如果設(shè)備不聯(lián)機就不讓執(zhí)行,也就是實例狀態(tài)是?device?時 | 可以提前把命令轉(zhuǎn)載在adb的命令器中,在命令器中的命令在模擬器/設(shè)備連接之前是不會執(zhí)行其他命令的,示例如下: adb wait-for-device shell getprop 需要提醒的是,這些命令在所有的系統(tǒng)啟動起來之前是不會啟動adb的,所以在所有的系統(tǒng)啟動起來之前也不能執(zhí)行其他的命令,例如,運用install?的時候就需要Android包,這些包需要系統(tǒng)完全啟動,例如: adb wait-for-device install <app>.apk 上面的命令只有連接上了模擬器/設(shè)備連接上了adb服務(wù)才會被執(zhí)行,而在Android系統(tǒng)完全啟動前執(zhí)行就會有錯誤發(fā)生 | |
| Server | start-server | 選擇服務(wù)是否啟動adb服務(wù)進程 | ? |
| kill-server | 終止adb服務(wù)進程 | ? | |
| Shell | shell | 通過遠(yuǎn)程Shell命令來控制模擬器/設(shè)備實例 | 查看獲取更多信息?for more information |
| shell [<shellCommand>] | 連接模擬器/設(shè)施執(zhí)行Shell命令,執(zhí)行完畢后退出遠(yuǎn)程Shell端l |
?
?--------------------------------------------------------------------
PS: 歡迎關(guān)注公眾號"Devin說",會不定期更新Java相關(guān)技術(shù)知識。
--------------------------------------------------------------------
總結(jié)
以上是生活随笔為你收集整理的Android的ADB工具使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10怎么装SolidWor
- 下一篇: 常用电子元件基础知识