Android adb 常用命令

Android開發環境安裝好之後,需要將adb路徑添加到環境變量(PATH)中,這樣,就可以在命令行下直接使用adb命令了。

需要注意的是,有的命令需要先進入手機的linux系統,然後纔可以使用,即adb shell, …,這裏稱這種命令爲shell命令。另外有的命令可以直接用adb 使用,這裏稱之爲非shell命令。通常兩者可以通用的,下面會分別列出這兩種命令。

常用非Shell命令

連接相關

adb version 查看adb版本
adb devices 查看連接設備
adb connect <android_ip>    連接android設備(需要在同一網段下)
adb kill-server 殺死adb 服務
adb start-server 啓動adb服務
adb reboot 重啓手機

多個Android設備

adb devices 查看連接設備
adb -s <device_name> shell 進入指定的設備shell

adb_more_devices

串口下輸入命令,保證可以adb connect成功
stop adbd
setprop service.adb.tcp.port 5555
start adbd

應用相關

adb shell pm list packages    顯示所有應用信息
adb shell pm list packages -s    顯示系統應用信息
adb shell pm list packages -3   顯示第三方應用信息
adb shell pm list permissions -d -g    顯示權限信息
adb shell pm clear <package_name>    清除數據
adb shell pm install <package_name>    安裝應用
adb shell pm install -r -r <package_name>    保留數據和緩存文件,重新安裝apk
adb shell pm uninstall <package_name>    卸載應用(與adb uninstall相同)

adb install <package_name>    安裝應用
adb install -r <package_name>    保留數據和緩存文件,重新安裝apk
adb uninstall <package_name>    卸載應用

獲取手機系統信息

adb shell cat /proc/cpuinfo     顯示cpu信息
adb get-serialno    獲取序列號
adb shell  cat /sys/class/net/wlan0/address    獲取mac地址
adb shell getprop ro.product.model    獲取設備型號
adb shell wm size    查看屏幕分辨率
adb shell wm density    查看屏幕密度

log相關

adb logcat -v time    帶時間戳的log
adb logcat -b <buffer>    查看不同類型的log,如main,system,radio,events,crash,all.默認爲main log
adb logcat -c    清除log
adb logcat | grep -i "str"    忽略大小寫篩選指定字符串log
adb logcat | grep -iE "str1|str2|str3"    篩選多個字符串
adb logcat > log.txt    打印log輸入到文件

fastboot模式

adb reboot-bootloader
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash android system.img

輸入文本

adb shell input text "str" 在EditText中輸入文本。通常在TV或者盒子上,代替用遙控器輸入
對應shell命令爲:
input text "str"

注:也可以模擬其他事件,如點擊,觸摸等等。

文件相關

adb remount    
adb push <file_path> <dest_path>    從PC向手機端push文件
adb pull <target_path> <dest_path>    從手機端向PC端拉取文件
eg.
adb remount
adb push Hello.apk /system/app/Hello/

截屏與錄屏

截屏:
adb shell screencap -p <output_file>    截取屏幕,並設置圖片存儲路徑
adb pull <output_file> .    拉取該截圖到PC
adb shell rm <output_file>    刪除截圖文件
eg.
adb shell screencap -p /sdcard/screen.png

錄屏:
adb shell screenrecord <output_file> 錄屏

dumpsys 查看信息相關

adb shell dumpsys    顯示當前android系統信息(四大組件,內容太多,一般使用重定向)
adb shell dumpsys > info.txt 顯示當前android系統信息(文件重定向)

activity:
adb shell dumpsys activity    顯示當前所有activity信息
adb shell dumpsys activity top    查看當前應用的 activity 信息

package:
adb shell dumpsys package [package_name] 查看應用信息

內存:
adb shell dumpsys meminfo [package_name/pid] 查看指定進程名或者是進程 id 的內存信息

數據庫:
adb shell dumpsys dbinfo [package_name] 查看指定包名應用的數據庫存儲信息(包括存儲的sql語句)

am 相關

啓動Activity:
adb shell am start -n <package_name>/<package_name>.<activity_name>
eg.
adb shell am start -n com.example.hello/com.example.hello.MainActivity

啓動Service:
adb shell am startservice -n <package_name>/<package_name>.<service_name>    啓動service
eg.
adb shell am startservice -n com.example.test/com.example.test.TestService

發送廣播:
adb shell am broadcast -a <action>    發送廣播

查看網絡信息

adb shell netcfg    查看設備的 ip 地址
adb shell netstat    查看設備的端口號信息

屬性信息

adb shell getprop [prop_name]    查看屬性信息
adb shell setprop <prop_name> <value>    設置屬性值

Monkey測試

adb shell monkey [options] <event-count>
adb shell monkey -p <package_name> -v <event_number>
對指定應用,做evnet_number個隨機僞事件

查看進程信息

adb shell ps    查看進程信息

常用shell命令

在命令行下先執行adb shell,進入linux系統,然後再執行這些命令。
通常,大部分非shell命令都對應shell命令。這個使用者靈活掌握即可。

eg.

adb shell logcat 對應 logcat

adb shell getprop 對應 getprop

adb shell am start -n 對應 am start -n

其他

顯示cpu信息:
這裏寫圖片描述

啓動一個Activity

前提,在真機上,該Activity在AndroidManifest.xml中的exported屬性必須爲true纔可以用adb shell 啓動,在模擬器上不需要。即android:exported="true"。exported的default值是false的。
啓動一個Activity:
adb shell am start -n <package name>/<activity name>
eg.

adb shell am start -n com.example.hello/com.example.hello.MainActivity

或者

adb shell am start -n com.example.hello/.MainActivity

在真機上exported爲false的時候,執行命令會出現異常:

adb shell am start -n com.example.hello/.activity.HelloActivity
Starting: Intent { cmp=com.example.hello/.activity.HelloActivity }
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.example.hello/.activity.HelloActivity } from null (pid=9098, uid=2000) not exported from uid 10221
    at android.os.Parcel.readException(Parcel.java:1546)
    at android.os.Parcel.readException(Parcel.java:1499)
    at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2642)
    at com.android.commands.am.Am.runStart(Am.java:766)
    at com.android.commands.am.Am.onRun(Am.java:305)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
    at com.android.commands.am.Am.main(Am.java:97)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:284)

adb 截圖命令

截圖保存到SD卡里再導出

$ adb shell screencap -p /sdcard/screen.png
$ adb pull /sdcard/screen.png
$ adb shell rm /sdcard/screen.png

這種方法比較麻煩,需要3步:

  1. 截圖保存到sdcard
  2. 將圖片導出
  3. 刪除sdcard中的圖片

截圖直接保存到電腦(Windows only)

$ adb shell screencap -p | sed 's/\r$//' > screen.png

執行adb shell 將\n轉換\r\n, 因此需要用sed刪除多餘的\r

使用alias

修改~/.bashrc,添加一句:

alias adb-screencap="adb shell screencap -p | sed 's/\r$//'"

執行source ~/.bashrc後,可以直接使用
adb-screencap > screen.png 截圖並保存到電腦上

參考:

http://blog.csdn.net/jiangwei0910410003/article/details/73385819

http://blog.csdn.net/wirelessqa/article/details/29187339

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