常用命令
注:文中 "[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