首先android是一個開源操作系統,並基於linux開源操作系統,Android繼承了Linux的特性。
1、什么是adb?
adb的全稱為Android Debug Bridge,是一個調試工具。借助它,開發人員可以完成很多需要再手機端操作所需完成的事情。
2. 什么是shell?
操作系統運行的本身其實並不需要人來控制。但人需要告訴操作系統做什么,這個交互程序,就被稱為shell。
這里我把shell分成三種:
•圖形shell:
這種shell有很多種,windows的Explorer.exe,Linux的Gnome/Kde ....
在windows看到的桌面,開始菜單,也是一種圖形shell
•終端Shell:
終端Shell除了windows下的cmd.exe已經弱化到殘廢的地步,其他的操作系統都是比較強悍的;
終端Shell最大的特點是字符操作,沒有圖形,試想,如果你的操作系統顯卡驅動崩潰了,繪圖功能不舉了,這就是最后的稻草了。
事實上,幾乎所有的顯卡驅動都是在終端Shell下編寫,然后用於繪制圖形Shell....
特別是在linux\mac\android下面,終端Shell是灰常的強大的。
如:bash\zsh\....
•其他Shell:
3.adb 常用命令 http://blog.csdn.net/yunnywu/article/details/7975451
(1)Adb shell 直接進入adb shell模式
(2)Adb push 電腦端文件 手機上文件 將電腦端的文件拷貝到手機上
(3)adb pull 手機上文件 電腦端文件 將手機上文件復制到電腦端
【復制】
1. 查看設備
adb devices
這個命令是查看當前連接的設備, 連接到計算機的android設備或者模擬器將會列出顯示
2. 安裝軟件
adb install <apk文件路徑>
這個命令將指定的apk文件安裝到設備上
參數“-r”,它是更新安裝的意思,
參數 -s ,安裝到sdcard.
如: adb install com.sina.weibo.apk
3. 卸載軟件
adb uninstall <包名>
如果加 -k 參數,為卸載軟件但是保留配置和緩存文件.
如: adb uninstall com.sina.weibo.apk
4. 登錄設備shell
adb shell
adbshell <command命令>
這個命令將登錄設備的shell.
后面加<command命令>將是直接運行設備命令, 相當於執行遠程命令
如: adb shell cat /proc/kmsg
5. 從電腦上發送文件到設備
adb push <本地路徑> <遠程路徑>
用push命令可以把本機電腦上的文件或者文件夾復制到設備(手機)
如: adb push /local/build.prop /system/build.prop
6. 從設備上下載文件到電腦
adb pull <遠程路徑> <本地路徑>
用pull命令可以把設備(手機)上的文件或者文件夾復制到本機電腦
如: adb /system/build.prop /local/
7. 同步更新
adb sync [ <directory> ]
如果不指定目錄,將同時更新 /data 和 /system/
如: adb sync /data/
8. 顯示幫助信息
adb help
這個命令將顯示幫助信息
9. 重新掛載
adb remount
重新掛載系統 分區 用於讀寫
10. 啟 動和關閉
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
11. 重啟設備
adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
12. 查看Log
[adb] logcat [<option>] ... [<filter-spec>] ..
-b <buffer> 加載一個可使用的日志緩沖區供查看,比如event 和radio . 默認值是main 。具體查看Viewing Alternative Log Buffers.
-c 清楚屏幕上的日志.
-d 輸出日志到屏幕上.
-f <filename> 指定輸出日志信息的<filename> ,默認是stdout .
-g 輸出指定的日志緩沖區,輸出后退出.
-n <count> 設置日志的最大數目<count> .,默認值是4,需要和 -r 選項一起使用。
-r <kbytes> 每<kbytes> 時輸出日志,默認值為16,需要和-f 選項一起使用.
-s 設置默認的過濾級別為silent.
-v <format> 設置日志輸入格式,默認的是brief 格式
where <tag> is a log component tag (or * for all) and priority is:
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent (supress all output)
'*' means '*:d' and <tag> by itself means <tag>:v
13、查看bug報告:
adb bugreport
常用adb shell命令:
1. 按鍵事件
input text <string> input a string to device
input keyevent <event_code> send a Key Event to device
如: adb shell input keyevent 26 (PowerKey)
2. am命令
am start <INTENT> : start an Activity
如 :
am start -n com.android.calculator/com.android.calculator2.Calculator
am broadcast <INTENT>
am startservice <INTENT>
am force-stop <PACKAGE>
am kill <PACKAGE>
am kill-all
am broadcast <INTENT>
"<INTENT> specifications include these flags and arguments:\n" +
" [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]\n" +
" [-c <CATEGORY> [-c <CATEGORY>] ...]\n" +
" [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]\n" +
" [--esn <EXTRA_KEY> ...]\n" +
" [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]\n" +
" [--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]\n" +
" [--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]\n" +
" [--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]\n" +
" [--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]\n" +
" [--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]\n"
" [-n <COMPONENT>] [-f <FLAGS>]\n" +
" [--grant-read-uri-permission] [--grant-write-uri-permission]\n" +
" [--debug-log-resolution] [--exclude-stopped-packages]\n" +
" [--include-stopped-packages]\n" +
" [--activity-brought-to-front] [--activity-clear-top]\n" +
" [--activity-clear-when-task-reset] [--activity-exclude-from-recents]\n" +
" [--activity-launched-from-history] [--activity-multiple-task]\n" +
" [--activity-no-animation] [--activity-no-history]\n" +
" [--activity-no-user-action] [--activity-previous-is-top]\n" +
" [--activity-reorder-to-front] [--activity-reset-task-if-needed]\n" +
" [--activity-single-top] [--activity-clear-task]\n" +
" [--activity-task-on-home]\n" +
" [--receiver-registered-only] [--receiver-replace-pending]\n" +
" [--selector]\n" +
" [<URI> | <PACKAGE> | <COMPONENT>]\n"
更多詳細用法請見am 使用幫助.
啟動一個 Activity:
格式:
adb shell am start -n 包名/包名+類名(-n 類名,-a action,-d date,-m MIME-TYPE,-c category,-e 擴展數據,等)。
實例1:
C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera
Starting: Intent { cmp=com.android.camera/.Camera }
Starting: Intent { cmp=com.android.camera/.Camera (has extras) }
Starting: Intent { cmp=com.android.camera/.Camera }
實例2:(帶extra 的 intent)
C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera -e abc hello
Starting: Intent { cmp=com.android.camera/.Camera (has extras) }
其中 extra 的 key 為 abc ,value 為字串 "hello"
os.system("adb shell am start -a android.intent.category.LAUNCHER com.dingsns.start/com.dingsns.start.ui.home.StartActivity") #啟動星瞳直播
3. pm 命令
pm list packages
-f: see their associated file
-s: filter to only show system packages
-3 ilter to only show third party packages
pm list packages [-f] [-d] [-e] [-s] [-e] [-u] [FILTER]");
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]");
pm list instrumentation [-f] [TARGET-PACKAGE]");
pm list features
pm list libraries
pm path PACKAGE
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH
pm uninstall [-k] PACKAGE
pm clear PACKAGE
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
pm disable-user PACKAGE_OR_COMPONENT
pm set-install-location [0/auto] [1/internal] [2/external]
pm get-install-location
更多詳細用法,請見pm使用幫助.
4. dumpsys
dumpsys activit
dumpsys activity intents
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity services
dumpsys activity activities
dumpsys activity processes
dumpsys window
dumpsys window windows
dumpsys window tokens
dumpsys window sessions
dumpsys window policy
dumpsys window input
dumpsys statusbar
dumpsys notification
dumpsys package [<PACKAGE> ]
dumpsys location
dumpsys alarm
dumpsys connectivity
dumpsys wifi
…....等等
5. ime 輸入法管理
ime list [-a] [-s]
list command prints all enabled input methods
-s option to see only a single summary line of each.
-a option to see all input method
ime enable ID
ime disable ID
ime set ID