Bugly熱更新最詳細的使用教程
1.第一步請仔細閱讀官方文檔,如果時間充足,可以觀看官方的教程視頻,因爲文檔也許會說的不清楚,官方視頻講的很清楚
https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=201711231635352.將這個classpath "com.tencent.bugly:tinker-support:latest.release" 配置到項目的外層的build.gradle
3.在項目的app目錄下創建tinker-support.gradle文件
該文件內容如下:
apply plugin: 'com.tencent.bugly.tinker-support' def bakPath = file("${buildDir}/bakApk/") /** * 此處填寫每次構建生成的基準包目錄 */ def baseApkDir = "app-1205-14-53-05" /** * 對於插件各參數的詳細解析請參考 */ tinkerSupport { // 開啓tinker-support插件,默認值true enable = true // 指定歸檔目錄,默認值當前module的子目錄tinker autoBackupApkDir = "${bakPath}" // 是否啓用覆蓋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" // 構建基準包和補丁包都要指定不同的tinkerId,並且必須保證唯一性,base後面的就是的版本號 tinkerId = "base-2.0.2"
// tinkerId = "patch-2.0.2"// 構建多渠道補丁時使用 // buildAllFlavorsDir = "${bakPath}/${baseApkDir}" // 是否啓用加固模式,默認爲false.(tinker-spport 1.0.7起支持) // isProtectedApp = true // 是否開啓反射Application模式 enableProxyApplication = false}/** * 一般來說,我們無需對下面的參數做任何的修改 * 對於各參數的詳細介紹請參考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */tinkerPatch { //oldApk ="${bakPath}/${appName}/app-release.apk" ignoreWarning = false useSign = true 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" //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可選,設置mapping文件,建議保持舊apk的proguard混淆方式 //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可選,設置R.txt文件,通過舊apk文件保持ResId的分配 }}
4.在app目錄的build.gradle中引入,如圖:
apply from: 'tinker-support.gradle'
5.改造MyApplication
6.至此配置完成,如果你還不清楚的話,請參考官方文檔或視頻:
打開AS右側的Gradle,選擇app下的build執行Debug或Release命令 成功以後
你會在項目的app目錄下的build文件夾內看到你的基準包,你可以人爲製造一個小bug,以便進行熱修復,接下來,將你的基準包上傳至Bugly
如果你沒有賬號,建議先註冊一個賬號,非常簡單
7.接下來就是重頭戲,打出對應版本的補丁
依舊打開AS右側的Gradle,打開App目錄下的 tinker-supporrt執行Debug或Release命令 成功以後,會在你的項目的build文件夾下的outputs文件夾生成 patch和 tinkerPatch這麼兩個文件夾,其中 tinkerPatch文件夾 裏放的是一些打包信息,補丁放在patch裏的,就是 .zip結尾的一個包
你可以打開看一哈
Bugly有一個聯網上報功能,就是當你的App打開後,他會將你App的一些信息上報到Bugly上面去,這樣的話,你的補丁在Bugly上面發佈的時候纔會匹配到你的App, 補丁和App是一一對應的,如圖所示: 這是Bugly的日誌,如果你想看的話,請參考本教程的第五步,現在我們可以將補丁發佈到Bugly上啦,如圖所示:
如果你在發佈補丁時出錯,是因爲還沒有聯網上報,請先啓動你的App,否則你的補丁將匹配不到所對應的App; 補丁上傳成功以後,當你在打開App是,Bugly會自動檢測是否有新的補丁,如果有,會在後臺自動下載併合並你的App 通過查看Bugly的日誌 如圖:
可以有人會問,爲什麼還是不行呢?因爲你需要重新啓動App
重新啓動App後:
成功!