Bugly熱更新SDK你需要知道的一些事

Bugly出熱更新SDK了?

沒錯,Bugly也出熱更新SDK啦,2016.11.25號,我們Bugly也上線了Android版的熱更新SDK,大家都知道這一年來熱更新被無數次提起,各大廠自主研發的熱更新方案層出不窮,下面就列舉一些大家比較熟悉的一些熱更新方案:

微信開源:Tinker
大衆點評:Nuwa
阿里巴巴:Dexposed
阿里巴巴:AndFix
美團:Robust

各個方案的優劣性筆者就不在這裏做過多討論了,總的一句話沒有最好的,只有最適合自己的

我們Bugly也是出於高可用性的考慮,Tinker支持動態下發代碼、So庫以及資源,所以我們最終選擇了Tinker方案作爲我們SDK的一項能力。

這裏有一點需要說明的,Android版的熱更新SDK是包含在升級SDK裏面的,所以如果你想使用我們提供的熱更新能力需要下載對應版本的升級SDK,目前我們在1.2.0版本纔開始支持熱更新:

注意:升級SDK自1.2.0起將不再支持以jar包形式集成,我們建議您使用Android studio並且以gradle方式集成。

爲什麼集成我們Bugly熱更新SDK?

熱更新能力是Bugly爲解決開發者緊急修復線上Bug,而無需重新發版讓用戶無感知就能把問題修復的一項能力。Bugly目前採用微信Tinker的開源方案,開發者只需要集成我們提供的SDK就可以實現自動下載補丁包、合成、並且應用補丁的功能,我們也提供了熱更新管理後臺讓開發者對每個版本的補丁進行管理。

集成我們SDK的好處是顯而易見的:
- 無需關注Tinker是如何合成補丁的
- 無需自己搭建補丁管理後臺
- 無需考慮後臺下發補丁策略的任何事情
- 無需考慮補丁下載合成的時機,處理後臺下發的策略
- 我們提供了更加方便集成Tinker的方式
- 我們提供應用升級一站式解決方案

這裏寫圖片描述

如何集成Bugly熱更新SDK?

看文檔、看文檔、看文檔。重要的事情說三遍。
Android熱更新接入指南

相信接入過Tinker的同學會發現使用Tinker還是有一定門檻的,小白用戶第一次使用可能會懵圈,我們Bugly也希望能讓第一次接入的同學能順利使用上熱更新,所以建議大家嚴格按照我們文檔的流程來接入,如果遇到任何使用SDK的問題可以及時跟我們反饋(交流羣號:130979883),但如果是Tinker插件的使用問題也是建議您認真查看Tinker Wiki

簡單概要說一下整個接入流程:
1. 配置插件依賴(這裏包含tinker插件tinker-support插件的依賴)
2. apply插件(這裏可以只配置apply plugin: 'com.tencent.bugly.tinker-support'
3. 集成SDK
- 集成遠程SDK倉庫
- 重新自定義Application、ApplicationLike
- AndroidManifest配置
- 混淆配置

  1. 測試驗證
    • 打基準包安裝並上報聯網(注:填寫唯一的tinkerId)
    • 對基準包的bug修復(可以是Java代碼變更,資源的變更)
    • 修改基準包路徑、填寫補丁包tinkerId、mapping文件路徑、resId文件路徑
    • 執行tinkerPatchRelease打Release版本補丁包
    • 選擇app/build/outputs/patch目錄下的補丁包並上傳(注:不要選擇tinkerPatch目錄下的補丁包,不然上傳會有問題)
    • 編輯下發補丁規則,點擊立即下發
    • 重啓基準包,請求補丁策略(SDK會自動下載補丁併合成)
    • 再次重啓基準包,檢驗補丁應用結果

以上是應用補丁的流程,有同學可能會問,如果我想撤回怎麼辦?這裏先解釋下我們補丁的幾種狀態:
- 下發中
- 生效中、下發停止
- 撤回中

下發中:表示你上傳一個補丁後,點擊立即下發之後的狀態,表示後臺正在下發補丁策略,補丁包對應的基線版本是可以收到對應的策略的。

生效中、下發停止:表示你已經下發過這個補丁,但因爲你上傳了新補丁,這個補丁下發會被停止,要注意一個目標版本只運行下發一個補丁。

撤回中:表示你不再下發這個補丁,這個操作是不可逆的,點擊撤回,基線版本將不會再收到這個補丁策略。

這裏寫圖片描述

以上就是Bugly熱更新SDK的集成方式一些說明啦,如果還有疑問直接找Bugly-kirito諮詢。

一些大家比較關注的問題

Q:Bugly熱更新會收費麼?

A:大家可以放心,我們熱更新服務目前是完全免費的。

Q:之前使用Tinker,怎麼切換過來使用Bugly?

A: 你只需在dependencies中配置一句代碼:

    compile "com.tencent.bugly:crashreport_upgrade:1.2.0"

註釋掉以前的配置:

    // 可選,用於生成application類 
    //provided('com.tencent.tinker:tinker-android-anno:1.7.5')
    // tinker的核心庫
    // compile('com.tencent.tinker:tinker-android-lib:1.7.5') 

插件配置不需要更改,只需要加上我們Bugly額外的tinker-support插件即可:

     // tinker gradle插件
     classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.5')

     // tinkersupport插件
     classpath "com.tencent.bugly:tinker-support:1.0.1"

這裏建議您不要隨便更改插件版本,避免因爲插件的更新導致您無法正常生成我們需要的補丁包。

Q:如果我配置了升級策略,又配置了補丁策略,會是怎樣的效果?

A:升級策略優先級會高於補丁策略,後臺會優先下發升級策略。畢竟你都要升級了,熱更新只是幫助你修復bug而已。

Q:我只想使用熱更新,不想使用升級?

A:熱更新是包含在升級SDK裏面的,你可以不配置任何升級策略,只需按照熱更新文檔集成即可。

Q:是否支持加固模式?

A:tinker是支持加固模式的,但需要你回退到Qzone方案
,將usePreGeneratedPatchDex設置爲true。

這裏寫圖片描述

但要注意Tinker官方的提示:

是否提前生成dex,而非合成的方式。這套方案即回退成Qzone的方案,對於需要使用加固或者多flavor打包(建議使用其他方式生成渠道包)的用戶可使用。但是這套方案需要插樁,會造成Dalvik下性能損耗以及Art補丁包可能過大的問題,務必謹慎使用。另外一方面,這種方案在Android N之後可能會產生問題,建議過濾N之後的用戶。

Q:是否支持打多Flavor的patch包
A:支持的。你需要配置productFlavor(示例):

  productFlavors {
        xiaomi {
            applicationId 'com.tencent.bugly.hotfix.xiaomi'
        }

        yyb {
            applicationId 'com.tencent.bugly.hotfix.yyb'
        }
    }

打flavor包,只需要配置構建flavor的目錄,其他字段不需要填寫(執行tinkerPatchAllFalvorRelease就可以得到所有flavor的包):

這裏寫圖片描述

這裏寫圖片描述

總結&展望

關於Bugly熱更新SDK你需要知道的一些事情,筆者已經講完啦,如果你在使用過程中遇到任何問題可以及時跟我們反饋,我們會持續跟進優化SDK和完善接入流程,後續我們會分享更多我們Bugly關於熱更新的一些技術和原理上的理解,希望本篇文章能夠讓使用Bugly熱更新SDK的同學和想了解我們熱更新的同學的有一些解惑。

發佈了675 篇原創文章 · 獲贊 2753 · 訪問量 574萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章