Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 【安卓學習之工具學習】adb初步學習--adb命令和shell命令學習

【安卓學習之工具學習】adb初步學習--adb命令和shell命令學習

編輯:關於Android編程

一 、 測試環境講解:
1.一台win7電腦
2.安裝好sdk,在 sdk\platform-tools 目錄下,可以看到adb.exe 文件
這裡寫圖片描述
3.為了方便輸入,可以設置環境變量,將adb.exe的路徑放到Path中。在變量【Path】值多增加一組數據:【D:\Program Files\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;】
這裡寫圖片描述
4.你打開cmd,輸入命令adb version 如果出現如下數據,就說明環境已經正常通過
這裡寫圖片描述
5.電腦啟動模擬器或者連接手機,可以看手機助手是否已經連接成功,連接手機可以不用啟動eclipse。
這裡寫圖片描述
6.打開cmd,輸入命令adb shell 如果出現如下數據,就說明環境 設備連接都已經正常通過
這裡寫圖片描述
二 、 abd命令講解:
abd命令可以分為兩類,一種是dZ喎?/kf/ware/vc/" target="_blank" class="keylink">vc8P8we6jrNK71tbKx2xpbnV4tcTD/MHuoaPHsNXfIMP8we4gtrzKx82ouf1hZGIgKyBYWFggtcS48cq91rTQ0LXEo6y689XfINTaxOPK5MjrIGFkYiBzaGVsbLrzo6y158TU1LazzMGsvdPK1rv6u/LV38SjxOLG98nPtcRsaW51eM+1zbOjrLTLyrHP4LWx09rU2srWu/q78sSjxOLG98nPw+bK5MjrIGxpbnV4w/zB7qOs1rG907bUyta7+rvyxKPE4sb3vfjQ0LLZ1/ejrMv50tTP8WxzIGNktcjD/MHutry/ydLU1f2zo8q508OhozxiciAvPg0KMS5kb3PD/MHuPC9wPg0KYWRiIHNoZWxso6y9+Mjrtb1BbmRyb2lkIFNoZWxsw/zB7sSjyr2jrLTLyrHK1rv6u/LV38SjxOLG99Kqway907PJuaajrLfx1PKxqLTto6zM4cq+zrTV0rW9yeixuKGjDQo8cHJlIGNsYXNzPQ=="brush:java;"> adb shell - run remote shell interactively

這裡寫圖片描述

adb devices 是列出所有連接的設備
devices [-l]  - list all connected devices
            ('-l' will also list device qualifiers)

這裡寫圖片描述

adb push 和adb pull 這兩個命令,是從手機導出或者導入文件。
adb push [-p]  
                               - copy file/dir to device

                                 ('-p' to display the transfer progress)
     adb pull [-p] [-a]  []
                               - copy file/dir from device
                                 ('-p' to display the transfer progress)
                                 ('-a' means copy timestamp and mode)
adb install 和adb uninstall是安裝apk到設備,或者是從設備中卸載apk
adb install [-lrtsdg] 
                               - push this package file to the device and install it
                                 (-l: forward lock application)
                                 (-r: replace existing application)
                                 (-t: allow test packages)
                                 (-s: install application on sdcard)
                                 (-d: allow version code downgrade)
                                 (-g: grant all runtime permissions)
  adb uninstall [-k]  - remove this app package from the device
                                 ('-k' means keep the data and cache directories)
adb logcat查看設備的logcat日志。不過一般都是從IDE工具中查看
db logcat [  ] - View device log

這些命令不需要全部記住,只要在cmd下打一下adb 或 adb help就都出來
2.linux 命令
linux命令是指在linux平台下輸入的指令(命令和常見的linux命令一致,linux 都是在shell裡面的操作),通過dos命令【adb shell 】就可以進入Android Shell命令模式(在之前已經介紹過)。你可以理解為,此時你的所以操作就是在手機系統(基於linux系統)裡面輸入指令,當然並不是所以的linux指令都支持。下面我們簡單測試幾組指令看看結果。

通過【adb shell 】- > 【ls】命令查看當前路徑下的文件內容,如下:
這裡寫圖片描述
在上圖的左側,是通過遠程查看手機的內容,右側是360手機助手查看的內容,可以看到裡面的內容基本是一致的(本來就是同一個路徑,肯定相同,呵呵),注意,我們平時寫代碼時,數據庫以及Sp(服務提供商)內容都是寫在data/data/的包名下,這個需要root的手機才能查看,否則查看不了
可以再貼張在mac系統上的查看sdcard文件的圖:
這裡寫圖片描述

查看進程的命令 ps,將正在運行的所有進程都羅列出來。

shell@HM2014011:/ $ ps
USER PID PPID VSIZE RSS WCHAN PC STATUS NAME root 1 0 912 456 ffffffff 00000000 S /init media 138 1 73028 3112 ffffffff 00000000 S /system/bin/mediaserver System 139 1 4580 48 ffffffff 00000000 S /system/bin/matv gps 143 1 29508 0 ffffffff 00000000 S /system/bin/mtk_agpsd shell 145 1 1052 160 c0073b10 b6f8c104 S /system/bin/batterywarning media 146 1 4728 108 ffffffff 00000000 S /system/bin/MtkCodecService bluetooth 156 1 13996 300 ffffffff 00000000 S /system/bin/mtkbt wifi 961 1 3900 980 ffffffff 00000000 S /system/bin/wpa_supplicant bluetooth 1133 136 539316 11268 ffffffff 00000000 S com.mediatek.bluetooth u0_a81 8287 136 704672 34188 ffffffff 00000000 S com.qihoo.daemon u0_a81 8306 8287 543452 6952 ffffffff 00000000 S com.qihoo.daemon u0_a81 8371 136 579252 20600 ffffffff 00000000 S com.qihoo.gameassist u0_a81 8384 8371 541140 6944 ffffffff 00000000 S com.qihoo.appstore:PluginP01 u0_a81 12020 136 620968 43348 ffffffff 00000000 S com.qihoo.appstore u0_a81 12033 12020 541140 7104 ffffffff 00000000 S com.qihoo.appstore u0_a81 16099 136 575516 21144 ffffffff 00000000 S com.qihoo.appstore u0_a81 16116 16099 541140 7112 ffffffff 00000000 S com.qihoo.appstore:PluginP00 u0_a81 32528 136 571564 20624 ffffffff 00000000 S com.qihoo360.mobilesafe.clean u0_a81 32554 32528 541140 6964 ffffffff 00000000 S com.qihoo.appstore:PluginP08

說明:
USER:進程的當前用戶
PID :process ID,該進程ID
PPID:process parent ID,父進程ID,該進程上級父程序的ID
VSIZE :virtual size, 進程所使用的虛擬內存的大小(Kbytes)
RSS :進程所使用的物理內存的大小(Kbytes)
WCHAN :進程如果處於休眠狀態的話,在內核中的地址
PC : program counter,
STAT:該程序目前的狀態,主要的狀態有
R :該程序目前正在運作,或者是可被運作
S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。
T :該程序目前正在偵測或者是停止了
Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆屍) 程序的狀態
NAME: process name,進程的程序名或進程位置

如果想查看某一個,那麼可以使用 ps |grep命令
例如:你查看360手機助手的進程,可以這麼使用ps | grep com.qihoo.appstore
這裡寫圖片描述
打開應用管理,查看正在運行的程序,可以看到有3個360相關進程正在運行,說明一下,com.qihoo.appstore 就是奇虎應用商店的意思,360系列產品是奇虎旗下。
這裡寫圖片描述

分析下,一共有6個進程PID。其中PPID 136進程包含兩個子進程(PID為12020和16099),而PPID 16099又有一個子進程(PID 16116),PPID 12020也有一個子進程(PID 12033),所以中間這四個顯示一個進程 ,
那麼在手機正在運行中就恰好有3個進程,分別為com.qihoo.appstore(PID為12020、16099、12033、16116)、com.qihoo.appstore:PluginP01 (PID為8384)、com.qihoo.appstore:PluginP08 (PID為32554)

觀察這些有什麼作用呢?通過查看這些進程,我們可以更好的去了解別人開發的app客戶端的應用結構,思考360手機助手為什麼要同時啟動了4個進程多個服務,也可以用來自己做的客戶端的service 是否有啟動,比如服務推送。有時候我們去面試,考官也會問是否有linux命令,所以了解這些也是有一定的幫助。

可以通過kill 命令來殺死進程,通過kill pid 或sudo kill pid,這個需要root權限
這裡寫圖片描述
如果連接的是模擬器(模擬器直接是root權限),就可以kill成功。
這裡寫圖片描述 在根目錄下的/proc文件夾中有很多對應進程ID號的子文件夾,可以進入對應的文件夾,通過cat status查看進程信息,當然也可以直接輸入cat /proc/pid/status來查看。
這裡寫圖片描述
觀察Groups這組數據,1015代表的是什麼意思?
通過查看源碼
【http://androidxref.com/4.4.2_r1/xref/system/core/include/private/android_filesystem_config.h】:
這裡寫圖片描述

可以看出是寫SD卡的權限,這樣通過命令行,讀進程,看權限,一目了然,尤其是有些開發者如果不通過IDE,而是直接用Editplus寫程序,會這些就很重要了

好了,先介紹到這吧,如果想知道怎麼查看這些權限深入了解,我們下次再介紹啊

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved