android热修护tinker接入

先来一个传送门吧

https://github.com/Tencent/tinker


先顺哈思路

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

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

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

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


    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'
app.gradle的截图
  • 添加tinker编译和制作修护包需要的配置信息(配置在app的gradle文件里面)(是从官方demo里面拷贝出来的)

    • tinkerID需要注意哈


      部分配置截图
  • 修改application (按照官方推荐的写法)


    已经不是application的子类了
    • 注意DemoApp上面的那个注解,@DefaultLifeCycle,我们可以在下面这个目录找到处理器的源码


      注解的处理器
    • 处理器核心代码(加载了一个模板文件,替换掉字符串,输出到文件)


      处理器核心代码
    • 处理器用到的模板(这个模板文件的父类就是application了)


      模板文件
  • 最后配置manifest


    manifest截图
    • 需要注意的是application:name和注解里面定义的要一样

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

  • 调用这个api传入一个修护包地址就能进行修护

编译一个有问题的apk

  • apk生成的路径(和你的配置有关)


  • 安装运行


  • 运行截图



修护Bug编译一个修护包

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


    QQ截图20170218201810.png
  • 编译修护包


  • 编译成功文件的位置


  • 把修护包push到前面代码里面写的位置



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


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

:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容