TinkerPatch接入
官网:http://www.tinkerpatch.com/
这里面有技术文档,以及三个demo,包括一键接入,这个最简单,采用反射的方式,接入代码很少,但是会有问题,会跟AndroidAutoSize(https://github.com/JessYanCoding/AndroidAutoSize)这个库冲突,造成的后果就是页面失控。如果你的项目用了这个库,那么就不能使用一键接入的方式,需要走改造自身Applicaiton 的方式接入热修复。
使用改造自身的方式接入热修复,那么会有一个新的问题,因为这个方式会自动生成一个Application,这样会造成如果你的第三方库有在Applicaition 中通过反射的方式注入的话,就会初始化失败,目前百度移动统计的 在线安装集成方式失效(https://mtj.baidu.com/static/userguide/book/android/sdk.html)。
这里主要说一下,通过改造自身Application的方式接入热修复。
引入SDK,跟其他第三方库接入基本都一样。
在项目的gradle.properties中放入一些公共数据,和我遇到编译错误时放的配置。
SDK版本
TINKERPATCH_VERSION=1.2.14.5 TINKER_VERSION=1.9.14.5
编译遇到错误时配置的
android.enableD8.desugaring = true android.useDexArchive = true
在根项目的build的dependencies引入classpath("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}") { changing = true }
在app的build的dependencies中引入
annotationProcessor("com.tinkerpatch.tinker:tinker-android-anno:${TINKER_VERSION}") { changing = true } compileOnly("com.tinkerpatch.tinker:tinker-android-anno:${TINKER_VERSION}") { changing = true } implementation("com.tinkerpatch.sdk:tinkerpat