Android中開發(fā)需要的高效助推的命令總結(jié)

Android開發(fā)中我們有時(shí)候需要借助一些命令幫助更好的高效率定位解決問題拆宛,本文就來介紹一些可能有些隱藏的而卻非常好用的命令铆铆,可以幫我們快速找到問題,這些命令都是本人在開發(fā)中實(shí)踐總結(jié)趟佃,個人覺得非常實(shí)用例书,所以可能對于你不是很有用,但是了解也是很好的攀隔,而Android中的命令很多的皂贩,有些個人覺得沒多大用就不在這里提了,好了昆汹,下面就開始命令的分析總結(jié)明刷。



一、基礎(chǔ)命令


在說這些命令之前满粗,得先提及一些基本命令用法:

第一個:cat命令

主要用于查看文件內(nèi)容辈末,這個命令的重要性不言而喻,有時(shí)候我們想查看文件信息,當(dāng)然可以借助軟件查看挤聘,但是這個命令非常便捷轰枝,更重要的是他可以結(jié)合grep進(jìn)行過濾內(nèi)容信息。


記住一點(diǎn):Linux中過濾用grep组去,Windows過濾用findstr就可以了鞍陨。


第二個:echo/touch命令

cat命令用于查看文件,echo和touch命令就可以方便的寫文件

下面看一下這兩個命令的結(jié)合使用:


這里可以看到用echo和touch寫內(nèi)容到文件中添怔,然后在cat讀取文件信息湾戳,這里還用到了內(nèi)容重定向符號'>'和'>>';關(guān)于這兩個符號也是非常有用的广料,有時(shí)候我們在執(zhí)行一條命令的時(shí)候可能輸出結(jié)果非常多砾脑,那么這時(shí)候就需要借助重定向把結(jié)果輸出到文本中即可。后面介紹命令會說到這點(diǎn)艾杏。



一韧衣、常用的非shell命令


在常用命令中,我們會區(qū)分非shell命令和shell命令购桑,當(dāng)然區(qū)分的有點(diǎn)不合常規(guī)畅铭,但是為了好理解,這里就是把需要提前adb shell一下運(yùn)行的命令叫做shell命令勃蜘,直接adb shell運(yùn)行命令的叫做非shell命令硕噩。


1、adb shell dumpsys activity top

說明:

????可以查看當(dāng)前應(yīng)用的activity信息

用法:

????運(yùn)行需要查看的應(yīng)用缭贡,然后運(yùn)行此命令即可

案例:adb shell dumpsys activity top


延伸:如果我們直接運(yùn)行adb shell dumpsys也是可以的炉擅,只是會把當(dāng)前系統(tǒng)中所有應(yīng)用運(yùn)行的四大組件都會打印出來,而這時(shí)候會發(fā)現(xiàn)打印的內(nèi)容非常多阳惹,就需要借助之前說到的信息重定向了谍失,我們可以這么做:

adb shell dumpsys > info.txt


這里還借助了Windows中的start命令,可以直接利用系統(tǒng)默認(rèn)程序打開文本內(nèi)容莹汤。而且需要注意的是快鱼,在以往我們逆向應(yīng)用的時(shí)候,很多時(shí)候都用到這個命令來找到突破口的纲岭。


2抹竹、adb shell dumpsys package

說明:

????可以查看指定包名應(yīng)用的詳細(xì)信息(相當(dāng)于應(yīng)用的AndroidManifest.xml中的內(nèi)容)

用法:

????adb shell dumpsys package [pkgname]

案例:

????adb shell dumpsys cn.wjdiankong.demo


這里看到就是相當(dāng)于把應(yīng)用的清單文件打印出來而已。

?

3荒勇、adb shell dumpsys meminfo

說明:

????可以查看指定進(jìn)程名或者是進(jìn)程id的內(nèi)存信息

用法:

????adb shell dumpsys meminfo [pname/pid]

案例:

????adb shell dumpsys meminfo 11976

?

利用這個命令可以查看進(jìn)程當(dāng)前的內(nèi)存情況柒莉,和下面的top命令可以結(jié)合利用分析應(yīng)用的性能消耗情況。


4沽翔、adb shell dumpsys dbinfo

說明:

????可以查看指定包名應(yīng)用的數(shù)據(jù)庫存儲信息(包括存儲的sql語句)

用法:

????adb shell dumpsys dbinfo [packagename]

案例:

????adb shell dumpsys dbinfo cn.wjdiankong.demo

這里可以清晰的看到應(yīng)用執(zhí)行過的sql語句信息兢孝。在對應(yīng)用逆向的時(shí)候具有一定用途窿凤。畢竟可以查看應(yīng)用操作數(shù)據(jù)庫信息了。?


5跨蟹、adb intall

說明:安裝應(yīng)用包apk文件

用法:adb install [apk文件]

案例:adb install D:\demo.apk

注意:如果應(yīng)用已經(jīng)安裝了雳殊,需要使用adb install –r [apk文件] 相當(dāng)于升級安裝

這個命令就不多說了,非常簡單窗轩。?


6夯秃、adb uninstall

說明:卸載應(yīng)用

用法:adb uninstall [packagename]

案例:adb uninstall cn.wjdiankong.demo

和上面那個命令對應(yīng),也不多說了痢艺,非常簡單仓洼。?


7、adb pull

說明:將設(shè)備中的文件放到到本地

用法:adb pull 設(shè)備目錄文件本地目錄

案例:adb pull /sdcard/tmp.txt D:\

命令簡單堤舒,不在多說色建,只是在操作的時(shí)候可能遇到文件權(quán)限問題,用chmod改一下權(quán)限即可舌缤。

?

8箕戳、adb push

說明:將本地文件放到設(shè)備中

用法:adb push 本地目錄文件設(shè)備目錄

案例:adb push D:\tmp.txt /sdcard

命令簡單,不在多說国撵,只是在操作的時(shí)候可能遇到文件權(quán)限問題陵吸,用chmod改一下權(quán)限即可。


9介牙、adb shell screencap

說明:截屏操作

用法:

????adb shell screencap –p 截圖文件路徑

案例:

????adb shell screencap –p /sdcard/tmp.png

這個命令對于測試人員非常有用壮虫,有時(shí)候想快速截取手機(jī)屏幕,速度打開环础,我們就可以利用這個命令寫一個簡單的腳本文件旨指,內(nèi)容如下:

adb shell screencap -p /sdcard/tmp.png

adb pull /sdcard/tmp.png D:\

start D:\tmp.png

這樣就一步到位,分分鐘打開一個截圖圖片喳整。這個是Windows中的bat命令格式。

延伸:一些惡意軟件裸扶,利用設(shè)備root之后框都,運(yùn)行該命令就可以獲取用戶當(dāng)前屏幕信息,對于盜取賬號非常危險(xiǎn)呵晨。


10魏保、adb shell screenrecord

說明:錄屏操作

用法:

????adb shell screenrecord 視頻保存路徑

案例:

????adb shell screenrecord /sdcard/tmp.mp4

這個命令其實(shí)和上面截屏差不多,只不過這個是錄制評論摸屠,對于測試人員來說更是重要了谓罗,有時(shí)候想復(fù)現(xiàn)問題步驟,那么就可以采用這個命令進(jìn)行錄屏功能季二。

延伸:現(xiàn)在很多錄屏軟件檩咱,在5.0一下可以利用root之后用這個命令進(jìn)行錄屏功能揭措。

?

11、adb shell input text

說明:輸入文本內(nèi)容

用法:

????adb shell input text [需要輸入文本框內(nèi)容]

案例:

????讓需要輸入內(nèi)容的文本框獲取焦點(diǎn)刻蚯,adb shell input text 'HelloWorld'

延伸:這個命令也可以模擬物理按鍵绊含,虛擬鍵盤,滑動炊汹,滾動等事件

用途:這個命令對于我們在需要輸入一大堆信息到文本框中的時(shí)候非常有用躬充,比如現(xiàn)在你在PC端有一段內(nèi)容,想輸入到手機(jī)的某個搜索框中讨便,那么你可以通過把這段內(nèi)容發(fā)送到手機(jī)充甚,然后在復(fù)制操作。但是有了這個命令就非常簡單霸褒,先讓你想要輸入的文本框獲取焦點(diǎn)伴找,然后運(yùn)行這個命令即可。

?

12傲霸、adb forward

說明:設(shè)備的端口轉(zhuǎn)發(fā)

用法:

????adb forwrad [(遠(yuǎn)程端)協(xié)議:端口號] [(設(shè)備端)協(xié)議:端口號]

案例:

????adb forward tcp:23946 tcp:23946

? ? adb forward tcp:8700 jwdp:1786

這個命令對于我們在調(diào)試的時(shí)候非常有用疆瑰,特別在IDA調(diào)試中。

?

13昙啄、adb jdwp

說明:查看設(shè)備中可以被調(diào)試的應(yīng)用的進(jìn)程號

用法:adb jdwp

案例:adb jdwp

這個命令或許用途不是很多穆役,但是對于調(diào)試的時(shí)候還是有點(diǎn)用途∈崃荩可以忽略這個命令耿币。


14、adb logcat

說明:查看當(dāng)前日志信息

用法:adb logcat -s tag

案例:adb logcat -s fb

用法:

????adb logcat |findstr pname/pid/keyword

案例:

????adb logcat |findstr cn.wjdiankong.demo

這個命令大家都不陌生韧拒,也是重中之重淹接,有的同學(xué)或許會好奇,為何不用AS查看日志了叛溢,但是有時(shí)候AS不能滿足我們塑悼,比如我們想開多個日志窗口,這時(shí)候我們可以打開多個cmd窗口利用這個命令查看日志信息即可楷掉。用的最多的就是-s參數(shù)厢蒜,可以直接查看對應(yīng)的tag日志信息,可以利用findstr進(jìn)行信息過濾:


這里因?yàn)槭荳indows下的所以用findstr進(jìn)行信息過濾了烹植,當(dāng)然這個命令也可以直接在adb shell運(yùn)行之后斑鸦,比如:

>>adb shell

>> logcat |grep tencent

這樣就可以用grep進(jìn)行過濾信息了。



三草雕、常用的shell命令


以下命令運(yùn)行的前提是先運(yùn)行:adb shell巷屿,而這些命令和上面adb shell命令都是互通的,所謂互通就是要想在設(shè)備中運(yùn)行就優(yōu)先adb shell一下墩虹,比如查看當(dāng)前包信息嘱巾,也可以這么做:

>>adb shell

>>dumpsys package [pkgname]

而以下介紹的這些shell命令也都可以直接在外部運(yùn)行憨琳,比如清空應(yīng)用數(shù)據(jù):

adb shell pm ?clear [pkgname]


15、run-as

說明:可以在非root設(shè)備中查看指定debug模式的包名應(yīng)用沙盒數(shù)據(jù)

用法:run-as [package name]

案例:run-as cn.wjdiankong.demo

這個在之前的文章中詳細(xì)介紹過這個命令的原理浓冒,不了解的同學(xué)可以查看這里:Android中run-as命令原理解析栽渴;利用這個命令,我們在開發(fā)中有時(shí)候有一個非root手機(jī)稳懒,但是又想看debug應(yīng)用的沙盒數(shù)據(jù)闲擦,那么這個命令就可以幫助我們進(jìn)行這項(xiàng)操作了。

?

16场梆、ps

說明:查看設(shè)備的進(jìn)程信息墅冷,或者是指定進(jìn)程的線程信息

用法:ps | grep 過濾內(nèi)容?

???????? ? ps –t [pid] 查看pid對應(yīng)的線程信息

案例:ps |grep cn.wjdiankong.demo

???????? ? ps –t 11798

這個命令不多說了,基本命令或油,重要程度不多說了寞忿,可以結(jié)合grep進(jìn)行過濾信息。

?

17顶岸、pm clear

說明:清空指定包名應(yīng)用的數(shù)據(jù)

用法:pm clear [packagename]

案例:pm clear cn.wjdiankong.demo

有時(shí)候想清空一個應(yīng)用的數(shù)據(jù)腔彰,可能需要去設(shè)置頁面去操作,可以不用那么麻煩辖佣,直接用這個命令即可霹抛。

?

18、pm install

說明:安裝設(shè)備中的apk文件卷谈,功能和adb install一樣

用法:pm install [apk文件]

案例:pm install /sdcard/demo.apk

這個和adb install命令一樣的效果杯拐,不多解釋。

?

19世蔗、pm uninstall

說明:卸載設(shè)備中的應(yīng)用端逼,功能和adb uninstall 一樣

用法:pm uninstall [packagename]

案例:pm uninstall cn.wjdiankong.demo

這個命令和adb uninstall命令一樣的效果,不多解釋了污淋。

?

20顶滩、am start

說明:啟動一個應(yīng)用

用法:

????am start -n [包(package)名]/[包名].[活動(activity)名稱]

案例:

????am start -n com.android.browser/com.android.browser.BrowserActivity

注意:可以以debug方式啟動應(yīng)用:am start –D –n ….

特別在我們反編譯調(diào)試應(yīng)用的時(shí)候,可能需要以debug方式啟動應(yīng)用

?

21寸爆、am startservice

說明:啟動一個服務(wù)

用法:

????am startservice -n [包(package)名]/[包名].[服務(wù)(service)名]

案例:

????am startservice -n com.android.traffic/com.android.traffic.maniservice

和上面命令類似诲祸,啟動服務(wù),不多解釋了而昨。


22、am broadcast

說明:發(fā)送一個廣播

用法:am broadcast -a [廣播動作]

案例:am broadcast -a android.NET.conn.CONNECTIVITY_CHANGE

和上面的命令類似找田,發(fā)送一個廣播歌憨,不多解釋了。 有時(shí)候我們定義了一個廣播墩衙,可能需要測試务嫡,就可以借助這個功能模擬發(fā)送一個廣播甲抖。


23、netcfg

說明:查看設(shè)備的ip地址

用法:netcfg

案例:netcfg

有時(shí)候想查看設(shè)備的ip地址心铃,去設(shè)置頁面太費(fèi)勁了准谚,可以直接用這個命令即可:


?

24、netstat

說明:查看設(shè)備的端口號信息

用法:netstat

案例:netstat

有時(shí)候想查看設(shè)備的端口號信息去扣,這個命令也是非常重要的:


?

25柱衔、app_process

說明:運(yùn)行Java代碼

用法:

????app_process [運(yùn)行代碼目錄] [運(yùn)行主類]

案例:

????export CLASSPATH=/data/demo.jar

? ? exec /system/bin/app_process /data/cn.wjdiankong.Main

這個主要用于在Android中一些特殊開發(fā)場景中,我們想啟動一個jar包愉棱,不過這個jar包有要求的:需要用dx命令把dex文件轉(zhuǎn)化成jar包功能唆铐,實(shí)際上他不是一個正常的jar包了,而是一個包含了classes.dex文件的壓縮文件了奔滑。

?

26艾岂、dalvikvm

說明:運(yùn)行一個dex文件

用法:dalvikvm –cp [dex文件] [運(yùn)行主類]

案例:dalvikvm –cp /data/demo.dex cn.wjdiankong.Main

這個有時(shí)候?yàn)榱藴y試一個dex文件功能可以用到,這個命令和上面的命令有很大相似之處朋其,只是運(yùn)行的文件不一樣王浴。

?

27、top

說明:查看當(dāng)前哪些應(yīng)用的cpu消耗信息

用法:top [-n/-m/-d/-s/-t]

???????? ? -m // 最多顯示多少個進(jìn)程

? ? ? ? ? ?-n// 刷新次數(shù)

? ? ? ? ? ?-d// 刷新間隔時(shí)間(默認(rèn)5秒)

? ? ? ? ? ?-s // 按哪列排序

? ? ? ? ? ?-t// 顯示線程信息而不是進(jìn)程

案例:

????top –d –m 10 |grep cn.wjdiankong.demo


這個在分析應(yīng)用性能的時(shí)候非常有用梅猿,我們可以用grep過濾我們想要分析的應(yīng)用信息氓辣,查看他的當(dāng)前cpu使用率。

?

28粒没、getprop

說明:查看系統(tǒng)屬性值

用法:getprop [屬性值名稱]

案例:getprop ro.debuggable

這個可以查看設(shè)備的信息筛婉,比如設(shè)備版本號,系統(tǒng)屬性等癞松,記得以前我們以前介紹過在root設(shè)備之后爽撒,還可以去修改這些系統(tǒng)屬性。比如debug開關(guān)响蓉,讓所有的應(yīng)用都處于可調(diào)式狀態(tài)硕勿。

?



四、操作apk命令


以下這兩個命令是直接獲取apk的信息

29枫甲、aapt

說明:查看apk中的信息以及編輯apk程序包

用法:

????aapt dump xmltree [apk包] [需要查看的資源文件xml]

案例:

????aapt dump xmltree demo.apk AndroidManifest.xml


這里我們依然用重定向把輸出信息保存到文件中源武,然后再打開查看∠牖茫可以看到就是非常詳細(xì)的apk清單文件了粱栖。所以有時(shí)候我們想查看一個apk中清單文件,也沒必要進(jìn)行復(fù)雜的反編譯工作脏毯。


30闹究、dexdump

說明:可以查看一個dex文件的相信信息

用法:dexdump [dex文件路徑]

案例:dexdump D:\classes.dex


這個命令用于查看apk中dex文件的詳細(xì)信息,有時(shí)候也沒必要反編譯食店,可以直接用這個命令即可渣淤。



五赏寇、進(jìn)程相關(guān)命令


最后再說一下關(guān)于一個應(yīng)用的常用信息查詢,這個主要利用cat命令查看當(dāng)前應(yīng)用進(jìn)程信息价认,對于開發(fā)中可能用得到:

第一個:查看當(dāng)前進(jìn)程的內(nèi)存加載情況

可以使用?

cat /proc/[pid]/maps

查看當(dāng)前進(jìn)程的內(nèi)存映射信息嗅定,比如加載了哪些so文件,dex文件等:



第二個:查看進(jìn)程的狀態(tài)信息

可以利用?

cat /proc/[pid]/status

查看當(dāng)前進(jìn)程的狀態(tài)信息用踩,比如我們熟知的TracerPid:



第三個:查看當(dāng)前應(yīng)用使用的端口號信息

可以使用?

cat /proc/[pid]/net/tcp/tcp6/udp/udp6

獲取當(dāng)前應(yīng)用使用到的端口號信息:



注意:

上面介紹一些在adb shell中運(yùn)行的命令渠退,那么這些命令也可以在手機(jī)中直接運(yùn)行,我們需要去下載一個"終端模擬器"應(yīng)用捶箱,直接在里面輸入這些shell命令即可智什。這樣不用電腦就可以進(jìn)行操作了。



六丁屎、總結(jié)


到這里荠锭,就分析了Android開發(fā)中常用的一些命令,有了這些命令對于我們開發(fā)來說起到非常搞笑的助推作用了晨川,當(dāng)然還有其他命令证九,但是本文覺得有些命令不是那么好用也沒多大用途這里就沒做介紹了。?




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末共虑,一起剝皮案震驚了整個濱河市愧怜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妈拌,老刑警劉巖拥坛,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尘分,居然都是意外死亡猜惋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門培愁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來著摔,“玉大人,你說我怎么就攤上這事定续〉兀” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵私股,是天一觀的道長摹察。 經(jīng)常有香客問我,道長倡鲸,這世上最難降的妖魔是什么港粱? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上查坪,老公的妹妹穿的比我還像新娘。我一直安慰自己宁炫,他們只是感情好偿曙,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羔巢,像睡著了一般望忆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竿秆,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天启摄,我揣著相機(jī)與錄音,去河邊找鬼幽钢。 笑死歉备,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匪燕。 我是一名探鬼主播蕾羊,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼帽驯!你這毒婦竟也來了龟再?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤尼变,失蹤者是張志新(化名)和其女友劉穎利凑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫌术,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哀澈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛉威。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片日丹。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚯嫌,靈堂內(nèi)的尸體忽然破棺而出哲虾,到底是詐尸還是另有隱情,我是刑警寧澤择示,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布束凑,位于F島的核電站,受9級特大地震影響栅盲,放射性物質(zhì)發(fā)生泄漏汪诉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扒寄。 院中可真熱鬧鱼鼓,春花似錦、人聲如沸该编。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽课竣。三九已至嘉赎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間于樟,已是汗流浹背公条。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迂曲,地道東北人靶橱。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像奢米,于是被迫代替她去往敵國和親抓韩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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