热更新解决方案,选择的是腾讯的bugly,同时附带着bug收集,很好用,反馈率很高,也比较准,目前对集成的项目来看还没有太大的问题。0.0多渠道打包速度太慢不知道算不算。
腾讯bugle理解:热更分为基准包+补丁包;基准包为线上版本在运行的apk包,补丁包为依赖于基准包而生成的补丁文件,需要上传到bugly更新列表中;补丁包上传到bugly更新列表成功的前提是基准包在补丁包上传之前在APP上联网运行过。。当然,较大程度的更新还是依赖于发APK包的形式,小的更新+解决比较着急致命的bug直接使用热更即可。
bugly热更新的局限性
1、不支持修改清单文件,不支持新增android端四大组件(页面、Service服务,广播、数据库)。后续版本应该也支持了
2、不建议在GP渠道热更新代码。
3、在Android N上对启动时间有轻微影响。
4、不支持部分三星android-21机型,加载补丁时会主动抛出异常。
不支持一些动画类型的资源文件的更新。
官方链接:腾讯bugly官方地址
下面是具体的集成步骤,官方文档介绍的比较详细,这里着重把需要注意的点写下来,少趟坑。
1.工程根目录下“build.gradle”文件中添加:
dependencies { classpath "com.tencent.bugly:tinker-support:1.1.2"}
1、APP下的build.gradle中添加bugly SDK的依赖
dependencies {
compile "com.android.support:multidex:1.0.1" // 多dex配置
compile 'com.tencent.bugly:crashreport_upgrade:1.3.5' // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
compile 'com.tencent.tinker:tinker-android-lib:1.9.6' compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.2.0
}
// 依赖插件脚本apply from: 'tinker-support.gradle'
1、APP创建tinker-support.gradle文件,文件中大体内容为
针对上述tinker-support.gradle文件中的三个重要点
1、baseApkDir:打补丁包时依据的基准包地址,打基准包时不用定义。
2、tinkerId:基础包+补丁包的版本号(打基础包时改为基础包版本号,打补丁包时改为补丁包版本号)
3、enableProxyApplication:是否使用自己的Application,或者是集成sdk中的application。(文档中有详细说明)
另外:支持加固模式和多渠道也在上图注释中有,说明一点的是,多渠道打包的时候,只需要在build.gradle中加入productFlavors即可
实例化热更新
build.gradle中配置好打包信息后,使用Gradle自带的打包命令进行基础包、补丁包的打包
多渠道打包的时候,基准包的生成会有单个文件:mapper文件(如果没有,说明build.gradle中的minifyEnabled没有开启混淆)、APK文件、TXT文件,需要进行联网运行的基础包就是该APK文件。补丁包选取patch下的7z.apk文件。上传到bugly后台即可。
下面附完整截图流程,接入Demo需要的联系我私发。