Bugly热更新最详细的使用教程

1.第一步请仔细阅读官方文档,如果时间充足,可以观看官方的教程视频,因为文档也许会说的不清楚,官方视频讲的很清楚

https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20171123163535

2.将这个classpath "com.tencent.bugly:tinker-support:latest.release" 配置到项目的外层的build.gradle

如图:
Bugly热更新最详细的使用教程
编译好了以后,你就可以使用tinker了。

3.在项目的app目录下创建tinker-support.gradle文件

Bugly热更新最详细的使用教程


该文件内容如下:

apply plugin: 'com.tencent.bugly.tinker-support'
def bakPath = file("${buildDir}/bakApk/")
/**
 * 此处填写每次构建生成的基准包目录
 */
def baseApkDir = "app-1205-14-53-05"
/**
 * 对于插件各参数的详细解析请参考
 */
tinkerSupport {

    // 开启tinker-support插件,默认值true
    enable = true

    // 指定归档目录,默认值当前module的子目录tinker
    autoBackupApkDir = "${bakPath}"

    // 是否启用覆盖tinkerPatch配置功能,默认值false
    // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch
    overrideTinkerPatchConfiguration = true

    // 编译补丁包时,必需指定基线版本的apk,默认值为空
    // 如果为空,则表示不是进行补丁包的编译
    // @{link tinkerPatch.oldApk }
    baseApk = "${bakPath}/${baseApkDir}/app-release.apk"

    // 对应tinker插件applyMapping
    baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"

    // 对应tinker插件applyResourceMapping
    baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"

    // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性,base后面的就是的版本号
    tinkerId = "base-2.0.2"
 //   tinkerId = "patch-2.0.2"
// 构建多渠道补丁时使用 // buildAllFlavorsDir = "${bakPath}/${baseApkDir}" // 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持) // isProtectedApp = true // 是否开启反射Application模式 enableProxyApplication = false}/** * 一般来说,我们无需对下面的参数做任何的修改 * 对于各参数的详细介绍请参考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */tinkerPatch { //oldApk ="${bakPath}/${appName}/app-release.apk" ignoreWarning = false useSign = true dex { dexMode = "jar" pattern = ["classes*.dex"] loader = [] } lib { pattern = ["lib/*/*.so"] } res { pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"] ignoreChange = [] largeModSize = 100 } packageConfig { } sevenZip { zipArtifact = "com.tencent.mm:SevenZip:1.1.10"// path = "/usr/local/bin/7za" } buildConfig { keepDexApply = false //tinkerId = "1.0.1-base" //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apkproguard混淆方式 //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可选,设置R.txt文件,通过旧apk文件保持ResId的分配 }}

4.在app目录的build.gradle中引入,如图:

apply from: 'tinker-support.gradle'

Bugly热更新最详细的使用教程

到了这里如果没报错的话,配置就成功了,如果报错了,也不用怕,检查步骤有木有出错

5.改造MyApplicationBugly热更新最详细的使用教程

除此之外,还需要一个MyApplicationLike类,以前在application中做的事,现在都放在MyApplicationLike里,红色的部分就是应用的MyApplicationLike,包名+你的MyApplicationLike,我的MyApplicationLike东西太多,我就截的官网图
Bugly热更新最详细的使用教程

6.至此配置完成,如果你还不清楚的话,请参考官方文档或视频:

https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170912151050

现在我们要先打一个基准包,如图:
Bugly热更新最详细的使用教程
打开AS右侧的Gradle,选择app下的build执行Debug或Release命令
成功以后
Bugly热更新最详细的使用教程
你会在项目的app目录下的build文件夹内看到你的基准包,你可以人为制造一个小bug,以便进行热修复,接下来,将你的基准包上传至Bugly
Bugly热更新最详细的使用教程
如果你没有账号,建议先注册一个账号,非常简单

7.接下来就是重头戏,打出对应版本的补丁

Bugly热更新最详细的使用教程
依旧打开AS右侧的Gradle,打开App目录下的 tinker-supporrt执行Debug或Release命令
成功以后,会在你的项目的build文件夹下的outputs文件夹生成 patch和 tinkerPatch这么两个文件夹,其中 tinkerPatch文件夹
里放的是一些打包信息,补丁放在patch里的,就是 .zip结尾的一个包
Bugly热更新最详细的使用教程

你可以打开看一哈
Bugly热更新最详细的使用教程
Bugly有一个联网上报功能,就是当你的App打开后,他会将你App的一些信息上报到Bugly上面去,这样的话,你的补丁在Bugly上面发布的时候才会匹配到你的App,
补丁和App是一一对应的,如图所示:Bugly热更新最详细的使用教程
这是Bugly的日志,如果你想看的话,请参考本教程的第五步,现在我们可以将补丁发布到Bugly上啦,如图所示:
Bugly热更新最详细的使用教程

如果你在发布补丁时出错,是因为还没有联网上报,请先启动你的App,否则你的补丁将匹配不到所对应的App;
补丁上传成功以后,当你在打开App是,Bugly会自动检测是否有新的补丁,如果有,会在后台自动下载并合并你的App
通过查看Bugly的日志 如图:
Bugly热更新最详细的使用教程
可以有人会问,为什么还是不行呢?因为你需要重新启动App
Bugly热更新最详细的使用教程

重新启动App后:
Bugly热更新最详细的使用教程
成功!

8.最后

希望我的教程能够帮到你,切记不要心急,越急反而bug百出

相关文章: