Bugly熱更新最詳細的使用教程

Bugly熱更新最詳細的使用教程

1.第一步請仔細閱讀官方文檔,如果時間充足,可以觀看官方的教程視頻,因爲文檔也許會說的不清楚,官方視頻講的很清楚

https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20171123163535

2.將這個classpath "com.tencent.bugly:tinker-support:latest.release" 配置到項目的外層的build.gradle

如圖:

編譯好了以後,你就可以使用tinker了。

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文件,建議保持舊apkproguard混淆方式 //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可選,設置R.txt文件,通過舊apk文件保持ResId的分配 }}

4.在app目錄的build.gradle中引入,如圖:

apply from: 'tinker-support.gradle'

到了這裏如果沒報錯的話,配置就成功了,如果報錯了,也不用怕,檢查步驟有木有出錯

5.改造MyApplication

除此之外,還需要一個MyApplicationLike類,以前在application中做的事,現在都放在MyApplicationLike裏,紅色的部分就是應用的MyApplicationLike,包名+你的MyApplicationLike,我的MyApplicationLike東西太多,我就截的官網圖

6.至此配置完成,如果你還不清楚的話,請參考官方文檔或視頻:

https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170912151050

現在我們要先打一個基準包,如圖:

打開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後:

成功!

8.最後

希望我的教程能夠幫到你,切記不要心急,越急反而bug百出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章