-
进入通知栏权限
adb shell am start -a "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"
-
查看alarm状态
adb shell dumpsys alarm
-
查看唤醒锁持有:
adb shell dumpsys power | grep "Wake Locks" -C 3
-
启动设置
adb_launch_setting='adb shell am start -n com.android.settings/.Settings'
-
启动/关闭wifi
"adb shell svc wifi enable(ddisable)"
-
当前activity
adb shell dumpsys activity activities | grep mResumedActivity
-
所有当前服务
adb shell dumpsys activity services
-
查看当前设备ip
adb shell ip link
查看到所有网卡设备- 或者可以通过
adb shell netcfg
查看,这种方式可以看到运行中设备 ifconfig {设备}
-
procrank
可以用来查看内存占用情况Draven:/ # procrank -h Usage: procrank [ -W ] [ -v | -r | -p | -u | -s | -h ] -v Sort by VSS. -r Sort by RSS. -p Sort by PSS. -u Sort by USS. -s Sort by swap. (Default sort order is PSS.) -R Reverse sort order (default is descending). -c Only show cached (storage backed) pages -C Only show non-cached (ram/swap backed) pages -k Only show pages collapsed by KSM -w Display statistics for working set only. -W Reset working set of all processes. -o Show and sort by oom score against lowmemorykiller thresholds. -h Display this help screen.
-
设置系统时间
adb root && adb remount adb shell date "MMDDhhmm[[CC]YY][.ss]" e.g: adb shell date 0717045922.30
-
通过adb获取traceview文件:
要通过ADB获取TraceView文件,您可以按照以下步骤操作: 首先,将您的Android设备连接到计算机,并确保已启用USB调试选项。您可以在设备设置的“开发者选项”中启用此选项。 打开命令行或终端窗口,并输入以下命令来启动TraceView工具: `adb shell am profile <PROCESS_NAME> start <TRACE_FILE>` 其中,<PROCESS_NAME> 是您要分析的应用程序的包名,<TRACE_FILE> 是TraceView文件的路径和文件名。 等待应用程序运行一段时间后,使用以下命令停止TraceView: adb shell am profile <PROCESS_NAME> stop 最后,使用以下命令从设备上复制TraceView文件到计算机上: php Copy code adb pull <TRACE_FILE> 其中,<TRACE_FILE> 是您在第二步中指定的TraceView文件的路径和文件名。 完成上述步骤后,您就可以在计算机上打开TraceView文件并分析应用程序的性能了。
-
获取系统状态:
adb shell dumpstate
-
logcat -G size(K/M)
是不是越大越好?- 增加缓冲区大小的好处是可以保存更多的日志信息
- 内存占用增加,系统性能下降
- 日志刷新延迟
-
打印当前设备上的日志并退出,可以获取当前设备上的最新日志.
adb shell logcat -d
-
过滤
adb shell logcat -e <filter>
-
通过pem,pk8生成jks
keytool-importkeypair -k platform.jks -p aispeech@2023 -pk8 platform.pk8 -cert platform.x509.pem -alias ccui
-
查看jks 256
keytool -list -v -keystore ***.jks
-
查看apk签名:
apksigner verify --print-certs xxx.apk
-
重签apk:
-
将apk解压
-
删除文件夹
META-INF
-
将所有内容再assemble为apk
-
签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my-app-release-unsigned.apk alias_name
-
对齐(可选)
zipalign -v 4 my-app-release-unsigned.apk my-app-release.apk
-
-
获取应用当前运行状态
adb shell kill -3 {pid}
目录:/data/anr
-
查看进程运行时长:
adb shell ps -o etime {pid}
-
切换到后台执行
nohup bash make_jenkins.sh ccui img | tee build.log &
-
查询所有disable的包:
adb shell pm list packages -d
-
adb logcat指定tag
adb shell logcat -v threadtime -s TAG1 TAG2
-
adb 中的 -v 有啥用?
-v threadtime
是一个格式选项,用于指定日志消息的输出格式。此外还有- brief:简短格式,仅显示日志消息的优先级和消息内容。
- process:仅显示进程ID(PID)、优先级和消息内容。
- tag:仅显示标签和消息内容。
- raw:原始输出格式,不添加任何前缀信息。
- time:显示简单的时间戳格式(时:分:秒)以及消息内容。
- long:更详细的输出格式,包括日期、时间、进程ID、线程ID、优先级、标签和消息内容。
-
grep
查看附近N行#后N行 grep -A N {keyword} #前N行 grep -B N {keyword} #前后N行 grep -C N {keyword}
-
模拟点击按钮
- 首先通过指令
adb shell uiautomator dump
获取坐标 - 接着通过指令
adb shell input tab x y
执行点击
接入要执行100次,可以通过for i in {1..100};do adb shell input tab x y;sleep 10;done
完成 adb shell input keyevent --longpress {code}
模拟长按
- 首先通过指令
-
查看大文件
find ${path} -type f -size +100M
-
查找文件並執行:
find . -type (d|f) -(i)name "*substr*" -exec cat {} (+|\;)
-
查找关键内容
grep -rnE "your_regex_pattern" /path/to/directory
r
:递归搜索子目录。n
:显示匹配行的行号。E
:使用扩展的正则表达式(仅适用于egrep
,grep -E
是等效的)。
-
xargs
用法
xargs
命令用于将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。以下是一些常见的使用方式:
echo 'splitXsplitXsplit' | xargs -dX
:使用xargs
的d
选项,可以指定输入参数的分隔符,这里我们将splitXsplitXsplit
分割为三个独立的参数。find . -type f -name "*.txt" | xargs rm
:在这个例子中,find
命令找到所有以.txt
结尾的文件,然后通过xargs
将这些文件作为rm
命令的参数,从而实现删除所有.txt
文件。ls | xargs -n 1 echo
:n
选项指定了每次传递给echo
命令的参数数量。这里我们指定每次只传递一个参数,所以echo
命令会被执行多次,每次打印一个文件名。
这些只是xargs
的一些常见用法,实际上xargs
可以与各种命令组合,实现各种复杂的功能。
还可以采用-I指定参数到{}.然后再后续拼接
adb shell ls "/storage/emulated/0/*.wav" | xargs -I {} adb pull {}
grep
命令时,-e
和-E
选项有不同的作用:
-e 用法:
grep -e "pattern1" -e "pattern2" filename
-E用法
grep -E "pattern1|pattern2" filename
-
scp
上传文件-
使用scp上传文件:
scp [-r] [-P prot] local_file_path username@hostname:remote_file_path
这里:
local_file_path
是你要上传的本地文件的路径。username
是你在远程主机上的用户名。hostname
是远程主机的主机名。remote_file_path
是你希望在远程主机上存储文件的路径。-r
如果是文件夹,则需要递归-P
记得要大写指定端口
例如,如果你要将本地的文件
/home/user/document.txt
上传到远程主机example.com
(你的用户名是user
)的/home/user/documents
目录下,你可以使用以下命令:scp /home/user/document.txt user@example.com:/home/user/documents
-
-
使用
scp
从服务区拉取文件。这个就不多说了,只需要上面的本地还有云端的顺序调换一下即可
-
挂载U盘
lsblk
查看U盘设备,通常是在/dev
下,例如/dev/sda3
mkdir {dir}
创建要挂载的目录mount /dev/sd3 {dir}
完成挂载 -
可以通过下面的指令,查看到对应的windows,这就是遍历的顺序
adb shell dumpsys input
Windows: 0: name='Window{2554c17 u0 com.aispeech.ccui.systemui}', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=true, hasWallpaper=false, visible=true, canReceiveKeys=true, flags=0x01000020, type=0x000007f9, frame=[0,0][42,1200], globalScale=1.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][42,1200], inputFeatures=0x00000000, ownerPid=28009, ownerUid=1000, dispatchingTimeout=5000ms 1: name='Window{f7f513d u0 com.aispeech.ccui_lenovo_t30.voice/com.aispeech.ccui.setupwizard.activity.ProtocolDetailActivity}', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=true, flags=0x81810520, type=0x00000001, frame=[0,0][1920,1200], globalScale=1.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1200], inputFeatures=0x00000000, ownerPid=25593, ownerUid=1000, dispatchingTimeout=5000ms 2: name='Window{373e223 u0 com.aispeech.ccui_lenovo_t30.voice/com.aispeech.ccui.setupwizard.activity.ProtocolActivity}', displayId=0, portalToDisplayId=-1, paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=true, flags=0x81810520, type=0x00000001, frame=[0,0][1920,1200], globalScale=1.000000, windowScale=(1.000000,1.000000), touchableRegion=[0,0][1920,1200], inputFeatures=0x00000000, ownerPid=25593, ownerUid=1000, dispatchingTimeout=5000ms Global monitors in display 0: