项目中之前已经接入bugly的异常收集和全量更新SDK,为了应对bug及时修复以及一些改动不太大的需求,准备接入Tinker。而Bugly已经对Tinker做了很好的支持,不用从头到尾接一遍。
接入流程:
一、添加插件依赖,在根目录的build.gradle中:
classpath "com.tencent.bugly:tinker-support:1.1.1"
二、集成SDK:
2.1 app module的build.gradle中添加多dex配置、bugly的两个dependencies:
compile "com.android.support:multidex:1.0.1" // 多dex配置
compile 'com.tencent.bugly:crashreport_upgrade:1.3.1'
compile 'com.tencent.bugly:nativecrashreport:latest.release'
2.2 app module的build.gradle中添加依赖插件脚本:
apply from: 'tinker-support.gradle'
2.3 app module里创建文件"tinker-support.gradle",内容见如下引用;
三、初始化SDK:
取 enableProxyApplication = false 的情况
3.1 自定义Application类:
public class SampleApplication extends TinkerApplication {
public SampleApplication() {
super(ShareConstants.TINKER_ENABLE_ALL, "xxx.xxx.SampleApplicationLike",
"com.tencent.tinker.loader.TinkerLoader", false);
}
}
这个类继承TinkerApplication类,里面仅有一个无参构造方法。该类仅在AndroidManifest的<application>标签的name字段引用;
3.2 自定义ApplicationLike类:
继承自DefaultApplicationLike;除了将原先Application中的代码移植到该类中,还需再添加三个方法:
1.构造方法;
2.onBaseContextAttached();
3.registerActivityLifecycleCallback();
四、打包发布:
4.1 编译基准包:
设置tinkerId = "1.0.1-base",执行app->Tasks->build->assembleRelease,在build->bakApk中生成编译时间命名的文件夹,该apk即基础包;
4.2 编译补丁包:
如该包有bug或改动,修改需求之后,设置tinkerId = "1.0.1-patch",执行app->Tasks->tinker-support->buildTinkerPatchRelease,在build/outputs/patch中生成patch_signed_7zip.apk的补丁包;
4.3 将该补丁包上传至bugly热更新平台并发布。