今天研究熱更新的時(shí)候研究了微信的Tinker熱更新框架,后來(lái)發(fā)現(xiàn)Bugly的升級(jí)SDK已經(jīng)封裝好了Tinker。
而且提供一站式服務(wù),還免費(fèi) :-D
步驟如下:
-
1、引用Bugly升級(jí)SDK.
在app module中添加如下引用compile 'com.android.support:multidex:1.0.1'// 多dex配置 compile 'com.tencent.bugly:crashreport_upgrade:latest.release' //其中l(wèi)atest.release指代最新版本號(hào),也可以指定明確的版本
在工程項(xiàng)目bulid.gradle中添加以下代碼:
classpath "com.tencent.bugly:tinker-support:latest.release"
為app module添加依賴:
apply from: 'tinker-support.gradle'
-
2、配置tinker-support.gradle
在app目錄下創(chuàng)建一個(gè)tinker-support.gradle文件。
apply plugin: 'com.tencent.bugly.tinker-support'def bakPath = file("${buildDir}/bakApk/") def appName = "app-0118-15-09-30" /** * 對(duì)于插件各參數(shù)的詳細(xì)解析請(qǐng)參考 */ tinkerSupport { // 開(kāi)啟tinker-support插件,默認(rèn)值true enable = true // 指定歸檔目錄,默認(rèn)值當(dāng)前module的子目錄tinker autoBackupApkDir = "${bakPath}" // 是否啟用覆蓋tinkerPatch配置功能,默認(rèn)值false // 開(kāi)啟后tinkerPatch配置不生效,即無(wú)需添加tinkerPatch overrideTinkerPatchConfiguration = true // 編譯補(bǔ)丁包時(shí),必需指定基線版本的apk,默認(rèn)值為空 // 如果為空,則表示不是進(jìn)行補(bǔ)丁包的編譯 // @{link tinkerPatch.oldApk } baseApk = "${bakPath}/${appName}/app-release.apk" // 對(duì)應(yīng)tinker插件applyMapping baseApkProguardMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 對(duì)應(yīng)tinker插件applyResourceMapping baseApkResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 唯一標(biāo)識(shí)當(dāng)前版本 tinkerId = "1.0.1-patch" // 是否開(kāi)啟代理Application,設(shè)置之后無(wú)須改造Application,默認(rèn)為false enableProxyApplication = true }
-
3、生成基準(zhǔn)包和補(bǔ)丁包
按照文檔配置好需要的權(quán)限,在Application中做好BuglySDK的初始化后我們就可以開(kāi)始熱更新測(cè)試了。
通過(guò)build中的assembleRealse生成基準(zhǔn)包
如果您的代碼使用了混淆功能還會(huì)生成一個(gè)mapping文件。
修改tinker-support.gradle中的tinkerId為新版本的標(biāo)識(shí)符。appName為你生成基準(zhǔn)包的目錄。
然后使用
生成補(bǔ)丁
補(bǔ)丁目錄
即可生成補(bǔ)丁,然后通過(guò)Bugly后臺(tái)
上傳補(bǔ)丁
上傳補(bǔ)丁即可。