Tinker 组件修复,踩坑

1、You need to use a Theme.AppCompat theme (or descendant) with this activity.

复现步骤

补丁加载成功之后重启应用,再退出应用重进闪退

日志

TinkerUncaughtHandler catch exception:java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

解决方案

原先的 BaseActivity 继承 AppCompatActivity,改为继承自 Activity
[听说是 appcompat 依赖某个版本开始检查 theme,但是我没有找到合适的版本,暂且使用此方法临时解决]

思考

可能是资源修复存在问题导致,因为在调试其他问题过程中也遇到资源问题
[如 Activity 背景原本是白色的,补丁加载成功重启之后变成了黑色!]

2、Tinker AMS hook 失败?(在 Android 10 上 [及以上?])

注意:运行在 Android 8.1 正常

日志
Tinker 组件修复,踩坑_第1张图片
Tinker 组件修复,踩坑_第2张图片

解决方案

适配 Android 10 需 hook android.app.ActivityTaskManager
[看源码或读博客,发现 Android10 之后新增了 ActivityTaskManager 类,之前看源码记忆中注释写到 ‘某个类过于臃肿,后续版本计划拆分’ ]

思考

没有正确代理 startActivity 导致 Tinker 内部没有赋值,加载修复过程直接返回退出

持续更新,欢迎关注~

你可能感兴趣的:(android)