一、常用的简单adb命令
1.显示当前运行的设备列表和状态: adb devices
2.启动ADB : adb start-server
3.停止ADB: adb kill-server
4.安装应用程序: adb install -r [apk文件]
参数 | 解释 |
---|---|
-l | 锁定该程序 |
-r | 重新安装该程序,保存数据,覆盖安装 |
-s | 安装在SD卡内,而不是设备内部存储 |
例:adb install --r D:\mm.apk
5.卸载应用程序: adb uninstall [packagename]
参数 | 解释 |
---|---|
-k | 不删除程序运行所产生的数据和缓存目录(如软件的数据库文件) |
- 例:
adb uninstall com.tencent.mm
- 例:
adb uninstall -k com.tencent.mm
- 将手机设备中的文件copy到本地计算机:
adb pull 设备目录 本地目录
例:adb pull /sdcard/mm.txt D:\(讲内存卡根目录的txt文件copy到D盘根目录)
7.将本地计算机的文件copy到手机设备中
adb push 本地目录 手机设备目录
例:adb push D:\mm.txt /sdcard
8.查看adb命令帮助信息: adb help
9.截屏例:adb shell screencap -p 截图文件路径
10.重启adb reboot
11.备份adb backup [-f <file>] [-apk|-noapk][-shared|-noshared] [-all] [-system|nosystem] [<packages...>]
例:adb backup -f mm.ab -noapk -noshared -nosystemcom.tencent.mm
adb backup -all
:它将使用默认方式备份应用和设备的数据(不包含apk)到当前目录下并保存为文件
对各个参数的解释:
参数 | 解释 |
---|---|
-f <file> | 用这个来选择备份文件存储在哪里,例如-f /backup/mybackup.ab将会使文件存储在根磁盘(Windows的C盘等等)下一个名为backup的文件夹里,并且备份文件名为mybackup.ab |
-apk|-noapk | 这个决定是否在备份里包含apk或者仅仅只备份应用数据,个人推荐使用-apk以免有的应用在应用市场找不到,如果不使用则默认的是-noapk |
-shared|-noshared | 这个参数用于决定是否备份设备共享的SD card内容,默认是-noshare,主要包括内部存储中的音乐、图片和视频,因此为保险起见,建议加上-share |
-all | 这个参数是一种简单地表达“所有应用”的说法,package参数可以选择备份单独的应用,如果你不是备份某个应用,使用-all备份整个系统 |
-system|-nosystem | 这个参数决定-all标签是否包含系统应用,默认的是-system,根据情况可选择是否用-nosystem |
<packages...> | 如果你知道应用安装包的名称(例如com.google.android.apps.plus),就可以使用该参数备份特定应用。 |
12.当决定如何执行备份后,输入你喜欢的命令,在华为G700上测试,使用命令
adb backup -apk -all
- 使用run-as在非root情况获取沙盒数据(前提是开启debuggable模式)
1. shell@android:/data $ run-as com.your.package
2. run-as com.your.package
3. shell@android:/data/data/com.your.package $ cd /data/data/com.your.package
4. cd /data/data/com.your.package
5. shell@android:/data/data/com.your.package $ ls
6. ls
7. cache
8. databases
9. lib
10. shared_prefs
11. shell@android:/data/data/com.your.package $ cd databases
12. cd databases
13. shell@android:/data/data/com.your.package/databases $ ls
14. yourpackagename.db
15. $ cat preferences.db > /mnt/sdcard/yourpackagename.db
将你要访问的package目录下的db文件拷贝到sdcard中,这样就可以正常访问了! 对文件进行增删
方法1:
adb shell "run-aspackage.name chmod 666 /data/data/package.name/databases/file"
adb pull /data/data/package.name/databases/file .
adb shell "run-aspackage.name chmod 600 /data/data/package.name/databases/file"
adb exec-out run-as package.name cat databases/file > file
方法2:>
adb shell shell $ run-as com.example.package shell $ chmod 666 databases/fileshell $ exit
'run-as' shell $ cp /data/data/package.name/databases/file /sdcard/shell $ run-as com.example.packageshell $ chmod 600 databases/file> adb pull /sdcard/file .
二、adb shell命令
1.列出手机装的所有apk包名
adb shell pm list packages
系统应用:adb shell pm list packages -s
第三方应用:adb shell pm list packages -3
列出来源:adb shell pm list package -i
列出报名和路径:adb shell pm list package -f
使用grep过滤 :adb shell pm list packages | grep qq
2.列出apk的位置
adb shell pm path [packagename]
3.列出应用的详细信息
adb shell pm dump [packagename]
4.清除应用缓存信息:
adb shell pm clear [packagename]
5.安装卸载手机应用
`adb shell pm install 目录/test.apk```
参数 | 解释 |
---|---|
adb shell pm install 目录/test.apk | 安装 |
adb shell pm install -r 目录/test.apk | 重新安装该程序,覆盖安装 |
adb shell pm install -k [packagename] | 卸载,加k保留缓存数据 |
adb shell pm install -d apk | 允许降级安装 |
adb shell am
1.启动一个Activity
adb shell am start -n [activityname]
2.等待页面启动完成
adb shell am start -W [activityname]
3.先停止应用再启动
adb shell am start -S [activityname]4.结束应用
adb shell am force-stop [packagename]`
adb shell dumpsys
1.查看指定包名应用的数据库储存信息(包括储存的SQL语句)
例:adb shell dumpsys dbinfo [packagename]
2.查看指定的进程或则进程id的内存信息
adb shell dumpsys meminfo [packagename/pid]
可以查看进程当前的内存情况
例:adb shell dumpsys meminfo com.tencent.mm
3.查看指定包名应用的详细信息(相当于AndroidMainfest.xml中内容)
adb shell dumpsys [packagename]
例:adb shell dumpsys com.tencent.mm
4.查看当前应用的activity信息adb shell dumpsys activity top
5.通知信息
adb shell dumpsya notification
6.wifi信息
adb shell dumpsys wifi
7.电池信息
adb shell dumpsys battery
8.电源信息
adb shell dumpsys power
9.最近12小时的资源情况
adb shell dumpsys procstats --hours 12
三、其他命令
1.关闭进程(monkey为例):
ps |grep monkey
:查看monkey进程的pid
kill pid
:杀死monkey迸程
2.录制屏幕命令:
ad shell screenrecord/sdcard/demo.mp4
可选参数:
参数 | 作用 |
---|---|
--time-limit | 限制录制时间 |
-size | 指定视频分辦率大小 |
L-bit-rate | 指定视频的比特率 |
-verbose | 在命令行显示log |
3.截图命令
adb shell screencap -p /sdcard/screen.png
4.input命令:
adb shell input:
可选參数:
参数 | 作用 |
---|---|
text | 输入文本 |
keyevent | 输入事件 |
tap | 点击 |
swipe | 滑动<坐标><坐标为原地,则是长按> |
5、关于获取当前页面的信息:
adb shell dumpsys activity top |findstr ACTIVITY
adb shell dumpsys activity |findstr mFocusedActivity
app 入口,两种方式获取:
- 通过 logcat 日志获取
Mac/Linux:adb logcat ActivityManager:I | grep “cmp"
Windows:adb logcat ActivityManager:I | findstr "cmp"
- 通过 aapt 获取
Mac/Linux:aapt dump badging wework.apk | grep launchable-activity
Windows:aapt dump badging wework.apk | findstr launchable-activity
启动应用命令adb shell am start -W -n <package-name>/<activity-name> -S
5.记录无线通讯日志:
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
adb shell logcat -b radio
6.访问数据库SQLite3 adb shell sqlite3#cd system/sd/data
//进入系统内指定文件夹
- #ls //列表显示当前文件夹内容
- #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件
- #rm xxx //删除文件xxx
- #rmdir xxx //删除xxx的文件夹
7.导出设备信息
adb get-serialno > 序列号.txt
adb shell cat /sys/class/net/wlan0/address > MAC地址.txt
adb shell getprop ro.product.model > 设备型号.txt
adb shell getprop ro.build.version.release> 系统版本.txt
adb shell pm list packages -s > 系统应用的所有包名.txt
adb shell pm list packages -3 > 第三方应用包名.txt
adb shell wm size > 屏幕分辨率.txt
adb shell wm density > 屏幕密度.txt
adb shell cat /proc/cpuinfo > CPU信息.txt
adb shell pm list permissions -f > 权限.txt
adb shell pm list users -f > 用户.txt
8.生成当前页面的xml文件
adb shell uiautomator dump [file]
参数 | 解释 |
---|---|
text | 控件中显示的文本内容 |
class | 控件的类型 |
package | 包名 |
content-desc | 说明 |
checkable | 是否允许check |
checked | check状态 |
clickable | 是否允许click |
enabled | 控件状态 |
focusable | 是否允许获取焦点 |
focused | 是否获耶到焦点 |
scrollable | 是否允许滚动 |
long-clickable | 是否允许长安 |
password | 是否是密码控件 |
selected | select状态 |
bounds | 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标 |
8.打印页面的log
adb shell logcat -s Activitymanager
adb logcat -s LocalMediaScanner
:查看LocalMediaScanner部分日志
9.系统操作指令
adb shell getprop ro.product.model
获取设备型号
adb shell getprop ro.build.version.release
获取设备 Android 系统版本
adb get-serialno
获取设备的序列号(设备号)
adb shell wm size
获取设备屏幕分辨率
adb shell dumpsys activity |find "mFocusedActivity"
查看前台应用包名,适用于 Android 7.0 以下,必须先启动
appadb shell dumpsys activity |find "mResumedActivity"
查看前台应用包名,适用于 Android 8.0 以上,必须先启动 app
四、反编译常用命令:
1.查看当前进程的内存的加载情况啊:
cat /proc/7654/maps
:查看当前进程内存的映射情况
2.查看当前应用使用的端口号信息:
cat /proc/[pid]/net/tcp
3.查看进程的状态信息:
cat /proc/[pid]/status
:可以通过该命令获取到当前进程的包名,PID,PPID等等重要信息(比较实用的命令)
4.查看一个dex文件的详细信息
dexdump [dex文件路径]
5.使用aapt命令获取apk的清单文件
aapt dump xmltree [apk包] [需要查看的资源文件xml]
例:aapt dump xmltree mm.apk AndroidMainfest.xml > demo.txt
(讲mm应用中的AndroidMainfest.xml文件导入到新建的demo.txt文本中)
五、获取app崩溃日志
adb shell dumpsys dropbox --print > crash.txt