Tencent / matrix

Matrix is a plugin style, non-invasive APM system developed by WeChat.
Other
11.62k stars 1.88k forks source link

Android 12兼容 #683

Open Jun1orChan opened 2 years ago

Jun1orChan commented 2 years ago

异常类型:app 运行时异常

手机型号:Google Pixel 5

手机系统版本:Android 12

matrix版本:2.0.2

gradle版本:4.1.0/gradle-7.1-bin.zip

问题描述:Android 12的机器上,trace-canary无法使用,原因是:UIThreadMonitor反射获取了:mFrameIntervalNanos字段,目前该字段已经是被屏蔽的非 SDK 接口,可以使用:android.view.Display#getRefreshRate代替。连接参考:https://developer.android.google.cn/about/versions/12/non-sdk-12?hl=zh-cn, private long getIntendedFrameTimeNs(long defaultValue) { try { return ReflectUtils.reflectObject(vsyncReceiver, "mTimestampNanos", defaultValue); } catch (Exception e) { e.printStackTrace(); MatrixLog.e(TAG, e.toString()); } return defaultValue; } 异常是这个函数抛出的;

反射的掉用的多个字段,均被标识:@UnsupportedAppUsage

1637829845

堆栈/日志:
E/Matrix.ReflectUtils: java.lang.reflect.InvocationTargetExceptionisHard=true
    java.lang.reflect.InvocationTargetException[com.tencent.matrix.util.ReflectUtils:reflectObject(56)]
    [com.tencent.matrix.trace.core.UIThreadMonitor:getIntendedFrameTimeNs(383)]
    [com.tencent.matrix.trace.core.UIThreadMonitor:dispatchEnd(264)]
    [com.tencent.matrix.trace.core.UIThreadMonitor:access$200(35)]
    [com.tencent.matrix.trace.core.UIThreadMonitor$1:dispatchEnd(138)]
    [com.tencent.matrix.trace.core.LooperMonitor$LooperDispatchListener:onDispatchEnd(93)]
    [com.tencent.matrix.trace.core.LooperMonitor:dispatch(348)]
    [com.tencent.matrix.trace.core.LooperMonitor:access$000(42)]
    [com.tencent.matrix.trace.core.LooperMonitor$LooperPrinter:println(267)]
    [android.os.Looper:loopOnce(236)]
    [android.os.Looper:loop(288)]
    [android.app.ActivityThread:main(7838)]
    [java.lang.reflect.Method:invoke(-2)]
    [com.android.internal.os.RuntimeInit$MethodAndArgsCaller:run(548)]
    [com.android.internal.os.ZygoteInit:main(1003)]
yeleaveszi commented 2 years ago

后续版本会修复,谢谢支持。