多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android應用市場省流量更新(增量升級)原理解析

Android應用市場省流量更新(增量升級)原理解析

來源:程序員人生   發布時間:2017-02-07 09:43:59 閱讀次數:6844次

1、前言

最近在看熱修復相干的框架,之前我們已看過了阿里的Dexposed和AndFix這兩個框架了,不了解的同學可以點擊這里進行查看:Dexposed框架原理解析 和 AndFix熱修復框架原理解析,然后還有最近很火的1個是騰訊的Tinker熱修復框架,再看他的原理實現的時候,發現了他使用到了開源的文件差分工具bsdiff/bspatch,所以就單獨用這篇文章來詳細介紹1下這個工具,由于這個工具有1個很大的用處就是增量更新,也就是我們看到現在大部份的利用市場推出的省流量更新利用的效果:


看到了吧,會提示你省了很多流量,依照之前常規的思路就是有利用更新了,就直接把更新的apk包下載然后升級安裝,那末如果1個apk包很大,如果在非Wifi情況下還是很耗流量的,但是有時候我們會發現1個利用在升級的時候只是改了部份功能,有些功能并沒有改,那末就想了如果要是能直接更新變動的功能的話,那末就會下載數據非常少了。這就需要借助我們幾天介紹的這個文件差分工具bsdiff/bspatch了。


2、原理解析

上面的省流量更新原理可以這么理解:服務端可以借助bsdiff工具,比對新舊apk包的文件,獲得到差分文件以后下發到客戶端,而這個差分文件的大小肯定是小于新的apk文件大小的。客戶端得到這個差分文件以后,本地在使用bspatch工具進行差分文件和本地已安裝的舊apk包進行合并成新的apk包文件,然后在進行升級安裝

在這個進程中,客戶端在訪問服務真個時候可能需要攜帶舊apk包的md5,利用包名,版本號等信息,服務端獲得到以后會去數據庫中查詢其對應的本次需要升級的apk包和舊版本號對應的舊apk包,然落后行差分處理得到差分文件,在下發到客戶端便可。


3、案例代碼分析

上面了解了原理以后,下面就直接看通過源碼進行操作吧,前面已說過了,bsdiff和bspatch這個功能源碼是開源的,可以從網上查找,關于他們的源碼這里不做太多的介紹,由于是純C代碼,分析起來沒甚么意思,可以自行瀏覽便可,由于是純C語言的,所以如果我們想在Android端使用的話那末就需要使用NDK進行開發了,需要在上層用native方法進行關聯訪問,這個其實也沒甚么大的問題,而關于服務端那邊進行文件差分操作,這個已有現成的工具了,也是用C語言編譯的可履行文件。所以下面第1步先來解決客戶真個NDK開發工作:

第1步:定義native方法


這個native方法還是比較簡單的,參數也很容易理解,新舊apk包路徑,差分包路徑。

第2步:使用javah生成頭文件


注意:這里的命令是運行在源碼src目錄下,采取的類全名方式生成的。會在當前目錄下生成對應的頭文件:


第3步:新建jni目錄

右擊項目,選擇Android Tools=》Add Native Support,點擊下1步便可,在項目中會生成1個jni目錄,然后我們把上面生成的頭文件拷貝到這里,同時把網上找到的bsdiff和bspatch源碼也拷貝到這個目錄下:


然后記得添加編譯腳本mk文件便可。

第4步:編寫native層代碼


這里代碼非常簡單,把上層傳遞的參數直接傳入到applypatch函數中便可,相當于我們甚么都不用做。

第5步:使用編譯以后的bsdiff工具生成差分文件patch


在這個目錄下運行命令:bsdiff.exe demo_old.apk demo_new.apk demo.patch;然后生成了demo.patch文件,我們可以將其拷貝到sdcard目錄下。

第6步:客戶端編寫代碼進行差分文件合并


這里通過sdcard目錄下的舊apk文件和生成的patch文件進行合并工作,生成新的apk文件,生成以后直接進行升級安裝。

注意:這里我們為了懶,把舊apk直接拷貝到sdcard目錄了,而在實際開發中我們應當通過系統提供的方法直接獲得已安裝利用的apk文件路徑的:



4、運行結果

上面的代碼已編寫完成了,下面就直接運行便可,會自動編譯native的代碼:


然后運行結果:


這樣就簡單實現了利用的增量升級了。而這個技術在后面介紹Tinker框架的時候會觸及到,他內部做了差分文件也是借助這個工具來進行操作的。


項目下載地址:https://github.com/fourbrother/android_diffupdate


5、總結

現在的熱修復框架都會觸及到修復文件,而這個文件現在都可能叫做差分文件。就是需要真正修復問題的文件包。這個技術在初期利用市場中的省流量升級已體現出來了。


更多內容:點擊這里

關注微信公眾號,最新技術干貨實時推送

掃1掃加小編微信
添加時注明:“編碼美麗”否則不予通過!




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产高清国内精品福利99久久 | 欧美日韩一二三四区 | 亚洲欧美日韩国产精品一区 | 2021年中文字幕视频 | jizz毛片| 亚洲欧美一区二区视频 | 亚洲天堂免费在线视频 | 欧美成人性色 | 久久精品国产网红主播图片 | 国产一级毛片视频在线! | 超刺激福利丝袜网站 | 伊人亚洲综合网成人 | 国产精品久久久久影院免费 | 亚州成人 | jizzjizz免费大全| 激情视频在线观看网站 | 91亚洲精品国产第一区 | 国产v日韩v欧美v精品专区 | 综合亚洲欧美日韩一区二区 | 变态 另类 国产 亚洲 | 好好的曰www视频在线观看 | 中文天堂 | 一国产一级淫片a免费播放口 | 久久久久国产精品免费免费不卡 | 精品国产爱久久 | 国产欧美另类久久久品 | 亚洲国产福利 | 一级做a爰性色毛片 | 欧美日韩不卡视频 | 亚洲日本中文字幕永久 | 免费能看的黄色网址 | 日韩一级在线播放免费观看 | 国产三区视频李宗瑞 | a级亚洲片精品久久久久久久 | 国产不卡福利 | 日韩高清一区二区三区五区七区 | 一区二区三区不卡在线 | videosfree性欧美另类 | 日韩中文字幕久久精品 | 视频一区二区不卡 | 日本一区二区免费看 |