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

生成補丁

補丁目錄
即可生成補丁,然后通過Bugly后臺

上傳補丁
上傳補丁即可。
