使用bugly熱更新記錄(一)

現(xiàn)在市面上熱更新方案很多,本篇嘗試使用bugly方案疫衩,bugly對tinker進行封裝并添加后臺管理鲤拿,使用更新方便,目前免費冤寿。
bugly熱更新官方使用指南地址:https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170912151050
如果有時間的話最好看下介紹視頻号杠,你會避免接入過程中的很多問題堂飞。


上述步驟可以參考文檔完成,很簡單谋右,第三步我們采用enableProxyApplication = false 的情況,這也是bugly推薦的方式蜂林。
這時我們可以打開熱更新API接口子眶,把設(shè)置bugly的一些參數(shù)加入到自己的SampleApplicationLike類中芝加,https://bugly.qq.com/docs/user-guide/api-hotfix/?v=20170912151050
例如我加入的

@Override
public void onCreate() {
    super.onCreate();

    initBuglyHotFix();

}

private void initBuglyHotFix() {

    // 設(shè)置是否開啟熱更新能力脉顿,默認為true
    Beta.enableHotfix = true;
    // 設(shè)置是否自動下載補丁蔽莱,默認為true
    Beta.canAutoDownloadPatch = true;
    // 設(shè)置是否自動合成補丁仪糖,默認為true
    Beta.canAutoPatch = true;
    // 設(shè)置是否提示用戶重啟饥瓷,默認為false
    Beta.canNotifyUserRestart = true;
    // 補丁回調(diào)接口
    Beta.betaPatchListener = new BetaPatchListener() {
        @Override
        public void onPatchReceived(String patchFile) {
            Toast.makeText(getApplication(), "補丁下載地址" + patchFile, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onDownloadReceived(long savedLength, long totalLength) {
            Toast.makeText(getApplication(),
                    String.format(Locale.getDefault(), "%s %d%%",
                            Beta.strNotificationDownloading,
                            (int) (totalLength == 0 ? 0 : savedLength * 100 / totalLength)),
                    Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onDownloadSuccess(String msg) {
            Toast.makeText(getApplication(), "補丁下載成功", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onDownloadFailure(String msg) {
            Toast.makeText(getApplication(), "補丁下載失敗", Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onApplySuccess(String msg) {
            Toast.makeText(getApplication(), "補丁應用成功", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onApplyFailure(String msg) {
            Toast.makeText(getApplication(), "補丁應用失敗", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPatchRollback() {

        }
    };

    // 設(shè)置開發(fā)設(shè)備娜谊,默認為false确买,上傳補丁如果下發(fā)范圍指定為“開發(fā)設(shè)備”,需要調(diào)用此接口來標識開發(fā)設(shè)備
    Bugly.setIsDevelopmentDevice(getApplication(), true);
    // 多渠道需求塞入
    // String channel = WalleChannelReader.getChannel(getApplication());
    // Bugly.setAppChannel(getApplication(), channel);
    // 這里實現(xiàn)SDK初始化纱皆,appId替換成你的在Bugly平臺申請的appId
    //第三個參數(shù)就是是否開啟debug的參數(shù)
    Bugly.init(getApplication(), "900029763", true);
}

請注意這里面的參數(shù)設(shè)置湾趾,例如這行Beta.canNotifyUserRestart = true;
是否提示用戶重啟芭商,為了方便我們看到自己的效果,這時我們這時了true搀缠,還有這行 Bugly.init(getApplication(), "900029763", true);
第三個參數(shù)就是開啟debug的參數(shù)
然后我們需要在bugly平臺注冊一個賬號铛楣,創(chuàng)建自己的應用,獲取自己的App ID



我們需要在SampleApplicationLike中修改這個參數(shù)
Bugly.init(getApplication(), "900029763", false);第二個參數(shù)就是我們的App ID艺普。
我在自己的demo里面寫了一個bug

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    findViewById(R.id.bt_test).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Toast.makeText(MainActivity.this, Bug.getBugString(), Toast.LENGTH_SHORT).show();


        }
    });

}

class Bug{

  static String getBugString(){

     String str=null;

     Log.e("BugClass","get string length:"+str.length());

     return "This is a bug class";
 }

}
這時一個空指針異常
這時我們打開tinker-support.gradle文件簸州,修改tinkerId


記得要在build.grade文件里面配置自己的簽名信息,這時我們可以生成自己的基準包了歧譬,注意關(guān)閉自己的instant run模式岸浑,我們打開右側(cè)的gradle,雙擊assembleRelease,就會生成自己的基準包


我們把app-release.apk安裝到自己的手機上面

這時點擊TEST按鈕程序就會崩潰瑰步,錯誤信息如下

好了矢洲,這時我們可以修復我們的bug

然后修改tinker-support.gradle文件中的baseApkDir,一定要和左側(cè)基準包一致,不然無法修復面氓,修改第二個參數(shù)就是tinkerId,把1.0.1-base改成1.0.1-patch即可


這時我們可以生成對應的補丁包了兵钮,雙擊下圖中的buildTinkerPatchRelease即可

然后在左側(cè)可以看到生成的補丁包

patch_signed_7zip.apk就是補丁包蛆橡,這時我們打開bugly熱更新管理平臺

點擊發(fā)布新補丁舌界,上傳patch_signed_7zip.apk文件即可,注意我們上傳補丁包前一定要運行我們的基準包泰演,上傳我們的基準包的信息給bugly平臺呻拌,這樣我們上傳補丁包才可以修復我們的bug,上傳過后我們重新運行我們的基準包

可以看到bug修復成功睦焕,上面的提示信息和彈框都可以在SampleApplicationLike設(shè)置關(guān)閉藐握,注意一定要重啟應用或者屏幕關(guān)閉后開啟,bug才能修復成功垃喊。
實際的開發(fā)中都會有很多的渠道包猾普,而且會加固,多個渠道包如何進行熱修復呢本谜?下篇會將自己集成美團walle多渠道打包和360加固的過程分享出來初家。
demo地址https://github.com/yanchenling/MyHotFixDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市乌助,隨后出現(xiàn)的幾起案子溜在,更是在濱河造成了極大的恐慌,老刑警劉巖他托,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掖肋,死亡現(xiàn)場離奇詭異,居然都是意外死亡赏参,警方通過查閱死者的電腦和手機志笼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門沿盅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人籽腕,你說我怎么就攤上這事嗡呼。” “怎么了皇耗?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵南窗,是天一觀的道長。 經(jīng)常有香客問我郎楼,道長万伤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任呜袁,我火速辦了婚禮敌买,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阶界。我一直安慰自己虹钮,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布膘融。 她就那樣靜靜地躺著芙粱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氧映。 梳的紋絲不亂的頭發(fā)上春畔,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音岛都,去河邊找鬼律姨。 笑死,一個胖子當著我的面吹牛臼疫,可吹牛的內(nèi)容都是我干的择份。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼烫堤,長吁一口氣:“原來是場噩夢啊……” “哼荣赶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起塔逃,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讯壶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后湾盗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伏蚊,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年格粪,在試婚紗的時候發(fā)現(xiàn)自己被綠了躏吊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氛改。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖比伏,靈堂內(nèi)的尸體忽然破棺而出胜卤,到底是詐尸還是另有隱情,我是刑警寧澤赁项,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布葛躏,位于F島的核電站,受9級特大地震影響悠菜,放射性物質(zhì)發(fā)生泄漏舰攒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一悔醋、第九天 我趴在偏房一處隱蔽的房頂上張望摩窃。 院中可真熱鬧,春花似錦芬骄、人聲如沸猾愿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒂秘。三九已至,卻和暖如春宰僧,著一層夾襖步出監(jiān)牢的瞬間材彪,已是汗流浹背观挎。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工琴儿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘁捷。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓造成,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雄嚣。 傳聞我的和親對象是個殘疾皇子晒屎,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355