常用命令
注:文中 "[ip] ,[包名],[apk路徑]"等位置整體替換。
- 查看已連接設備
adb devices
- adb wifi連接(需要數據線)
//查看Ip地址
adb shell ifconfig | grep Mask
//設置端口號
adb tcpip 5555
無線連接adb
adb connect [ip]:5555
//斷開連接
adb disconnect [ip]:5555
- 安裝應用
//安裝(升級或者同級覆蓋安裝)
adb install -r [apk路徑]
//允許降級安裝
adb install -d [apk路徑]
- 卸載應用
adb uninstall [包名]
- 清除應用緩存和數據
adb shell pm clear [包名]
- 關閉App
adb shell am force-stop [包名]
- 啓動App -n爲指定完整 component 名,用於明確指定啓動哪個 Activity
adb shell am start -n com.android.settings/.Settings
- 列出包名 可以加 | grep xxxx 過濾也可以不加直接後邊接要查詢的字符串
adb shell pm list packages xxxx
adb shell dumpsys package | grep xxxx
- 查找應用詳細信息和版本號
adb shell dumpsys package com.android.settings
adb shell dumpsys package com.android.settings | grep version
- 從設備複製文件到電腦
adb pull [設備裏的文件路徑] [電腦上的目錄]
adb pull data/anr/ /Desktop
- 從電腦複製文件到設備
adb push /Desktop/xxx.png /sdcard/
- 模擬點擊
adb shell input tap 50 50
- 模擬按鍵
adb shell input keyevent [keycode]
keycode | 含義 |
---|---|
3 | centered HOME 鍵 |
4 | 返回鍵 |
5 | 打開撥號應用 |
6 | 掛斷電話 |
24 | 增加音量 |
25 | 降低音量 |
26 | 電源鍵 |
27 | 拍照(需要在相機應用裏) |
64 | 打開瀏覽器 |
82 | 菜單鍵 |
85 | 播放/暫停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移動光標到行首或列表頂部 |
123 | 移動光標到行末或列表底部 |
126 | 恢復播放 |
127 | 暫停播放 |
164 | 靜音 |
176 | 打開系統設置 |
187 | 切換應用 |
207 | 打開聯繫人 |
208 | 打開日曆 |
209 | 打開音樂 |
210 | 打開計算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系統休眠 |
224 | 點亮屏幕 |
231 | 打開語音助手 |
276 | 如果沒有 wakelock 則讓系統休眠 |
- 模擬滑動
adb shell input swipe 300 300 500 500
- 位於文本框時,文本框要獲取焦點並可以輸入此時可通過input鍵入文本
adb shell input text hello
- 日誌(注: 在 macOS 下需要給 :W 這樣以 * 作爲 tag 的參數加雙引號,如 adb logcat “:W”,不然會報錯 no matches found: *:W。)
adb logcat [過濾]
例如: adb logcat ":W"
- 清空日誌
adb logcat -c
- 獲取設備屬性信息(更多信息查看:常用命令參考)
adb shell getprop ro.product.model
- 獲取設備Dpi屏幕密度
adb shell wm density
- 獲取設備屏幕大小(像素)
adb shell wm size
- 屏幕截圖結合adb pull 可以導入電腦中
//-p 指定保存文件爲 png 格式
adb shell screencap -p /sdcard/sc.png
- 屏幕錄屏adb pull 可以導入電腦中
adb shell screenrecord /sdcard/filename.mp4
- 查看進程
adb shell ps
- 查看實時資源佔用情況
adb shell top
- 查看某個app的進程id
adb shell dumpsys package [包名] | grep userId=
- 查看monkey進程Id
adb shell ps | grep monkey
- 殺死進程
adb shell kill [進程Id]
其他應用
內置一個系統App
1.Android系統簽名,兩種方式
- 對Apk重新簽名
libconscrypt_openjdk_jni.dylib 是signapk.jar執行需要的動態庫,是編譯安卓源碼生成的 mac環境在Android/aosp/out/host/darwin-x86/lib64/目錄下,重新簽名需要用到。
platform.x509.pem 和 platform.pk8 爲rom的證書,祕鑰等信息,如果不一致會安裝不了。
使用signapk.jar和系統簽名信息重新簽名apk:
java -Djava.library.path=. -jar signapk.jar keys/platform.x509.pem keys/platform.pk8 xxx.apk xxx.apk
- 生成一個新的系統簽名
下載工具keytool-importkeypair
然後把keytool-importkeypair工具,platform.x509.pem, platform.pk8放在同一文件夾下:
如果之前不存在xxx.jks,執行:
keytool-importkeypair -k ./xxx.jks -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
他會生成一個xxx.jks的新簽名 密碼爲android 別名爲platform
如果之前有了簽名xxx.jks,執行:
keytool-importkeypair -k ./xxx.jks -p xxx.jks的密碼 -pk8 platform.pk8 -cert platform.x509.pem -alias xxx
他會導入並覆蓋之前簽名的pk8和x509,-alias別名最好和之前的保持一致他會提示:存在現有條目別名 xxx, 是否覆蓋? [否]: 輸入 是
提示導入成功
兩種方式區別不大但是完全重新生成的那種不會有之前的信息的干擾更純淨一些建議使用重新生成的方式。
可以通過以下命令查看簽名信息:
keytool -v -list -keystore xxx.jks
2.需要在AndroidManifest文件manifest標籤下添加
android:sharedUserId="android.uid.system"
3.進入設備命令行
adb shell
重新掛在系統文件夾
mount -o rw,remount /system
把普通的安裝好的apk文件夾移動到系統文件夾下(mv cp命令查看 常用命令 標題結尾處的鏈接)
mv /data/app/com.xxx.xxx-c_6g96hdmjaMzppiPTIPyg\=\=/* /system/priv-app/XXXAPP
或者
cp -r /data/app/com.xxx.xxx-c_6g96hdmjaMzppiPTIPyg\=\=/* /system/priv-app/XXXAPP
重啓
adb reboot