Android一些常用命令

開發(fā)調(diào)試常用命令列表

記錄并收集一些開發(fā)調(diào)試過程中有效的命令峻凫,主要是Android相關补胚。

1 通用命令

1.1 iptables

  • 限制上行和下行速率
    可用于模擬弱網(wǎng)模式
iptables -I OUTPUT 1 -m hashlimit --hashlimit-name testup --hashlimit-above 5/s -j DROP
iptables -I INPUT 1 -m hashlimit --hashlimit-name testdown --hashlimit-above 5/s -j DROP
  • 設置丟包率
iptables -I INPUT 1  -m statistic --mode random  --probability 0.8 -j DROP
  • 查看所有規(guī)則
iptables --list
  • 清空所有規(guī)則
iptables -F

1.2 find

  • 查找大文件
busybox find [PATH] -size +10000k
  • 按條件查找并執(zhí)行命令
find /root -size -5557c -size +5555c -exec ls -ld {} \;
  • 結(jié)合xargs
find . -name "*.java" | xargs grep -HRn 'AudioFormat.ENCODING_PCM_16BIT'
  • 查看指定目錄層級
busybox find /sdcard/test/ -maxdepth 4
  • notepad lazzy pattern
    用lazy pattern模式正則表達式搜索,"text":".?"*

1.3 mount

  • 掛載虛擬機虛擬文件系統(tǒng)
sudo mount -t vboxsf share /mnt
  • 掛載ci文件系統(tǒng)(for ubuntu)
mount.cifs -o username=username /////////////////path to ci package

1.4 計算器

echo | awk '{print (126+39+35+18+12+12+11+11+0.1)/4}'

1.5 sed

分析日志

// 查找識別結(jié)果
sed -n 's/.*,\("text":"[^"]*"\),.*/\1/p' log.txt
sed -n 's/.*SrSolution: ISS_SR_MSG_RESULT.*,\("text":"[^"]*"\),.*/\1/p' log.txt

2.adb命令

2.1 包管理相關

  • 查看應用包名信息
dumpsys package com.test.test
  • 根據(jù)組件名稱打開對應的Activity
// 打開Android原生設置頁面
am start -n com.android.settings/.Settings
  • 打開指定uri對應的Activity
am start "intent:#Intent;action=android.media.action.MEDIA_PLAY_FROM_SEARCH;\
S.android.intent.extra.focus=vnd.android.cursor.item%2Fartist;\
S.android.intent.extra.artist=Adele;end"
am start "intent:#Intent;action=android.intent.action.VIEW;\
category=android.intent.category.BROWSABLE;launchFlags=0x10200000;\
component=com.retton.h5/.WebActivity;\
S.title=%E6%97%A5%E6%9C%9F%2F%E6%97%B6%E9%97%B4;\
S.url=http%3A%2F%2Fwww.pingwest.com;end"
  • startService
am startservice -a com.test.VoiceKey -e StartFrom HomeVoiceButton
  • 外部調(diào)用
adb shell "am startservice -a com.test.dictionary -e param test -e data '"'[{"group":"","location":{"city":"合肥","country":"中國","province":"安徽"},"name":"張小三","phoneNumber":"13019001001","teleOper":"聯(lián)通","type":"工作"}]'"'"
adb shell "am startservice ... '"'JSON_TEXT'"'"

2.2 logcat

  • 過濾指定文本
    查看識別結(jié)果
adb logcat | sed -n 's/.*intent.*,"text":"\([^"]*\)",.*/\1/p'
  • 常用
logcat | busybox grep `ps | busybox grep "com.package.name$" | busybox awk -F " " '{print $2}'`
logcat | busybox grep `ps | busybox grep "com.package.name$" | busybox awk 'NR%2==1{T=$2;next}{print T"|"$2}'
logcat | grep -E `ps |grep account| busybox awk 'NR%2==1{T=$2;next}{printf T"|"$2}'`
adb logcat -vtime -d > ~/Desktop/dump.log

2.3 網(wǎng)絡抓包

tcpdump -i usb0 -s0 -w /data/local/tmp/`date "+%Y%m%d%H%M%S"`.pcap
tcpdump -i usb0 -s0 -vv tcp port 80 and host hostname

2.4 monkey命令

monkey -p com.package.name --pct-syskeys 0 100000

2.5 系統(tǒng)命令

  • wifi控制
svc wifi [enable|disable]
  • 數(shù)據(jù)流量控制
svc data [enable|disable]
  • 按鍵注入
input keyevent [--longpress] <key code number or name>
input keyevent HOME
input keyevent BACK

2.6 系統(tǒng)分析

  • 抓取CPU占用信息
echo 'H' | busybox top -d 1 | busybox tee /sdcard/top_`date "+%Y%m%d%H%M%S"`.log
  • 生成native trace
    執(zhí)行之后在/data/tombstones中生成native棧信息
debuggerd -b [pid]
  • 生成java虛擬機棧信息
    在/data/anr/traces.txt中生成虛擬機各線程調(diào)用棧信息
kill -3 [pid]
  • 獲取視圖樹
uiautomator dump /sdcard/dump.xml
  • 獲取CPU主頻信息
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
  • 查看虛擬機OOM ADJ
cat /proc/PID/oom_adj

3.簽名工具

3.1 列出密鑰庫中的條目

keytool -list -v -keystore debug.keystore

3.2 打印APK解壓出來的證書內(nèi)容

通過此方法能查看APK的簽名信息篡腌,包括SHA1等疟呐。

keytool -printcert -file META-INF/CERT.RSA

3.3 使用keystore給unsigned apk簽名

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias]

3.4 驗證APK的簽名狀態(tài)

jarsigner -verbose -verify -certs [apk]

3.5 查看APK信息

aapt dump badging {PATH}.apk

3.6 系統(tǒng)簽名導入keystore

將一般ROM的系統(tǒng)簽名(pk8私鑰和pem公鑰)導入到keystore中方便在ide或ci中自動化構(gòu)建译柏,步驟如下:

  • pk8私鑰轉(zhuǎn)成pem格式
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out key.pem
  • 導出p12證書
openssl pkcs12 -export -in platform.x509.pem -inkey key.pem -out platform.p12 -password pass:test -name test
  • 導入keystore
keytool -importkeystore -deststorepass test -destkeystore test.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass test
  • 檢證keystore簽名列表
keytool -list -v -keystore test.jks

4.git

4.1 gitbash

Windows系統(tǒng)通過gitbash默認push文件到android系統(tǒng)時會出現(xiàn)文件系統(tǒng)解析錯誤灸撰,導致找不到目標路徑挪捕,需在目標系統(tǒng)路徑前增加“/”:

adb push myfile //{path}/myfile

4.2 git

#刪除對文件的跟蹤粗梭,會修改commit id,只在本地使用
git filter-branch --tree-filter 'rm -f testme.txt' HEAD

忽略merge日志
git log --no-merges

查看從v2.6.12開始include/scsi和drivers/scsi目錄中的改動的日志
git log v2.6.12.. include/scsi drivers/scsi

導出兩周前開始的修改記錄到文件gitk级零,“--”是為了避免和名為gitk的分支沖突
git log --since="2 weeks ago" -- gitk

查看test分支有但release分支沒有的提交記錄断医,并顯示提交記錄修改的路徑信息
git log --name-status release..test

查看指定文件的修改記錄,包含該文件被重命名等操作前的修改記錄
git log --follow builtin/rev-list.c

本地有而遠端沒有的提交記錄
git log --branches --not --remotes=origin

本地master分支有而遠端master分支沒有的提交記錄
git log master --not --remotes=*/master

git log -p -m --first-parent

Shows the history including change diffs, but only from the “main branch” perspective, skipping commits that come from merged branches, and showing full diffs of changes introduced by the merges. This makes sense only when following a strict policy of merging all topic branches when staying on a single integration branch.

git log -L '/int main/',/^}/:main.c

Shows how the function main() in the file main.c evolved over time.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奏纪,一起剝皮案震驚了整個濱河市鉴嗤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌序调,老刑警劉巖醉锅,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異发绢,居然都是意外死亡硬耍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門边酒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來经柴,“玉大人,你說我怎么就攤上這事墩朦∨魅希” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵氓涣,是天一觀的道長牛哺。 經(jīng)常有香客問我,道長劳吠,這世上最難降的妖魔是什么引润? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮痒玩,結(jié)果婚禮上椰拒,老公的妹妹穿的比我還像新娘晶渠。我一直安慰自己,他們只是感情好燃观,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布褒脯。 她就那樣靜靜地躺著,像睡著了一般缆毁。 火紅的嫁衣襯著肌膚如雪番川。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天脊框,我揣著相機與錄音颁督,去河邊找鬼。 笑死浇雹,一個胖子當著我的面吹牛沉御,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昭灵,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼吠裆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烂完?” 一聲冷哼從身側(cè)響起试疙,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抠蚣,沒想到半個月后祝旷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嘶窄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年怀跛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柄冲。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡敌完,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羊初,到底是詐尸還是另有隱情,我是刑警寧澤什湘,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布长赞,位于F島的核電站,受9級特大地震影響闽撤,放射性物質(zhì)發(fā)生泄漏得哆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一哟旗、第九天 我趴在偏房一處隱蔽的房頂上張望贩据。 院中可真熱鬧栋操,春花似錦、人聲如沸饱亮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽近上。三九已至剔宪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間壹无,已是汗流浹背葱绒。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斗锭,地道東北人地淀。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像岖是,于是被迫代替她去往敵國和親帮毁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,458評論 1 26
  • 1. GIT命令 git init在本地新建一個repo璧微,進入一個項目目錄作箍,執(zhí)行git init,會初始化一個re...
    江邊一蓑煙閱讀 793評論 0 0
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,645評論 9 163
  • 本片內(nèi)容轉(zhuǎn)自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃兒閱讀 4,925評論 2 88
  • 今天剽悍晨讀的推薦的書籍是喬希.維茨金的《學習之道》前硫。文章闡述了三大學習秘訣:漸進理論胞得、軟區(qū)域、漩渦效應屹电。 01 ...
    宇宙玩家Lucy閱讀 210評論 0 0