Bugly热修复实践

本文介绍了如何在Android项目中实践Bugly热修复技术,详细阐述了从工程配置、SDK初始化到补丁包的生成与应用的全过程,旨在帮助开发者理解和实现热修复。
摘要由CSDN通过智能技术生成

Bugly热修复实践

纸上得来终觉浅,绝知此事要躬行



前言

热修复技术之前有所了解,but之前的项目都没有进行过实际应用。最近通过一个demo 应用进行了实践,在此进行一下学习记录,也希望能为正在想接入bugly热修复的XDJM提供一点帮助。


一、热修复简单介绍

热修复(也称热补丁、热修复补丁,英语:hotfix)是一种小体积的独立的累积更新包,通常表现为一个或多个文件。通常用来解决线上软件产品的bug,而不需要进行重新发版,可以做到用户无感知修复bug,是一种快速、低成本修复产品软件版本缺陷的方式。
关于热修复的原理以及阿里系,腾讯系,美团等的热修复方案就不再说了,感兴趣的可以自行查阅相关资料,本文重点是以bugly进行项目实践。

二、接入步骤

接入前先说明两点:

  1. 由于bugly 依赖Tinker ,但是现在tinker还不支持4.x ,所以大家需要降低gradle版本编译。
  2. 如果你的项目minSdkVersion >=21 ,可以去除MultiDex 的依赖包以及其他配置,这个是为了兼容 5.0以下用到的,目前5.0以下手机可以忽略了,微信等大部分应用的minSdkVersion 都要求21以上了。

在这里插入图片描述

1.工程根目录build.gradle配置

工程根目录下“build.gradle”文件中如下配置:

 dependencies {
   
        classpath 'com.android.tools.build:gradle:3.2.1'  //采用低版本的
        classpath "com.tencent.bugly:tinker-support:1.2.2"
    }

2.app目录build.gradle配置

配置如下:

......
dependencies {
   
    implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
    implementation 'com.tencent.tinker:tinker-android-lib:latest.release'
}
// 依赖插件脚本
apply from: 'tinker-support.gradle'
......

tinker-support.gradle内容如下所示、:

apply plugin: 'com.tencent.bugly.tinker-support'

def bakPath = file("${buildDir}/bakApk/")

/**
 * 此处填写每次构建生成的基准包目录
 */
def baseApkDir = "app-0302-17-36-15"   //编译base时 置为空 , 编译补丁包时选择基准包目录
/**
 * 对于插件各参数的详细解析请参考 如果没有特殊需求下面的参数都可以不用更改;
 * 如果apk需要加固等可以参考具体描述设置参数
 */
tinkerSupport {
   
    // 开启tinker-support插件,默认值true
    enable = true
    // 指定归档目录,默认值当前module的子目录tinker
    autoBackupApkDir = "${bakPath}"
    //建议设置true,用户就不用再自己管理tinkerId的命名,插件会为每一次构建的base包自动生成唯一的tinkerId,
    autoGenerateTinkerId = true
    // 是否启用覆盖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"
    // 构建多渠道补丁时使用
     buildAllFlavorsDir = "${bakPath}/${baseApkDir}"
    // 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持)
     isProtectedApp = false
    // 是否开启反射Application模式
    enableProxyApplication = false
    // 是否支持新增非export的Activity(注意:设置为true才能修改AndroidManifest文件)
    supportHotplugComponent = true

}
/**
 * 一般来说,我们无需对下面的参数做任何的修改
 * 对于各参数的详细介绍请参考:
 * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
 */
tinkerPatch {
   
    oldApk ="${bakPath}/${baseApkDir}/app-release.apk"
    ignoreWarning = false
    useSign = true
    dex {
   
        dexMode = "jar"
        pattern = ["classes*.dex"]
        loader = []
    }
    lib {
   
        pattern = ["lib/*/*.so", "src/main/jniLibs/*/*.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&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值