开发工具:AndroidStudio 3.3.1,gradle插件3.2.0
背景:已有项目上集成TinkerPatch及Walle
一、集成TinkerPatch
步骤:
1、项目的build.gradle中依赖TinkerPatch插件
classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.2.9"
2、对应app的build.gradle中添加依赖
compileOnly("com.tinkerpatch.tinker:tinker-android-anno:1.9.9")
implementation("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.2.9")
3、app目录下创建tinkerpatch.gradle文件
4、app的build.gradle中应用tinkerpatch.gradle文件
apply from: 'tinkerpatch.gradle'
5、同步项目
由于我的项目中用到了Lambda表达式,再用到Lambda表达式的时候引用了Java8
所以在同步项目的时候编译错误
根据错误提示,解决方案在项目的gradle.properties中加入以下两行代码
android.enableD8.desugaring= true
android.useDexArchive= true
编译通过,但是会提示警告,可以忽略!
6、基于tinkerpatch.gradle文件打基准包(也可以理解为线上BUG包),先看看tinkerpatch.gradle文件中的主要内容,详情请参考官方文档
http://www.tinkerpatch.com/Docs/SDK
首次集成和以后打补丁包会用到的属性字段已经在红框中标记出来
reflectApplication:
true表示当前项目中已经有Application,直接在对应的Application中初始化。
false表示需要继承TinkerPatch提供的DefaultApplicationLike
(由于我的项目已经有Application,所以我置为true,直接在自己的Application中初始化)
protectedApp:
当前apk上线之前如果需要进行加固,置为true,否则置为false,且再打补丁包时候也需要置为true
appKey:
TinkerPatch官网申请项目时候的appKey
appVersion:
打基准包时,appVersion要与app的build.gradle中的versionName保持一致。打补丁包时appVersion增加1即可
baseInfo:
打基准包时,无需修改。打补丁包时,指向基准包文件名
variantName:
debug模式和release模式
7、初始化TinkerPatch
Application中初始化相关代码
如果此方法报错需要添加依赖,implementation 'com.android.support:multidex:1.0.3'
8、打基准包
9、打补丁包
10、上传补丁,不解释
二、集成Walle
按照文档走即可
https://github.com/Meituan-Dianping/walle