- 将日志输出到文件
adb logcat > log.txt
//**过滤特定应用的日志**: 如果你只想查看某个特定应用的日志,可以使用 `-s` 选项配合你的应用标签
adb logcat -s YourAppTag:V
文件操作
- 拷贝电脑文件到 sdcard
adb push C:\my_files\* /data/data/com.example.app/
- 从 sdcard 拷贝文件到电脑
adb pull data/data/com.example.app/ C:\my_files
- 查看进程
ps -A|grep walle
- 查看设备信息
cat /data/devinfo.txt
- 查看应用安装路径
cd /vendor/app/
pm path com.tcl.walleve
查看性能数据
- 查看焦点
dumpsys window | grep mFocus
- 查看应用启动时间(线下使用方便不能带到线上)
am start -W com.xx.xx/com.xx.xx.首屏Activity
ThisTime: 最后一个 Activity 启动耗时
TotalTime:所有一个 Activity 启动耗时
WaitTime:AMS 启动 Activity 的 总耗时
- 查 cpu
top -m 10 -s cpu(-m显示最大数量,-s 按指定行排序)
- 获取指定进程 的 cpu
top -m 10 -s cpu -n 1 | grep packagename
- 获取 cpu 硬件信息
cat /proc/cpuinfo 获取cpu 硬件信息
cat /proc/stat
- 查看 cpu 信息
top -H |grep walleve
- 查看每个进程使用cpu的详细信息
dumpsys cpuinfo
- fps 值获取
dumpsys SurfaceFlinger
- 查看指定程序内存使用情况
dumpsys meminfo packagename
进程相关
- `kill -3
命令用于打印System_Server进程各个线程的Java调用栈,根据线程状态及调用栈来更进一步定位问题点。例如,当执行`adb shell kill -3 <pid>`命令时,如果进程是Dalvik应用,则会打印出该应用中所有线程的当前状态,并且并不是强制退出。这些状态通常保存在一个特定的叫做trace的文件中,一般的路径是`/data/anr/trace.txt`。
- 抓堆栈
复现时,可操作及时抓取下trace.txt
第一步:获取pid
dumpsys meminfo com.xxx | grep pid
第二步:抓线程Trace信息
kill -3 pid //这条命令用于向特定的进程(由进程标识符 pid 指定)发送 `SIGQUIT` 信号。
第三步:导入trace文件
再帮忙取下 /data/anr 下的文件。 cp -r /data/anr u盘路径
- 查看进程号
top |grep com.xx.xxx"
如果已经执行了 adb shell ,则可以不用加引号
- 查看某个包名的进程id
ps -A | grep com.kidsedu
- 查看当前进程
adb shell "ps |grep com.apache"
ps -A |grep com.tcl.soundbox
- 查看应用进程信息:top | grep PID
top | grep 8446
- 杀进程
kill -9 进程号,
- 连接设备
adb connect 192.168.10.101
日志相关
- 查询日志开关
getprop persist.sys.log.level
打开日志:getprop persist.sys.log.level v
关闭日志:getprop persist.sys.log.level s
- 抓取 crash log,在升级后出现闪退的机器中执行如下命令
1.adb shell dumpsys dropbox --print >dropbox.log
2.adb bugreport >bugreport.zip
3. adb shell dumpsys dropbox --print
- 阻止串口一直不停执行内核打印
echo 0 > /proc/sys/kernel/printk
- 清空过期日志
logcat -c
- 保存日志到文件
logcat >/data/test.log
logcat -v time > D:\Logcat\logcat.log //将日志保存到 logcat.log 文件中
logcat -v time > /mnt/xxx(U盘路径) //保存日志到 u 盘
- 日志过滤
logcat -v time |grep Soundbox // 过滤出 包含 Soundbox 关键字的日志
logcat -v time |grep -E "Soundbox|Jar" //-E 代表匹配多个关键字
logcat| grep pid //查看某个进程所有的日志 (pid 可以通过 ps -A |grep 包名查看)
- 设置和查看日志缓存
//查看logcat 缓存大小
logcat -g
//设置logcat 缓存大小
logcat -G 50M
-
清除控制台过期的日志
-
提示无法安装:
adb shell settings put global package_verifier_enable 0
adb shell settings put global verifier_verify_adb_installs 0
//tv设置可以安装应用命令(提示:install apk has be disabled from pm by system default!)
setprop persist.tcl.debug.installapk 1
setprop persist.tcl.installapk.enable 1
查看应用信息
- 查看 某个应用的内存信息
dumpsys meminfo packageName
dumpsys meminfo packageName | grep pid
- 查看 activity 栈变化
dumpsys activity containers
- 查看某个包名的所有 activity
adb shell dumpsys activity activities | grep "com.example.package"
- 查找特定的 Activity
adb shell dumpsys activity activities | grep com.example.package/.MyActivity
- 查看当前显示的 activity
dumpsys activity activities |grep mResumed
dumpsys window | grep -i currentfocus
将会输出:
mResumedActivity: ActivityRecord{6f2d140 u0 com.tcl.appreciate.art/.ui.sysaver.preview.sys.SysSaverPreviewActivity t3189}
- 查看当前显示的 window
dumpsys window displays | grep mFocuse
dumpsys window | grep mFocuse
- 查看应用安装路径
pm list packages -f | grep "com.apache.android"
- 查看正在运行的 Services
dumpsys activity services [<packagename>]
- 查看应用的详细信息
adb shell dumpsys package <packagename>
//查看 APK 路径
adb shell dumpsys package com.apache.android|grep path
- 查看应用版本号
dumpsys package packageName | grep versionName
- 查apk安装路径
pm list packages -f | grep 包名
- disable 某个应用
adb shell pm disable packagename
- enable 某个应用
adb shell pm enable packagename
- 查看被 disable 的命令
pm list packages -d
- 查看系统版本、设备型号信息
cat /data/devinfo.txt
输出:
devid=8dbac9b3484252cb52609ff1e85ab08e75a312f8
sv=V8-T653T11-LF1R015
hv=MT9653
devmodel=XXX-CN-MT9653-C11G
文件操作
- 导出 anr 文件
1. 先将 anr 文件夹拷贝到 sdcard
adb shell ->cd data -> cp -r anr /sdcard/Android
2. 将文件从 sdcard 拷贝到电脑
adb shell pull /sdcard/Android/anr C:\Users\Desktop
- 截屏
/system/bin/screencap -p /sdcard/screenshot.png
- 录视频
screenrecord --time-limit 10 /sdcard/demo.mp4 参考:https://blog.csdn.net/gdutxiaoxu/article/details/69802895
启动组件
- am start 启动Activity
adb shell am start -a com.noahedu.noahdict.screenshots.recognition --ei type 5
上面的命令对应的代码就是
Intent intent = new Intent("com.noahedu.noahdict.screenshots.recognition");
intent.putExtra("type", 5);
startActivity(intent);
-a action;activity对应的action;
--es key stringValue; 传递 String 参数;
--ez key booleanValue; 传递 Boolean 参数;
--ei key intValue; 传递 int 参数;
--el key longValue; 传递 long 参数;
--ef key floatValue; 传递 float 参数;
- 启动 service
//不带参数
adb shell am startservice -n com.apache.test/.portal.service.SoundboxService
//带参数
adb shell am startservice -n com.apache.test/.portal.service.SoundboxService -es param exit
//带 action 和多参数
adb shell am startservice -n com.apache.test/.portal.service.SoundboxService -a com.apache.test.action -es strparam "" -ei intParam 1
-es: String 类型参数
-ei: Int 类型参数
- 命令发送广播
am broadcast -a 【action】-p 【包名】
例子:
am broadcast -a tcl.sys.intent.action.RC_UNCONNECTED -p com.tcl.settings
am broadcast -a tcl.sys.intent.action.STR_RESUME_COMPLETED -p com.tcl.settings
- monkey
执行
adb shell monkey -s 10 --pct-touch 30 --throttle 300 -p com.kidsedu 10000 --monitor-native-crashes
adb shell monkey -s 10 --pct-touch 30 --throttle 300 -p com.kidsedu -v 10000 --monitor-native-crashes
停止monkey:
1. 通过命令 adb shell ps 找到 moneky 所在的进程 pid(monkey进程的名字为:com.android.commands.monkey)
2. adb shell kill pid
- clear 清除应用数据
pm clear com.tencent.karaoke
- 电脑输入文字到手机
adb shell input text "www.baidu.com"
应用管理
- 启动指定包名的应用
adb shell am start -n packageName
- 启动应用/ 调起 Activity
命令格式:
am start [options] <INTENT>
例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI
表示调起微信主界面。
am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"
- 不指定Activity名称启动(启动主Activity) 命令格式:
adb shell monkey -p -c android.intent.category.LAUNCHER 1
例如:
adb shell monkey -p com.tencent.mm -c android.intent.category.LAUNCHER 1
表示调起微信主界面。
- 强制停止应用
adb shell am force-stop packageName
- adb install -r/-s
使用adb install命令可以从开发用电脑中复制应用程序并且安装到模拟器或手机上,adb install命令必须指定待安装的.apk文件的路径; -r:保留数据和缓存文件,重新安装apk -s:安装apk到sd卡
- adb reboot
作用:重启连接成功的设备。
如果连接了多个设备可以指定重启其中一个设备,命令如下
adb -s xxx reboot
- adb shell cat /sys/class/net/wlan0/address
作用:获取机器mac地址;
说明:adb shell命令表示进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令;
adb shell netcfg //查看当前连接成功手机的ip地址;
Shell 命令
- adb forward tcp:8000 tcp:9000
作用:执行此命令后, PC端的8000端口会被adb监听, 这个时候我们只需要往8000端口写数据, 这个数据就会发送到手机端的9000端口上,一般用来主机和移送设备进行额外的数据传输;
- adb shell am XX
常见的命令如下所示: //启动 Activity adb shell am start -W com.kidsedu.test/com.kidsedu.ui.MainActivity a:adb shell am start [options] intent; //使用Action方式打开系统设置-输入法设置 adb shell am start -a android.settings.INPUT_METHOD_SETTINGS //使用组件名方式启动照相机功能 adb shell am start -ncom.android.camera/.Camera //打开拨号界面,并传递一个DATA_URI数据给拨号界面 am start -a android.intent.action.CALL-d tel:10086
adb shell am monitor //监控程序的crash和anr错误; adb shell am start -W com.some.package/com.some.package.MainActivity
- 查看sp中数据
adb shell -> run-as com.kidsedu 参考:www.jianshu.com/p/5648fdba8…
monkey
- 开始 monkey
adb shell monkey -p com.kidsedu --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v –s 10000 100000 > /Users/jerry/Documents/monkey_log.txt
- 停止 monkey
1. 找出 monkey所在进程
adb shell ps |grep monkey
2. kill -9 pId
- 获取权限
sitadebug
sitadebug -d 证书内容
sitadebug -t 日期 20220506 -d证书内容
- U盘挂载
mount -o rw,remount /
U盘安装
setprop persist.tcl.debug.installapk 1
setprop persist.tcl.installapk.enable 1
setenforce 0
pm install -r /mnt/usb/U盘路径/APK/包
- 写入变量到系统中(跟应用安装、卸载无关)
setprop persist.url.Gloable.log true 打开日志
setprop persist.url.Gloable.log false 关闭日志
setprop persist.url.tedulauncher.env release 配置域名环境为正式
setprop persist.url.tedulauncher.env debug 配置域名环境为测试
- adb 读取属性名称
adb shell getprop persist.sys.logd.level