android热修护tinker接入

先来一个传送门吧

https://github.com/Tencent/tinker


先顺哈思路

当apk需要修护的时候下载修护包,替换原来的dex

  • sdk接入
  • 修护包的制作
  • 下载修护包替换dex

SDK接入(按照官方文档来的)

  • 配置项目的gradle文件,classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.7')


    android热修护tinker接入_第1张图片
    build.gradle文件截图
  • 配置app的gradle文件
    • provided('com.tencent.tinker:tinker-android-anno:1.7.7')
    • compile('com.tencent.tinker:tinker-android-lib:1.7.7')
    • apply plugin: 'com.tencent.tinker.patch'
android热修护tinker接入_第2张图片
app.gradle的截图
  • 添加tinker编译和制作修护包需要的配置信息(配置在app的gradle文件里面)(是从官方demo里面拷贝出来的)

    • tinkerID需要注意哈


      android热修护tinker接入_第3张图片
      部分配置截图
  • 修改application (按照官方推荐的写法)


    android热修护tinker接入_第4张图片
    已经不是application的子类了
    • 注意DemoApp上面的那个注解,@DefaultLifeCycle,我们可以在下面这个目录找到处理器的源码


      android热修护tinker接入_第5张图片
      注解的处理器
    • 处理器核心代码(加载了一个模板文件,替换掉字符串,输出到文件)


      android热修护tinker接入_第6张图片
      处理器核心代码
    • 处理器用到的模板(这个模板文件的父类就是application了)


      android热修护tinker接入_第7张图片
      模板文件
  • 最后配置manifest


    android热修护tinker接入_第8张图片
    manifest截图
    • 需要注意的是application:name和注解里面定义的要一样

在制作修护包之前先插入一个tinker修护的api

android热修护tinker接入_第9张图片
  • 调用这个api传入一个修护包地址就能进行修护

编译一个有问题的apk

android热修护tinker接入_第10张图片
  • apk生成的路径(和你的配置有关)


    android热修护tinker接入_第11张图片
  • 安装运行


    android热修护tinker接入_第12张图片
  • 运行截图


    android热修护tinker接入_第13张图片

修护Bug编译一个修护包

  • 编译前配置(配置成安装的那个文件)


    android热修护tinker接入_第14张图片
    QQ截图20170218201810.png
  • 编译修护包


    android热修护tinker接入_第15张图片
  • 编译成功文件的位置


    android热修护tinker接入_第16张图片
  • 把修护包push到前面代码里面写的位置


    android热修护tinker接入_第17张图片

点击按钮进行修护,这里就不好截动图了

android热修护tinker接入_第18张图片

Nothing is certain in this life. The only thing i know for sure is that. I love you and my life. That is the only thing i know. have a good day

:)

你可能感兴趣的:(android热修护tinker接入)