接入阿里百川Hotfix的過程(第二篇:編寫及設(shè)置)

前言

上一篇文章 http://www.reibang.com/p/654e812d1222 我簡單寫了一下阿里百川Hotfix的配置過程,就在我剛寫完的第二天,Hotfix出了升級(jí)版本的Sophix,這次支持的更多了!首先贊一個(gè),出了Hotfix2.0版本以后,我也是第一時(shí)間進(jìn)行了接入,比1.x的要用起來舒服多了!接下來廢話不多說,直接上代碼吧!

SophixManager.getInstance()
                .setContext(this)
                .setAppVersion(AppUtils.getVersionName(this))
                .setAesKey(null)
                .setEnableDebug(Constants.DEBUG_MODE)
                .setPatchLoadStatusStub((mode, code, info, patchVersion) ->{
                    switch (code){
                        case PatchStatus.CODE_LOAD_SUCCESS:
                            XLog.d("SophixManager",info+"----補(bǔ)丁加載成功,當(dāng)前的補(bǔ)丁版本為:"+patchVersion);
                            break;
                        case PatchStatus.CODE_LOAD_FAIL:
                            //內(nèi)部引擎異常, 推薦此時(shí)清空本地補(bǔ)丁, 防止失敗補(bǔ)丁重復(fù)加載
                            XLog.d("SophixManager",info+"---補(bǔ)丁加載失敗,下面將清空本地補(bǔ)丁再重新拉取補(bǔ)丁!");
                            SophixManager.getInstance().cleanPatches();
                            break;
                        default:
                            XLog.d("SophixManager","--mode是"+mode+"--code是"+code
                                    +"--info是"+info+"--patchVersion是"+patchVersion);
                            break;
                    }
                }).initialize();
        SophixManager.getInstance().queryAndLoadNewPatch();

這一段代碼我寫在application的onCreate()里面
其實(shí)真正核心的東西也就這么多了,下面我簡單就里面的幾個(gè)方法做一下解釋!

代碼分析部分

SophixManager.getInstance()//獲取單例的SophixManager對(duì)象
setContext(this)//這個(gè)就不用解釋了吧
setAppVersion()//設(shè)置當(dāng)前的appVersion,建議直接通過utils拿當(dāng)前app版本的版本號(hào)
setAeskey()//這個(gè)是一個(gè)加密,防止你的補(bǔ)丁包被別人抓取然后泄露信息,因?yàn)槲覜]有用到,所以傳的null,有需求的可以去具體看阿里百川的教程
setEnableDebug(true)//是否打印Sophix的log日志,默認(rèn)關(guān)閉,這個(gè)建議跟當(dāng)前app的debug版本一致
setPatchLoadStatusStub()//設(shè)置patch加載狀態(tài)監(jiān)聽器, 該方法參數(shù)需要實(shí)現(xiàn)PatchLoadStatusListener接口, 
//(因?yàn)槲矣昧薼amada,所以這個(gè)是序列化以后的寫法,不了解的去看看lamada),下面我一個(gè)一個(gè)來介紹
//mode :這個(gè)參數(shù)顯示的是你當(dāng)前加載補(bǔ)丁到底是通過哪個(gè)途徑來添加的: 0:正常請(qǐng)求模式 1:掃碼模式 2:本地補(bǔ)丁模式
//code: 補(bǔ)丁加載狀態(tài)碼, 詳情查看PatchStatusCode類說明
//info: 補(bǔ)丁加載詳細(xì)說明, 詳情查看PatchStatusCode類說明
//handlePatchVersion: 當(dāng)前處理的補(bǔ)丁版本號(hào), 0:無 -1:本地補(bǔ)丁 其它:后臺(tái)補(bǔ)丁

介紹的話 大家也可以看下面的鏈接
開發(fā)者集成文檔http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.eJJ4qK&treeId=234&articleId=106531&docType=1

queryAndLoadNewPatch方法

該方法主要用于查詢服務(wù)器是否有新的可用補(bǔ)丁. SDK內(nèi)部限制連續(xù)兩次queryAndLoadNewPatch()方法調(diào)用不能短于3s, 否則的話就會(huì)報(bào)code:19的錯(cuò)誤碼. 如果查詢到可用的話, 首先下載補(bǔ)丁到本地, 然后

  • 應(yīng)用原本沒有補(bǔ)丁, 那么如果當(dāng)前應(yīng)用的補(bǔ)丁是熱補(bǔ)丁, 那么會(huì)立刻加載(不管是冷補(bǔ)丁還是熱補(bǔ)丁). 如果當(dāng)前應(yīng)用的補(bǔ)丁是冷補(bǔ)丁, 那么需要重啟生效.
  • 應(yīng)用已經(jīng)存在一個(gè)補(bǔ)丁, 首先會(huì)把之前的補(bǔ)丁文件刪除, 然后不立刻加載, 而是等待下次應(yīng)用重啟再加載該補(bǔ)丁
    補(bǔ)丁在后臺(tái)發(fā)布之后, 并不會(huì)主動(dòng)下行推送到客戶端, 需要手動(dòng)調(diào)用queryAndLoadNewPatch方法查詢后臺(tái)補(bǔ)丁是否可用.
  • 只會(huì)下載補(bǔ)丁版本號(hào)比當(dāng)前應(yīng)用存在的補(bǔ)丁版本號(hào)高的補(bǔ)丁, 比如當(dāng)前應(yīng)用已經(jīng)下載了補(bǔ)丁版本號(hào)為5的補(bǔ)丁, 那么只有后臺(tái)發(fā)布的補(bǔ)丁版本號(hào)>5才會(huì)重新下載.

同時(shí)1.4.0以上版本服務(wù)后臺(tái)上線了“一鍵清除”補(bǔ)丁的功能, 所以如果后臺(tái)點(diǎn)擊了“一鍵清除”那么這個(gè)方法將會(huì)返回code:18的狀態(tài)碼. 此時(shí)本地補(bǔ)丁將會(huì)被強(qiáng)制清除, 同時(shí)不清除本地補(bǔ)丁版本號(hào)

cleanPatches()方法

清空本地補(bǔ)丁

版本管理說明

說明一:patch是針對(duì)客戶端具體某個(gè)版本的走净,patch和具體版本綁定

  • eg. 應(yīng)用當(dāng)前版本號(hào)是1.1.0, 那么只能在后臺(tái)查詢到1.1.0版本對(duì)應(yīng)發(fā)布的補(bǔ)丁, 而查詢不到之前1.0.0舊版本發(fā)布的補(bǔ)丁.

說明二:針對(duì)某個(gè)具體版本發(fā)布的新補(bǔ)丁, 必須包含所有的bugfix, 而不能依賴補(bǔ)丁遞增修復(fù)的方式, 因?yàn)閼?yīng)用僅可能加載一個(gè)補(bǔ)丁

  • eg. 針對(duì)1.0.0版本在后臺(tái)發(fā)布了一個(gè)補(bǔ)丁版本號(hào)為1的補(bǔ)丁修復(fù)了bug1, 然后發(fā)現(xiàn)此時(shí)針對(duì)這個(gè)版本補(bǔ)丁1修復(fù)的不完全, 代碼還有bug2, 在后臺(tái)重新發(fā)布一個(gè)補(bǔ)丁版本號(hào)為2的補(bǔ)丁, 那么此時(shí)補(bǔ)丁2就必須同時(shí)包含bug1和bug2的修復(fù)才行, 而不是只包含bug2的修復(fù)(bug1就沒被修復(fù)了)

本來很多打算自己寫的,但是覺得官方的拷過來更專業(yè),畢竟解釋的很詳細(xì)!下面具體講一下后臺(tái)的用法

后臺(tái)創(chuàng)建應(yīng)用

開發(fā)者控制臺(tái)圖片及網(wǎng)址

http://console.baichuan.taobao.com/applications.htm?spm=a3c0d.8115102.0.0

  • 點(diǎn)擊創(chuàng)建應(yīng)用
會(huì)彈出上面的界面
  • 創(chuàng)建成功之后
應(yīng)用列表展示
  • 點(diǎn)進(jìn)去應(yīng)用
大致就是這個(gè)樣子
  • 想要管理后臺(tái)的話點(diǎn)擊這里
產(chǎn)品后臺(tái)
  • 然后選擇自己已開通的hotfix
點(diǎn)進(jìn)去以后的后臺(tái)應(yīng)用列表

可以看到創(chuàng)建一個(gè)應(yīng)用會(huì)有兩個(gè)操作系統(tǒng)的,我們只針對(duì)android,不過ios目前開始打擊熱更新這一塊了!

點(diǎn)進(jìn)去管理,接下來的如圖

新增版本

版本號(hào)和當(dāng)前的app的版本號(hào)一致,點(diǎn)進(jìn)去新建的版本就會(huì)看到上傳補(bǔ)丁,補(bǔ)丁包的制作詳見下面鏈接!http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.UX6d4l&treeId=234&articleId=106532&docType=1

里面的強(qiáng)制冷啟動(dòng)修復(fù)什么時(shí)候用,我第一篇博客里面貼出來的圖里面有!

調(diào)試工具使用說明

鏈接里面介紹的很詳細(xì),有什么疑問歡迎留言!
http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.cgWAIG&treeId=234&articleId=105842&docType=1

最后

小弟寫博客不久,可能還有很多地方寫的不好,希望大家及時(shí)指出來,共同進(jìn)步!當(dāng)然,要是能點(diǎn)個(gè)喜歡或者關(guān)注一下就更好了!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耕挨,一起剝皮案震驚了整個(gè)濱河市浓利,隨后出現(xiàn)的幾起案子凸丸,更是在濱河造成了極大的恐慌何暮,老刑警劉巖耿币,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件制圈,死亡現(xiàn)場離奇詭異睹酌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拍鲤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門贴谎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人季稳,你說我怎么就攤上這事擅这。” “怎么了景鼠?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵仲翎,是天一觀的道長。 經(jīng)常有香客問我,道長溯香,這世上最難降的妖魔是什么鲫构? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮玫坛,結(jié)果婚禮上芬迄,老公的妹妹穿的比我還像新娘。我一直安慰自己昂秃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布杜窄。 她就那樣靜靜地躺著肠骆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塞耕。 梳的紋絲不亂的頭發(fā)上蚀腿,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音扫外,去河邊找鬼莉钙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛筛谚,可吹牛的內(nèi)容都是我干的磁玉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼驾讲,長吁一口氣:“原來是場噩夢啊……” “哼蚊伞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吮铭,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤时迫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谓晌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掠拳,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年纸肉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溺欧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毁靶,死狀恐怖胧奔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情预吆,我是刑警寧澤龙填,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響岩遗,放射性物質(zhì)發(fā)生泄漏扇商。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一宿礁、第九天 我趴在偏房一處隱蔽的房頂上張望案铺。 院中可真熱鬧,春花似錦梆靖、人聲如沸控汉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姑子。三九已至,卻和暖如春测僵,著一層夾襖步出監(jiān)牢的瞬間街佑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工捍靠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沐旨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓榨婆,卻偏偏與公主長得像磁携,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纲辽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 集成步驟: 首先創(chuàng)建開發(fā)者賬號(hào)颜武,并創(chuàng)建一個(gè)應(yīng)用 Androidstutio集成: 首先還是按照阿里文檔集成,有可能...
    laer_L閱讀 4,248評(píng)論 4 23
  • 一拖吼、注冊(cè)阿里百川賬號(hào) 1鳞上,如果有淘寶賬號(hào)可以直接登陸,沒有就申請(qǐng)2吊档,申請(qǐng)開發(fā)者(有個(gè)人開發(fā)者和企業(yè)開發(fā)者) 二篙议、創(chuàng)...
    夢止惰閱讀 5,190評(píng)論 2 6
  • 最近自己公司的項(xiàng)目打算做熱更新,因?yàn)橛幸粋€(gè)很小的bug處理的時(shí)候居然一周發(fā)了三個(gè)新版本,所以就決定做熱更新來避免這...
    ziabo_yu閱讀 1,713評(píng)論 8 7
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,744評(píng)論 25 707
  • 從2016年1月7號(hào)到現(xiàn)在半年過去了,終于這段沒有結(jié)果怠硼,自己飛蛾撲火最后讓自己遍體鱗傷的感情終于要結(jié)束了鬼贱,雖然一直...
    南京的上海路上海的南京路閱讀 393評(píng)論 0 1