quick-cocos2d-x基於源碼加密打包功能的更新策略(3)

前篇: 安全

quick-cocos2d-x基於源碼加密打包功能的更新策略(1) 服務器

quick-cocos2d-x基於源碼加密打包功能的更新策略(2) ui

3、更新流程說明及特性分析

A.更新流程

  1. 加載初始安裝包,載入舊資源列表
  2. 取最新資源列表文件,載入新資源列表
  3. 比較兩個資源列表版本,若是一致,跳到第8步;如下流程中若是有誤也跳到第8步
  4. 根據新資源列表檢查現有文件,逐一下載新增或者有變化的文件,並加.upd後綴保存
  5. 每一個下載的文件在保存後立刻進行一次校驗
  6. 全部文件下載完成,更新本地資源列表文件,用新列表替換舊列表
  7. 將下載的文件去掉.upd後綴,覆蓋舊的文件
  8. 根據資源列表再校驗一遍資源文件
  9. 第8步正確,則按資源列表的指示載入相關資源,啓動程序(新版本)
  10. 第8步有錯,說明資源列表與資源文件不匹配,刪除本地資源列表文件(保證下次啓動時從新更新資源),啓動程序(原始安裝版本)

B.安全性

能夠看出在第6步以前,即便出錯,也不會破壞原來的文件。跳到第8步後,通常可以以上一個更新成功的版本啓動,除非上一個版本被用戶破壞。 加密

第6步和第7步出錯,會形成資源列表與資源文件不匹配,跳到第8步後,確定只有從原始版本啓動了。 spa

第8步錯誤,有多是由於前面出錯,也有多是用戶本身破壞了本地文件。不管如何,仍是能從原始版本啓動,並保證下次進入能再次更新。 .net

第8步正確,並不必定說明此次更新是成功的,但啓動起來的必定是最後一次更新成功的版本。 blog

所以咱們能夠確認,只要update模塊自己流程沒有問題,此更新方案是安全的。 資源

C.其餘特性

  1. 對於肯定的終端,服務器端只須要維護一個最新版本的文件列表。無論客戶端是什麼版本,都能直接升級到新版本
  2. 本地已經下載過的文件不會再次下載,只作增量更新
  3. 本次更新下載了部分文件但未完成最後更新,下次更新,已經下載成功的文件不會再重複下載
  4. 代碼通過壓縮,減小下載量
  5. 根據客戶端請求時的參數可以作到版本分發

後記

對於方案的介紹到這裏就告一段落了。後面這部分原本還想展開一下的,但後來以爲必要性沒這麼大,畢竟和你們分享的主要是解決方案而不是細節。 get

但願個人分享對你們能有所幫助,也請你們對方案的不足之類多提意見! 源碼

相關文章
相關標籤/搜索