####
常用命令
- 查看当前view 的数量,和数据库地址
1 | adb shell dumpsys meminfo com.duowan.gamevoice |
- dump hprof 必须 是/data/local/tmp/目录
1 | adb shell am dumpheap com.duowan.gamevoice /data/local/tmp/test001.hprof |
拉取到电脑当前目录下
1 | adb pull /data/local/tmp/test001.hprof |
3.Mat 查看导出来的hprof 需要转换
转换之后Mat 就可以打开了
1 | hprof-conv test001.hprof test001_new.hprof |
4.查看当前activity数量
查看当前运行activity 栈
1 | adb shell dumpsys activity activities |
查看当前运行的activity
1 | adb shell dumpsys activity activities | sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p' |
1 | adb shell dumpsys activity ----------查看ActvityManagerService 所有信息 |
adb 查看当前系统的版本号
1 | adb shell getprop ro.build.version.release |
查看当前系统里面WakeLock的使用规则
1 | adb shell dumpsys powe |
获取数据库
1 | adb shell run-as com.duowan.gamevoice |
sqlite3 123.db 打开数据库查询
退出sqlite3
…> 的时候输入分号退出;
1 | ...> ; |
sqlite> 输入.exit或者.quit
1 | sqlite> .quit |
如果想列出该数据库中的所有表,可:
1 | .table |
如果想查看这些表的结构:
1 | select * from sqlite_master where type="table"; |
1 | #写个脚本快速dump 出内存堆 |
1 | chmod +x dump_process_java_heap.sh |
Debug.startMethodTracing(“/sdcard/gameVoiceMethodTrace_app”);
getPackageInfo 是耗时任务
环境变量设置
1 | vim ~/.zshrc |
在~/.zshrc 文件中输入环境变量 ,或者加载环境变量,/etc/profile里面是一些export环境变量
export PATH=$PATH:
1 | source /etc/profile |
查看某个库的依赖
1 | ./gradlew :gamevoice_client:dependencyInsight --configuration debugRuntimeClasspath --dependency stdlib |
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来
1 | # find . -name "*.c" |
将目前目录其其下子目录中所有一般文件列出
1 | # find . -type f |
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
1 | # find . -ctime -20 |
systrace 生成html
1 | systrace.py -a com.duowan.gamevoice view gfx sched am dalvik -t 15 |
1 | systrace.py -a com.duowan.gamevoice sched freq idle am wm gfx view binder_driver hal dalvik camera input res -t 20 |
只要带上sched 就可以看到自定义的beginSection
设置系统配置,开启systrace
1 | //adb shell setprop log.tag.MyAppTag VERBOSE |
获取系统配置
1 | adb shell getprop |
1 | `These categories are unavailable: ***说明当前设备不支持`这个类别或选项 |
查看当前设备所支持的类别或选项:
1 | systrace.py --list-categoriedsew s34d sx2sedsxzc |
查看当前应用的自定义事件如
TraceCompat.beginSection(“name”)
使用 app 生成的html就有自定义事件
1 | systrace.py -a com.duowan.gamevoice app |
或者
1 | systrace.py -a com.duowan.gamevoice android |
1 | 绿色:正在运行 |
dump 当前activity的信息
1 | adb shell dumpsys activity com.duowan.gamevoice >> black2.txt |
打开当前文件夹
1 | open . |
多个设备连接,adb shell指定设备执行命令
1 | adb -s 8f7e64ba shell dumpsys meminfo |
查看java 安卓目录
1 | /usr/libexec/java_home -V |
systrace.py -a com.duowan.gamevoice sched freq idle am wm gfx view binder_driver hal \
dalvik camera input res
使用
vim /etc/profile
1 | export ANDROID_NDK_HOME=/Users/hexiang/ndk/android-ndk-r16b |
导出数据库db
1 | adb exec-out run-as com.duowan.gamevoice tar c databases/ > databases.tar |
cat *.txt |egrep -ia “send_failed:”
/GVJump/Jump/user/receive_gift_list?uid=123
exitChannelBroadcast
uid=3304541490
升级android sutdio ide 之后native debug 不了解决办法
1.新建个native 测试demo gradle 会提示,首选的ndk版本
如21.4.7075529
2.gradle 升级
1 | classpath "com.android.tools.build:gradle:4.2.1" |
查看activity 所有日志命令
1 | adb -d logcat -b events -v time -d |
查找文件
1 | find . -type f -name "*.jar" | xargs grep "TODO" |
分析性能好坏
可以使用 adb shell dumpsys gfxinfo
,使用方法如下
首先确定要测试的包名,到 App 界面准备好操作
执行2-3次 adb shell dumpsys gfxinfo com.miui.home framestats reset ,这一步的目的是清除历数据
开始操作(比如使用命令行左右滑动,或者自己用手指滑动)
操作结束后,执行 adb shell dumpsys gfxinfo com.miui.home framestats 这时候会有一堆数据输出,我们只需要关注其中的一部分数据即可
重点关注
Janky frames :超过 Vsync 周期的 Frame,不一定出现卡顿
95th percentile :95% 的值
HISTOGRAM : 原始数值
PROFILEDATA :每一帧的详细原始数据
进出启动查看
1 | adb logcat -b events | egrep "am_proc_died|am_proc_start" |
activity启动查看
1 | adb logcat -b events | egrep -ia "activity |
sudo xcode-select –switch /Users/hexiang/Downloads/Xcode.app/Contents/Developer
查看flutter 安装目录
1 | flutter doctor -v |
gfxinfo 还可以拿到渲染相关的内存和 View hierarchy 信息。在 Android 6.0 之后,gxfinfo 命令新增了 framestats 参数,可以拿到最近 120 帧每个绘制阶段的耗时信息。
1 | adb shell dumpsys gfxinfo com.duowan.gamevoice framestats |
Surface 都会有三个 Graphic Buffer,那如何查看 Graphic Buffer 占用的内存,系统是怎么样管理这部分的内存的呢
1 | adb shell dumpsys SurfaceFlinger |
dumpsys gfxinfo的信息详解:
1 | Graphics info for pid 31148 [com.android.settings]: 表明当前dump的为设置界面的帧信息,pid为31148 |
AGi 安装失败
Android GPU Inspector (AGI)
1 | I20220106-103713027[server.ChildProcess-gapis][server.ChildProcess.runProcess] Killing gapis |
host 找不到映射本地ip
1 | hexiang@hexiangdeMacBook-Pro ~ % /Applications/AGI.app/Contents/MacOS/gapis ; exit; |
下载个switchhost 软件配置下host
https://github.com/oldj/SwitchHosts
1 | 127.0.0.1 localhost |
app_package=
abi=arm64v8a # Possible values: arm64v8a, armeabi-v7a, x86
adb shell settings put global enable_gpu_debug_layers 1
adb shell settings put global gpu_debug_app com.example.ponycui_home.svgaplayer
adb shell settings put global gpu_debug_layer_app com.google.android.gapid.armeabi-v7a
adb shell settings put global gpu_debug_layers VK_LAYER_KHRONOS_validation
systrace.py -a com.duowan.gamevoice sched am wm gfx view dalvik input res -t 20
mac安装了多个java版本
1 | #查看安装了几个java |
jdk环境配置
1 | export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home |
崩溃异常辅助日志搜集
/system/bin/logcat 手机自己的日志工具
1 | #查看崩溃日志缓冲区(默认) |
android debug 系统进程
debug系统进程需要root权限
下载模拟器需要下载不带google play 和google api的
下载 android xx.x 后面直接显示版本的,这个是自带root的
查看所有进程内存情况
1 | adb shell procrank |