你曾擔心Android程式更新讓傳輸流量破表嗎?Google在本月初發表了新型態的Android程式更新技術,採用了檔對檔修補(File-by-File patching)平均可減少65%的更新檔案大小,有些時候甚至可減少90%以上。
File-by-File patching源自於Archive-patcher開放源碼專案,它能夠逐個檢查壓縮檔案中的個別檔案以進行修補,因此極為節省空間,也支援各種有效的壓縮檔。
Google Play軟體工程師Andrew Hayden舉例,假設某本書的作者想要變更書中的一段話,只告訴編輯需要修改的部份比重新寄出整本新書要容易得多,換言之,只進行修補要比下載完整的APK更小也更快速。
Hayden說明,包括APK(Android程式副檔名)在內的許多壓縮檔都是利用Deflate技術進行壓縮,Deflate是個很好的資料壓縮技術但卻很難辨識原始內容的改變,原始內容的一丁點變更都會讓壓縮版本大為不同,要找出原始內容的不同之處相對容易,但要找出壓縮版本的不同之處卻很難,讓修補沒效率。
檔對檔的修補即是奠基在偵測原始內容的相異處,先將新、舊壓縮檔解壓縮,找出不同之處並進行修補之後,再重新壓縮。
有鑑於此一程序將會耗費裝置上更多的處理資源,因此需要較新的裝置,例如2015年以後出貨的行動裝置,重新壓縮1MB可能需要1秒,若在低階或舊機種上則會更久一些。
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。
現階段此一修補技術只適用於啟用程式自動更新的Android裝置,通常會在手機插上電源且未使用時於背景進行更新,以確保使用者不必等待更新。