日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

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掃加小編微信
添加時注明:“編碼美麗”否則不予通過!




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩精品成人在线观看 | 欧美高清在线一区 | 男人电影天堂 | 日韩精品免费 | 欧美国产三级 | 韩国三级视频 | 婷婷丁香社区 | 日韩不卡av | av不卡在线播放 | 欧美电影一区二区三区 | 97av在线| 中文字幕综合在线 | 91免费福利| 国产在线小视频 | 中文字幕国产一区 | 精品久久久久久久久久久久久久久久久久久 | 精品视频在线免费看 | 日韩一区二区三区高清 | 久久精品日韩 | 久久久久久国产 | 午夜视频一区二区 | 亚洲最大av网 | 成人免费视频网址 | 欧美a视频在线 | 久久久人成影片一区二区三区 | 日韩在线亚洲 | 国产一区二区在线播放 | 国产免费av在线 | 黄色毛片免费看 | 欧美在线一区二区三区四区 | 成人丁香 | 天堂中文字幕在线观看 | 国产精品久久久久久久久久东京 | 成人久久久精品乱码一区二区三区 | 久久这里都是精品 | 欧美日韩一区二区三区不卡 | 亚洲天堂婷婷 | 黄网站在线观看 | 亚洲成人精品久久久 | 成人国产一区 | 九九热视频在线观看 |