Matrix Versions Save

Matrix is a plugin style, non-invasive APM system developed by WeChat.

v0.8.1

3 years ago

Matrix for iOS:

  • Delete the code related to fishhook. (删除fishhook代码的使用)
  • Significantly improve the performance of WCMemStatPlugin. (大幅提升了内存监控的性能)
  • Add interface to check if occurs killed-app lag related to 'XPC'. (增加了一个检查是否发生了xpc卡顿的接口)
  • Code format. (代码格式化)
  • CocoaPod matrix-wechat 0.6.7.

Matrix for Android:

  • Support android gradle plugin 3.5.0/4.0.0/4.1.0.
  • Support matrix trace canary working with R8 shrinker (But trace transform will be executed before R8 task).
  • Add matrix battery canary plugin.
  • Rewrite some of matrix plugin code.
  • Update README & Samples.

v0.6.5

4 years ago

Matrix for iOS

  • fix fishhook __DATA_CONST crash (修复 fishhook __DATA_CONST 闪退)
  • add async stack backtracking of power-consume-stack (为耗电堆栈增加异步线程回溯)(相关文章:https://github.com/Tencent/matrix/wiki/Matrix-for-iOS-macOS-%E5%BC%82%E6%AD%A5%E5%A0%86%E6%A0%88%E5%9B%9E%E6%BA%AF)
  • optimize the report of CPU_Block, aka lag type 2003 (优化 CPU_Block CPU瞬时过高堆栈的展示)
  • add the repeat count of the stack in the Main-Thread-Handling lag report (为耗时堆栈提取出来的堆栈展示,添加重复次数的展示)
  • fix some other issues (修复一些已知的小问题)

Matrix for Android

  • fix CheckedDatabaseListActivity 兼容性crash
  • remove unusable module (删除部分不成熟的模块)
  • 增加内外发布渠道,通过 “PUBLISH_CHANNEL” 区分
  • SQLiteLint
    • fix 一些不好的、潜在sql注入风险的代码
    • sample默认采取Hook模式,fix之前没有进行sql分析
    • 去除sample中无用的代码
  • ResourceCanary
    • 调高leak检查次数 3->10
    • 优化ActivityRefWatcher 检查逻辑
  • IOCanary
    • CloseGuardHooker.tryHook没有适配9.0 #86 #110
    • fix ElfHook not work with 64 so in android O and P #227 #230
  • TraceCanary
    • getSplashActivities method's NullPointException on Android. fix #238 (#239) #230

v0.6.0

4 years ago

Matrix for iOS

  • 增加耗电监控功能
  • 同步最新的 KSCrash

Matrix for Android

  • 修复dev分支版本不同步问题
  • 调整Trace模块的部分实现

v0.5.2

4 years ago

Matrix-Android

  • zip冲突修复 (#224)
    • 重命名GZIP文件,和cocoapods中其他GZIP pod冲突了
    • 修改master的podspec,文件路径变化了
  • Fix trimstack stackover bug
  • Fix trimstack crash and methodbeat

Matrix -iOS

  • Update podspec
  • Update README.md
  • Rename(PodSpec): matrix-apple -> matrix-wechat
    • Update(sample): matrix-apple -> matrix-wechat
    • Change matrix-apple to matrix-iOS

v0.5.1

5 years ago

Matrix for Android

Matrix-TraceCanary

增加卡顿信息收集

  • 发生 ANR 时,获取应用当前的内存信息,包括:Native Heap、Java Heap、VmSize;
  • 发生 ANR 时,通过 Thread.getStackTrace 的方式,额外获取主线程堆栈及State;
  • 统计系统帧事件处理时,Choreographer 中三种类型队列 CALLBACK_INPUT、CALLBACK_ANIMATION、CALLBACK_TRAVERSAL 各自处理的耗时;
  • 卡顿发生时,统计当前主线程的 CPU 利用率;

提升卡顿定位精确度

  • 监控主线程 Looper#handleMessage 的方式来捕捉卡顿的耗时堆栈,替换原先通过 Choreographer#doFrame 的回调方式监控两帧之间的堆栈,使堆栈更完整更清晰。
  • 废除 TracePlugin 依赖前后台事件来触发是否开启监控,避免切换前后台的临界范围监控不到。

加快编译插桩速度

  • 拆分任务,支持多线程并发读取及操作字节码文件;

规避功耗问题

  • 计算帧率,采用一种应用本身有帧事件处理才通知的方式,替换原先通过Choreographer#postFrameCallback 主动触发帧事件通知的方式,避免在应用本无帧事件处理时,仍然需要不断处理本模块 post 的帧事件回调;
  • 时间线程更新策略调整,不依赖前后台来判断是否运作,通过 Looper#handleMessage 的开始和结束点来决定是否执行,避免主线程在无任务处理时,时间线程仍旧不停工作,导致功耗问题。

解耦重构

  • 废弃之前 MethodBeat 中 lockBuffer 及 resetBuffer 的方式,采用 IndexRecord 链表记录各个模块 mark 的 index 方式代替,解耦各个模块对 MethodBeat 中 buffer 的依赖。
  • 将 ANR 监控从 EvilMethodTracer 模块抽离为独立的模块 AnrTracer
  • 简单化堆栈裁剪及 stackKey 计算策略

bugfix

  • 修复一些已知问题,如堆栈耗时对不上,编译时crash,后台耗电,兼容9.0启动监控等。

关于Sample

  • 增加帧率监控浮窗显示 FrameDecorator

v0.4.10

5 years ago

What's new

  1. Upload jar to jcenter
  2. Fix elf_hook not close #18
  3. Fix APK Checker bug In the windows environment #13 #20
  4. More Cpu ABI support, add arm64-v8a, x86_64