shell 命令

看完了這篇文章鹃觉,就進(jìn)入 Android 的內(nèi)部了

adb shell 命令

shell 命令的指的是:進(jìn)入到設(shè)備內(nèi),然后執(zhí)行的命令鳞尔;
用大白話講嬉橙,就是“給手機(jī)下達(dá)指令”。

怎么進(jìn)入寥假?

adb shell
>>

這樣就進(jìn)入了市框,然后就可以給他下達(dá)指令了。

好了昧旨,回顧一下拾给,上一節(jié),我們使用了

adb shell dumpsys

命令獲得了 手機(jī)上安裝的應(yīng)用的一些信息

這里面用到了 shell兔沃,只不過,他是在“電腦端” “傳遞命令”進(jìn)入“手機(jī)”级及,然后獲取到的信息乒疏;

現(xiàn)在我們直接“進(jìn)入設(shè)備”,然后“下達(dá)指令”饮焦。

當(dāng)然怕吴,這里的前提是你的設(shè)備最好是 “root” 之后的,否則一些命令就會(huì)出現(xiàn) “permission denied” 的問題


進(jìn)入正題

1县踢、dumpsys 命令

這個(gè)命令等同于上節(jié)提到的對(duì)應(yīng)的命令转绷,功能是等效的,所以這里不再贅述硼啤。

2议经、run-as

在手機(jī)中查看指定 包名的 應(yīng)用的數(shù)據(jù),適用于 非 root 的手機(jī)。

但是這里注意一下煞肾,不能用于查看“上架到應(yīng)用市場(chǎng)的app”咧织。

為什么呢?

因?yàn)檫@些 app 是正式版本的籍救,不是 debug 版本的习绢,如果你執(zhí)意操作的話:

比如像通過這個(gè)命令查看「瑞幸」的app數(shù)據(jù),

執(zhí)行

run-as com.lucky.luckyclient

他會(huì)報(bào)錯(cuò)錯(cuò)誤

如下圖所示:


爆出了:

run-as:package not debuggable:com.lucky.luckyclient

的問題蝙昙。

所以需要注意的是:

利用 run-as 能查看的是屬于你自己開發(fā)的 app 闪萄,并且安裝到 android 手機(jī)上面的應(yīng)用是 debug 版本的應(yīng)用才可以。

3奇颠、ps

哈哈哈桃煎,不是 photoshop
他是:查看設(shè)備的進(jìn)程信息,或者查看指定進(jìn)程的線程信息大刊。

使用方法:

直接使用 ps 查看所有進(jìn)程

如圖

這樣为迈,就拿到了所有進(jìn)程的信息

查看進(jìn)程信息,可以通過 |grep 去過濾信息缺菌。

ps |grep 過濾內(nèi)容

從上面的圖片我們看到葫辐,terminal列出了系統(tǒng)、應(yīng)用的一些進(jìn)程信息伴郁,我們可以找一個(gè)單獨(dú)看耿战,那么就可以使用 |grep去過濾這些內(nèi)容了。

ps |grep smpboot_th

得到下面的結(jié)果:

這樣做的好處是,看的更加清晰了焊傅。

查看指定進(jìn)程下的線程信息

使用方法

ps -t 進(jìn)程id

從第一種方法中剂陡,看到了 smpboot_th的其中一個(gè)進(jìn)程 id 是 3
如圖

的進(jìn)程id狐胎,下面我們直接拿

使用

ps -t 3 獲取 pid 為 3 的 線程信息鸭栖。

看下結(jié)果:

4、pm clear

清除指定包名應(yīng)用的數(shù)據(jù)

用法

pm clear 包名

pm.clear io.moreless.tide 清空「潮汐」的數(shù)據(jù)

如果當(dāng)前正在開啟這這個(gè)應(yīng)用握巢,那么一執(zhí)行這個(gè)命令晕鹊,就會(huì)關(guān)閉,并且清空所有數(shù)據(jù)

再次打開「潮汐」時(shí)暴浦,就像安裝新的應(yīng)用一樣溅话。

5、pm install

安裝 apk 文件

等同于 在電腦下使用的 adb install apk文件

使用方法:

pm install apk在手機(jī)的路徑

前提是歌焦,你手機(jī)上有這個(gè)包飞几,所以這個(gè)命令并不實(shí)用。

這里就不再演示了独撇。

6屑墨、pm uninstall

卸載指定包名的應(yīng)用

用法:

pm uninstall 包名

pm uninstall com.lucky.luckyclient

等同于電腦端使用的

adb uninstall com.lucky.luckyclient

這樣就卸載掉了手機(jī)上安裝的「瑞幸」的包了躁锁。

這里不再演示了。

7绪钥、am start 啟動(dòng)一個(gè)應(yīng)用

下面這個(gè)方法十分實(shí)用灿里,可以直接定位到頁面

用法:打開app

am start -n 包名/activity名稱 打開指定頁面

甚至,你還可以 “以debug模式打開”程腹,只需要在命令中添加 -D 即可

非常實(shí)用啦匣吊。

好,我們來看一下 潮汐的包名和其中的一個(gè)頁面的路徑

使用

dumpsys package io.moreless.tide

查看 「潮汐」的“清單文件”:

“紅線部分” 是輸入的命令寸潦,“淺藍(lán)色部分” 是稍后我們要跳轉(zhuǎn)的界面色鸳。

好,我們先跳轉(zhuǎn)到

io.moreless.tide/.play.PlayActivity

這個(gè)界面见转,看他的單詞意思應(yīng)該是“播放界面”命雀,如下圖:

執(zhí)行的命令是:

am start -n io.moreless.tide/io.moreless.tide.play.PlayActivity

先將手機(jī)上開啟的 「潮汐」的 app 關(guān)閉,然后通過上面的命令打開

8斩箫、am startservice

開啟一個(gè)服務(wù)

用法

am startservice -n 包名/服務(wù)名

在我們演示之前吏砂,先看看「潮汐」有哪些服務(wù)吧!

使用命令

dumpsys activity services |grep moreless

我們得到這樣的結(jié)果乘客。


紅色框框 是我們執(zhí)行的命令

淺藍(lán)色框框 是我們得到的一些 service 的結(jié)果

看看前綴發(fā)現(xiàn)「潮汐」里面不是「友盟」的服務(wù)狐血,就是「淘寶」的服務(wù)。

那么我們來演示一下易核,使用 am startservice -n 開啟一個(gè)服務(wù)看看是什么情況吧

am startservice -n io.moreless.tide/com.umeng.message.UmengIntentService

出現(xiàn)了錯(cuò)誤

那我們把 「潮汐」打開看看呢
這里結(jié)合了上面打開 activity 的命令

這樣就不報(bào)錯(cuò)了匈织,但是因?yàn)檫@個(gè) service 的功能不會(huì)顯示到界面上,所以這里手機(jī)屏幕的內(nèi)容沒有變化牡直。

9缀匕、am broadcast

發(fā)送一個(gè)廣播,這個(gè)命令就很實(shí)用了碰逸,比如我們對(duì)系統(tǒng)廣播做了處理乡小,對(duì)廣播做出的相應(yīng)的反應(yīng),就可以使用這個(gè)命令去模擬真實(shí)的廣播接收

使用方法

am broadcast -a 廣播 action

比如:

發(fā)送一個(gè)“電量低廣播”

am broadcast -a Intent.ACTION_BATTERY_LOW

再比如:

發(fā)一個(gè) “網(wǎng)絡(luò)狀態(tài)變化的廣播”

am broadcast -a android.net.conn.CONNECTIVITY_CHANGE

看下命令執(zhí)行情況


發(fā)現(xiàn) “ 電量的廣播 ” 可以發(fā)送花竞,但是 “ 網(wǎng)絡(luò)變化的廣播 ”的需要權(quán)限

再試一下 “ 鎖屏廣播 ”

看到了劲件,還是需要權(quán)限。


現(xiàn)在看來约急,真機(jī)的話必須root , 有必要使用虛擬機(jī)了!
  • 通過 Android Studio 開啟一個(gè)虛擬機(jī)
  • 打開 terminal
  • adb root 將虛擬機(jī) root
  • adb shell 進(jìn)入虛擬機(jī)

使用 root 之后的虛擬機(jī)再執(zhí)行以下上面兩個(gè)命令
看看如何苗分?


我們可以看到厌蔽,廣播發(fā)送成功,但是手機(jī)并沒有做出反應(yīng)摔癣,不過這不重要奴饮,因?yàn)槲覀円獪y(cè)試的是自己應(yīng)用內(nèi)對(duì)特定的廣播的處理纬向。

不過,我發(fā)現(xiàn)發(fā)送 “ 鎖屏通知戴卜,虛擬機(jī)會(huì)有反應(yīng) ”

請(qǐng)看

ps:剛開始我把手機(jī)界面切到了應(yīng)用菜單頁面逾条,收到通知后,手機(jī)界面回到了桌面投剥。

10师脂、netstat

查看手機(jī)端口號(hào)信息

如圖

通過此命令可以查看手機(jī)完整的網(wǎng)絡(luò)狀態(tài)

11、dalvikvm運(yùn)行一個(gè)dex 文件

我們都知道江锨,android 應(yīng)用吃警,是把 class 文件打包成為 dex 文件,然后交給 dalvik 虛擬機(jī)運(yùn)行的

所以啄育,可以直接通過命令來跑 dex 文件

使用方法

dalvikvm -cp dex文件 運(yùn)行主類

我把 「潮汐」的 apk 文件進(jìn)行了解壓酌心,得到這樣的文件夾


我們看到,里面有 classes.dex 文件挑豌,還有 classex2.dex 文件

那么我們來跑一下 classes.dex 文件看看會(huì)怎么樣

首先安券,把這個(gè)文件放到手機(jī)里面去:

  • 退出 shell 模式
  • adb push dex文件 /sdcard/

具體操作如圖

這樣就把「潮汐」的 dex 文件放到了手機(jī)里面了。

然后氓英,再進(jìn)入 shell 模式侯勉,運(yùn)行這個(gè) dex 文件

  • adb shell
  • dalvikvm -cp /sdcard/classes.dex 運(yùn)行主類

不過,到這里债蓝,我們就不能往下進(jìn)行了壳鹤,原因是找不到 「潮汐」的主類,即使是知道了它的啟動(dòng) activity饰迹,但是因?yàn)榛煜仍蚍际模黝悷o法定位。

所以啊鸭,這里就留一個(gè)小小的遺憾吧

12锹淌、top

查看當(dāng)前應(yīng)用 cpu 的消耗情況

單獨(dú)執(zhí)行

top
會(huì)輸出默認(rèn)查詢結(jié)果

當(dāng)然,我們可以使用一些字符限制一下

使用方法

top -n -d -s -t

-n 表示刷新次數(shù)

-d 刷新間隔時(shí)間(默認(rèn)為5s)

-s 按照哪列排序

-t 顯示線程信息不顯示進(jìn)程信息

這些 命令挑選你需要的即可赠制,不用全部輸入

我們執(zhí)行以下這個(gè)命令看一下

top -d 4 -n 2

間隔 4s 刷新一次赂摆,共刷兩次

看看情況 :

只間隔 4s 刷兩次,然后就停止了

13钟些、getprop

獲得設(shè)備信息

使用方法

getprop查看設(shè)備的所有屬性

如圖烟号,我們看到了 debug 、gsm政恍、dalvik 汪拥、hwservicemanager 等信息

我們?cè)儆?br> getprop 屬性名

這個(gè)方法查看具體的屬性信息,比如我們看一下hwservicemanager.ready

getprop hwservicemanager.ready

查看一下


總結(jié)一下

shell 內(nèi)部命令對(duì) “更深一步進(jìn)入 Android” 有很大的幫助篙耗,如果有的同學(xué)感興趣迫筑,不妨多花點(diǎn)時(shí)間熟悉一下這些命令宪赶,shell 命令 和前兩章提到的命令經(jīng)常會(huì)一起用,所以大家還是多多聯(lián)系吧脯燃!加油B蕖!辕棚!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末欲主,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坟募,更是在濱河造成了極大的恐慌岛蚤,老刑警劉巖宰掉,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞭盟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡践啄,警方通過查閱死者的電腦和手機(jī)赚哗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門她紫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屿储,你說我怎么就攤上這事贿讹。” “怎么了够掠?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵民褂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我疯潭,道長(zhǎng)赊堪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任竖哩,我火速辦了婚禮哭廉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘相叁。我一直安慰自己遵绰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布增淹。 她就那樣靜靜地躺著椿访,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虑润。 梳的紋絲不亂的頭發(fā)上赎离,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音端辱,去河邊找鬼梁剔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舞蔽,可吹牛的內(nèi)容都是我干的荣病。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼渗柿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼个盆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起朵栖,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤颊亮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后陨溅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體终惑,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年门扇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雹有。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡臼寄,死狀恐怖霸奕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吉拳,我是刑警寧澤质帅,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站留攒,受9級(jí)特大地震影響煤惩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稼跳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一盟庞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汤善,春花似錦什猖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至在旱,卻和暖如春摇零,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桶蝎。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工驻仅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谅畅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓噪服,卻偏偏與公主長(zhǎng)得像毡泻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粘优,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • adb命令(非shell命令) 15仇味、查看logcat日志信息 按照tag輸出 adb logcat -s -ta...
    石頭老張閱讀 1,096評(píng)論 0 0
  • adb命令與adb shell命令的區(qū)別?adb命令是PC端adb程序自帶的命令adb shell 命令是調(diào)用An...
    zhangxinxiaowen閱讀 24,874評(píng)論 2 11
  • 以Root權(quán)限運(yùn)行 adb root 重啟設(shè)備 adb reboot 重啟到Recovery adb reboot...
    野生兔子閱讀 1,046評(píng)論 0 1
  • adb全名Andorid Debug Bridge. 直接翻譯安卓調(diào)試橋,環(huán)境變量中配置好adb的環(huán)境變量雹顺,直接通...
    silencefun閱讀 4,119評(píng)論 0 5
  • 1.cat命令 用于查看文件內(nèi)容丹墨,結(jié)合|grep可以對(duì)單行文本進(jìn)行過濾(即顯示出含有過濾字符串的當(dāng)前行) 例子:c...
    帥不過如此閱讀 4,088評(píng)論 0 3