热更新:多么高大上的名字,Android 开发者应该都知道这么个东西,原理呢!请自行百度,这里只是集成总结,谢谢!!! 对于第三方SDK的使用,大家都知道用“步步高点读机,哪里不会点哪里”—— 所以第一步肯定是看官方集成文档:地址:https://bugly.QQ.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170223160322 首先,刚开始看的时候跟大部分SDK一样肯定是各种配置的,这里根据官方文档的步骤来解释说明哪里需要注意的,以及我是怎么处理成功的。
第一步:添加插件依赖 工程根目录下“build.gradle”文件中添加:
buildscript { repositories { jcenter() } dependencies { // tinkersupport插件, 其中lastest.release指拉取最新版本,也可以指定明确版本号,例如1.0.4 classpath “com.tencent.bugly:tinker-support:latest.release” } } 坑 1:这里是添加依赖没错,但我遇到问题就是后面生成patch包时在Gradle任务中找不到文档里面说的tinker文件夹和tinker-support文件夹(后面的步骤会说到),于是乎翻山越岭找资料,发现一个这个: classpath (‘com.tencent.tinker:tinker-patch-gradle-plugin:1.7.5’) 需要这个依赖插件
第二步:集成SDK:这里没有什么大坑,照着复制就可以了,注意:tinker-support.gradle文件中的配置 apply plugin: ‘com.tencent.bugly.tinker-support’
def bakPath = file(“${buildDir}/bakApk/”)
/** * 此处填写每次构建生成的基准包目录,如果是你打基准包这个可以暂时不用管,打patch包的话就要改成你的基准包生成的目录,必须相同 */ def baseApkDir = “app-0208-15-10-00”
/** * 对于插件各参数的详细解析请参考 */ tinkerSupport {
// 开启tinker-support插件,默认值trueenable = true// 指定归档目录,默认值当前module的子目录tinkerautoBackupApkDir = "${bakPath}"// 是否启用覆盖tinkerPatch配置功能,默认值false// 开启后tinkerPatch配置不生效,即无需添加tinkerPatchoverrideTinkerPatchConfiguration = true// 编译补丁包时,必需指定基线版本的apk,默认值为空// 如果为空,则表示不是进行补丁包的编译// @{link tinkerPatch.oldApk } **patch包改成基准包的apk文件名**baseApk = "${bakPath}/${baseApkDir}/app-release.apk"// 对应tinker插件applyMapping **patch包改成基准包的mapping文件名**baseApkPRoguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"// 对应tinker插件applyResourceMapping **patch包改成基准包的R文件名**baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"// 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性,**基准包这里最好是改成base-versionname,patch包就改成patch-versionname,每个版本的都不一样**tinkerId = "base-1.0.1"//示例// 构建多渠道补丁时使用// buildAllFlavorsDir = "${bakPath}/${baseApkDir}"// 是否开启反射application模式enableProxyApplication = false}
/** * 一般来说,我们无需对下面的参数做任何的修改 * 对于各参数的详细介绍请参考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */ tinkerPatch { //oldApk =”
// path = “/usr/local/bin/7za” } buildConfig { keepDexApply = false //tinkerId = “1.0.1-base” //applyMapping = “
后面的步骤就按照集成文档来就OK了,最后说明一下:build文件夹下会产生很多app-xxxx-xx-xx的文件夹, 你生成的基准包就是在这里面,主要使用最新的,不想要的话直接build project或者clean也可以。
终极大坑: 在打patch包的时候,遇到点击Gradle任务中的tinker-support生成apk的时候有时会出错,经过我的不断rebuild和clean之后就好了(也有可能是你配置文件中的问题,这里需要注意)。
demo地址:http://download.csdn.net/detail/ling9400/9763209(module)
新闻热点
疑难解答