Google采用檔對檔修補技術(shù),Android程序更新檔最多可減肥90%
檔對檔的修補即是奠基在偵測原始內(nèi)容的相異處,先將新、舊壓縮檔解壓縮,找出不同之處并進(jìn)行修補之后,再重新壓縮。平均可減少65%的更新檔案大小,有些時候甚至可減少90%以上。
你曾擔(dān)心Android程式更新讓傳輸流量破表嗎?Google在本月初發(fā)表了新型態(tài)的Android程式更新技術(shù),采用了檔對檔修補(File-by-File patching)平均可減少65%的更新檔案大小,有些時候甚至可減少90%以上。
File-by-File patching源自于Archive-patcher開放源碼專案,它能夠逐個檢查壓縮檔案中的個別檔案以進(jìn)行修補,因此極為節(jié)省空間,也支援各種有效的壓縮檔。
Google Play軟體工程師Andrew Hayden舉例,假設(shè)某本書的作者想要變更書中的一段話,只告訴編輯需要修改的部份比重新寄出整本新書要容易得多,換言之,只進(jìn)行修補要比下載完整的APK更小也更快速。
Hayden說明,包括APK(Android程式副檔名)在內(nèi)的許多壓縮檔都是利用Deflate技術(shù)進(jìn)行壓縮,Deflate是個很好的資料壓縮技術(shù)但卻很難辨識原始內(nèi)容的改變,原始內(nèi)容的一丁點變更都會讓壓縮版本大為不同,要找出原始內(nèi)容的不同之處相對容易,但要找出壓縮版本的不同之處卻很難,讓修補沒效率。
檔對檔的修補即是奠基在偵測原始內(nèi)容的相異處,先將新、舊壓縮檔解壓縮,找出不同之處并進(jìn)行修補之后,再重新壓縮。
有鑒于此一程序?qū)馁M裝置上更多的處理資源,因此需要較新的裝置,例如2015年以后出貨的行動裝置,重新壓縮1MB可能需要1秒,若在低階或舊機(jī)種上則會更久一些。
Google實際列出了某些程式采用File-by-File patching之后的更新檔案大小差異,例如Google Maps原始檔案為32.7MB,但透過File-by-File patching的尺寸則會縮小至9.6MB,Kindle原始檔案為52.4MB,利用File-by-File patching即變成8.4MB,而原本16.2MB的Netflix以File-by-File patching方式修補則只需下載1.2MB。
現(xiàn)階段此一修補技術(shù)只適用于啟用程式自動更新的Android裝置,通常會在手機(jī)插上電源且未使用時于背景進(jìn)行更新,以確保使用者不必等待更新。