目录
  1. 1. 换肤场景
  2. 2. 换肤的本质
    1. 2.1. 换肤本质问题:
  3. 3. 分析源码
重拾Android-深入理解Hook换肤

换肤场景

  • 保持App新鲜感

  • 提高付费率

  • 配合节日、活动进行营销

  • APK瘦身

  • 写死的主题,切换很不友好

换肤的本质

动态修改 App 内的:文字颜色、图标、背景等元素。

换肤框架需要做到的是:不闪烁、无启动、架构独立、无继承、易于维护

换肤本质问题:

0、如何拦截系统实例化View的过程

1、如何确定哪些控件需要替换资源

2、如何加载外部的资源包

分析源码

Activity#setContentView()
-> PhoneWindow#setContentView() -> mLayoutInflater.inflate(layoutResId, mContentParent)
-> LayoutInflater#inflate() -> CreateViewFromTag() -> Factory2 -> 拦截系统创建View的流程(setFactory2())

    AppCompatActivity -> AppCompatDelegateImplV9 -> AppCompatIIViewInflater
打赏
  • 微信
  • 支付宝

评论