SystemUI-uiautotest-case
日志开启和过滤
// 开启追踪,仅追踪 SystemUI 进程(property 在进程启动时读取一次)
adb shell setprop debug.animator.trace com.android.systemui
// 重启 SystemUI 使配置生效(property 在进程启动时读取一次)
adb shell kill $(adb shell pidof com.android.systemui)
// 验证 Logcat 输出,同时看 Folme 和原生 Animator 日志
adb shell setprop debug.folme.trace 1
adb shell kill $(adb shell pidof com.android.systemui)
adb logcat -s AnimatorTracer:I FolmeTracer:I线上已进版数据
⛱️ 默认主题下执行的自动化测试
888-锁屏页面亮灭屏:
- 前面部分都是状态栏相关的

421-联动模式假AOD系统内亮灭屏:
- 景深扣图 alpha 动画 - KeyguardAnim-DepthAlpha - 本次添加
- 景深扣图 transitionAlpha 动画 & 全屏 aod 亮灭屏场景 - KeyguardAnim-DepthTransitionAlpha - 本次添加


422-非联动模式系统内灭屏:

423-全屏 AOD 解锁后灭屏亮屏:
-
时钟 AOD 动画,是否需要删除,也包含时钟的联动
-
全屏 AOD 相关,涉及动画较多,需要确认补充哪些
- doWallpaperBlackAnim - 已进版
- doWallpaperScaleAnim - 已进版,本次修改名称 - KeyguardAnim-FullAodScale
- 景深扣图 Alpha 动画 - KeyguardAnim-DepthTransitionAlpha - 本次添加
- doHideKeyguardViewAnim - 已进版
- animateFullAod - 状态栏动画,不处理 keyguardStatusBarViewControllerInject.animateFullAod(show)
- translationY - KeyguardAnim-FullAodTransY - 本次添加
- doLinkageAnimAfterKeyguardShowing - KeyguardAnim-FullAodShow - 本次添加
- doKeyguardSignatureLayerAnim - KeyguardAnim-SignatureLayerAlpha - 本次添加
- doSignatureAlphaAnim - KeyguardAnim-SignatureAlpha - 本次添加
- doSignatureColorAnim - KeyguardAnim-SignatureColor - 本次添加
- setRowFullAodStyle - 通知动画,不处理
- startNotificationWakeAnimation - 通知动画,不处理
- AOD 时钟颜色变化:Keyguard#AodClockColor - 本次添加


424-灭屏到假全屏AOD,到真AOD:

425-联动模式真AOD到锁屏页面:
- 景深扣图避让 Alpha 动画:KeyguardAnim-DepthAvoidAlpha - 本次添加
- AOD 进入动画-容器 Alpha:Keyguard#AodEnter-ContainerAlpha - 本次添加
- AOD 进入动画-时钟 HUE:Keyguard#AodEnter-HueIn - 本次添加
- AOD 进入动画-签名 alpha:Keyguard#AodEnter-SignatureAlpha - 本次添加
Bug 1: 亮灭屏时钟动画,逐帧触发签名动画,以及没有设置签名(不可见)时,是否需要触发动画?



┌── Folme Animation Begin ──────────────────────────
│ ID: 1845
│ Tag: show
│ Target: View{#9571329 valid {7f0b0ab1 app:id/signature_text/miuix.androidbasewidget.widget.ClearableEditText}}
│ Properties:
│ alpha: 0 → 1
│ Ease: decelerate, factors=[1.5]
│ Delay: 0ms
│ CallStack:
│ at miuix.animation.internal.FolmeEngine.fromTo(FolmeEngine.java:264)
│ at miuix.animation.FolmeFactory.fromToState(FolmeFactory.java:30)
│ at miuix.animation.controller.FolmeState.doFromTo(FolmeState.java:88)
│ at miuix.animation.controller.FolmeState.access$200(FolmeState.java:26)
│ at miuix.animation.controller.FolmeState$7.run(FolmeState.java:320)
│ at miuix.animation.ViewTarget.executeTask(ViewTarget.java:405)
│ at miuix.animation.ViewTarget.post(ViewTarget.java:399)
│ at miuix.animation.controller.FolmeState.to(FolmeState.java:317)
│ at com.android.keyguard.clock.animation.ColorAnimationBaseClock.doSignatureViewAnim(ColorAnimationBaseClock.kt:594)
│ at com.android.keyguard.clock.animation.allinone.AllInOneClockAnimation.updateClockStyle(AllInOneClockAnimation.kt:398)
│ at com.android.keyguard.clock.animation.allinone.AllInOneClockAnimation.access$updateClockStyle(AllInOneClockAnimation.kt:25)
│ at com.android.keyguard.clock.animation.allinone.AllInOneClockAnimation$folmeClockListener$1.onUpdate(AllInOneClockAnimation.kt:62)
│ at miuix.animation.listener.ListenerNotifier$UpdateNotifier.doNotify(ListenerNotifier.java:63)
│ at miuix.animation.listener.ListenerNotifier.notifyListenerSet(ListenerNotifier.java:155)
│ at miuix.animation.listener.ListenerNotifier.notify(ListenerNotifier.java:144)
└──────────────────────────────────────────────────Bug 2: 取色动画空跑


┌── Folme Animation Begin ──────────────────────────
│ ID: 1942
│ Tag: defaultTo
│ Target: Value{valid ValueTargetObject@2006752162{fractionAnimation}}
│ Properties:
│ fraction: 0 → 1
│ Ease: spring_phy, factors=[1.0, 0.3499999940395355, 1.0]
│ Delay: 0ms
│ CallStack:
│ at miuix.animation.internal.FolmeEngine.fromTo(FolmeEngine.java:264)
│ at miuix.animation.FolmeFactory.fromToState(FolmeFactory.java:30)
│ at miuix.animation.controller.FolmeState.doFromTo(FolmeState.java:88)
│ at miuix.animation.controller.FolmeState.access$200(FolmeState.java:26)
│ at miuix.animation.controller.FolmeState$7.run(FolmeState.java:320)
│ at miuix.animation.IAnimTarget.post(IAnimTarget.java:369)
│ at miuix.animation.controller.FolmeState.to(FolmeState.java:317)
│ at com.android.keyguard.clock.animation.allinone.AllInOneBaseAnimation.runColorAnimation(AllInOneBaseAnimation.kt:167)
│ at com.android.keyguard.clock.animation.allinone.AllInOneBaseAnimation.handleEffectAnimation(AllInOneBaseAnimation.kt:140)
│ at com.android.keyguard.clock.animation.allinone.AllInOneBaseAnimation.doColorExtractionAnimation(AllInOneBaseAnimation.kt:89)
│ at com.android.keyguard.clock.animation.allinone.AllInOneBaseAnimation.doColorExtractionAnimation(AllInOneBaseAnimation.kt:15)
│ at com.android.keyguard.clock.animation.AnimationHelper.doColorExtractionAnimation(AnimationHelper.java:547)
│ at com.android.keyguard.clock.KeyguardClockContainer.setExtractedColors(KeyguardClockContainer.kt:881)
│ at com.android.keyguard.injector.KeyguardClockInjector$triggerColorExtraction$1$1$1.invokeSuspend(KeyguardClockInjector.kt:213)
│ at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
└──────────────────────────────────────────────────其他补充
景深避让 Alpha 动画空跑不出帧
锁屏图片景深 + 通知堆叠态,扣图不可见,仍有做避让动画


SignatureAodView 空跑
添加在 425 case 中的三个 Trace


┌── Native Animator Begin ─────────────────────────────
│ ID: 401
│ Type: ValueAnimator
│ Duration: 2000ms
│ Properties:
│ : -180 → 0
│ Interpolator: SineEaseInOut
│ CallStack:
│ at com.miui.aod.util.ShaderUtils.hueAnimateIn(ShaderUtils.java:305)
│ at com.miui.aod.util.ShaderUtils.hueAnimateIn(ShaderUtils.java:246)
│ at com.miui.aod.util.ShaderUtils.hueAnimateIn(ShaderUtils.java:239)
│ at com.miui.aod.widget.SignatureAodView.startAnimation(SignatureAodView.java:484)
│ at com.miui.aod.AODView.startClockPanelAnimation(AODView.java:1102)
│ at com.miui.aod.DozeHost.lambda$startEnterAnim$11(DozeHost.java:953)
│ at com.miui.aod.DozeHost.$r8$lambda$RK5VK4XHijxPfsnIHn9sYSJIHH4(DozeHost.java:0)
│ at com.miui.aod.DozeHost$$ExternalSyntheticLambda15.run(R8$$SyntheticClass:0)
└───────────────────────────────────────────────────────修改后
888

┌── Native Animator Begin ─────────────────────────────
│ ID: 986
│ Type: ValueAnimator
│ Duration: 500ms
│ Properties:
│ : 0 → 1
│ Interpolator: Linear
│ CallStack:
│ at com.android.systemui.keyguard.data.repository.KeyguardTransitionRepositoryImpl$startTransition$2.invokeSuspend(KeyguardTransitionRepository.kt:280)
│ at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
│ at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
│ at android.os.Handler.handleCallback(Handler.java:1129)
│ at android.os.Handler.dispatchMessageImpl(Handler.java:139)
│ at android.os.Handler.dispatchMessage(Handler.java:129)
│ at android.os.Looper.loopOnce(Looper.java:315)
│ at android.os.Looper.loop(Looper.java:419)
│ at android.app.ActivityThread.main(ActivityThread.java:10633)
│ at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:598)
│ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1145)
└───────────────────────────────────────────────────────问题排查:
421 KeyguardAnim-SignatureLayerAlpha 不出帧
和 KeyguardAnim-DepthAlpha 有部分重叠,和本文档的 trace 表现一致
灭屏时 VSync-app 信号停止。


422 KeyguardAnim-SignatureLayerAlpha/KeyguardAnim-DepthAlpha不出帧,原因同 421 VSync-app 无变化

423 KeyguardAnim-SignatureLayerAlpha 待排查
424
425 Keyguard#ClockColorExtraction
去不了,动画过程中判断是否和目标颜色值一致,过程中不一定是多少帧以后才一致

888-原生动画主线程空跑,无法移除,依赖动画状态
