Android热更新(Tinker)

3.热更新集成相对还是容易的。有几个细节注意下即可,热更新提交补丁后也会有延迟,不是实时生效的,亲测会有5分钟的延迟,但是补丁确实挺好用,对后期bug的更改大有好处。

4.热更新唯一的不方便我感觉就是集成assembleRelease或者assembleDebug是,如果想在build下clean Project的话,在项目的app中的build中生成apk会被clean掉,所以热更新时不要clean项目,否则就需要重新生成。当然如果你想重新热更新,clean是最便捷的方法啦。

热更新的步骤

1.集成sdk,引入bugly热更新需要的包


  compile 'com.tencent.bugly:crashreport_upgrade:latest.release'



  compile 'com.tencent.bugly:nativecrashreport:latest.release'



  compile "com.android.support:multidex:1.0.1" // 多dex配置

2.添加Tinker插件(加的是第三步新建的插件)


apply from: 'tinker-support.gradle'

3.新建tinker-support.gradle(最重要的部分)

3.1-baseAokDir是生成base-apk后填写的名称,一般是生成的日期

3.2- tinkerId 唯一,补丁包就是对指向的版本进行打补丁

3.2.1-tinkerId = “base-1.0.3” 生成apk时

3.2.2-tinkerId = “patch-1.0.3” 打补丁时,只需更该base为patch

3.3- enableProxyApplication = true 表示用自己项目中的Application,想false也可以,不怕麻烦就可以


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



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



/**

 * 此处填写每次构建生成的基准包目录

 */

def baseApkDir = "app-1205-14-06-35"



/**

 * 对于插件各参数的详细解析请参考

 */

tinkerSupport {



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

    enable = true



    // 自动生成tinkerId, 你无须关注tinkerId,默认为false

    autoGenerateTinkerId = true



    // 指定归档目录,默认值当前module的子目录tinker

    autoBackupApkDir = "${bakPath}"



    // 是否启用覆盖tinkerPatch配置功能,默认值false

    // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch

    overrideTinkerPatchConfiguration = true



    // 编译补丁包时,必需指定基线版本的apk,默认值为空

    // 如果为空,则表示不是进行补丁包的编译

    // @{link tinkerPatch.oldApk }

      baseApk = "${bakPath}/${baseApkDir}/app-release.apk"

    //baseApk =  "${bakPath}/${baseApkDir}/app-debug.apk"



    // 对应tinker插件applyMapping

    //baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"

//    baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-debug-mapping.txt"



    // 对应tinker插件applyResourceMapping

       baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"

    //baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-debug-R.txt"



    // 构建基准包跟补丁包都要修改tinkerId,主要用于区分

    tinkerId = "patch-1.0.3"



    // 打多渠道补丁时指定目录

    // buildAllFlavorsDir = "${bakPath}/${baseApkDir}"



    // 是否使用加固模式,默认为false

    // isProtectedApp = true



    // 是否采用反射Application的方式集成,无须改造Application

    enableProxyApplication = true



    // 支持新增Activity

    supportHotplugComponent = true



    //补丁包的版本号

   // tinkerId = "1.0.1-base"



}



/**

 * 一般来说,我们无需对下面的参数做任何的修改

 * 对于各参数的详细介绍请参考:

 * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97

 */

tinkerPatch {

    tinkerEnable = true

    ignoreWarning = false

    useSign = false

    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"

    }

}



4.配置完成开始打待更新的或者有bug的apk

就是这样啦,easy so

5.更改tinker-support.gradle

5.1更该base为patch

对应起来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值