热修复
配置tinker出现的错误,
Error:Execution failed for task ':app:tinkerProcessDebugManifest'.
> tinkerId is not set!!!
查了网上的一些帖子说是tinkerid如果采用一个方法动态获取的时候,会出现设置不上,
链接如下
我尝试把tinkerId设置成死值,依旧不能成功打包,过了n天后,想起了这茬事,回忆到配置tinker的各种参数含义,发现了是否开启tinkerPatch配置功能的参数——overrideTinkerPatchConfiguration。
我原本的设置中overrideTinkerPatchConfiguration这个参数是false表示不启用新的配置。而tinkerId的配置正是在新配置中,所以不能生效。
后期的一些尝试
在我把id换成应用的版本号后依然提示找不到id。
配置gradle注意的参数
1.基准包的命名路径
def baseApkDir = "app-0419-17-04-40"
2.基准备的版本号
tinkerId = "1.0.1"
3.是否开启反射Application功能,
enableProxyApplication = true
4.是否覆盖tinkerPatch配置
overrideTinkerPatchConfiguration = true
设置Application需要关注的内容
1.初始化bugly,这里第三个参数可以选择是否开启日志功能,true表示开启
Bugly.init(getApplication(), appId, true);
2.分dex
MultiDex.install(base);
3.安装tinker,为的是加载打的补丁包,位置在appplication回调的方法(onBaseContextAttached)里
Beta.installTinker(this);
打差异包
1.包所在的目录
2.包传不上去
包没问题
提示:找不到合适的版本与补丁包匹配
原因:未联网上抱
完善方法:基准包在手机上运行一遍
包有问题
提示:“上传失败,文件不合法,请上传有效的补丁包”
原因:基准包里有空格和中文字符
完善方法:去掉空格和中文字符在打一遍
3.补丁包对应那个应用版本呢?
1.基准包中两个版本号(应用的和热修复tinkerid的)产生了
4.打包时注意
- 1.基准包包名
- 2.r资源文件名
备注:要想让补丁自动生效,需要注意
1.appliacton中要开启这一系列参数
文章链接
Android热更新之微信Tinker集成(接入Bugly热更新)
Android热更新:美团大众点评Android热更新方案Robust
脑图链接
https://www.processon.com/view/link/5a8eb9cae4b0874437cbbf22
视频资料
为什么我选择使用bugly热修复方案而不选择其他的?
- 1.详解的文档,我找到了非常详尽的文档,并且还有视频教程。这个是做开发和支持的后盾。
- 2.这个平台接入方便,对源代码改造性小,热修复的内容和源代码能够很好的隔离开。
- 3.这个方案所提供的补丁管理平台操作简单。
- 4.补丁管理平台还支持日志的捕捉。