Unity官方發布熱更新方案效能對照

2021-09-09 02:36:57 字數 3388 閱讀 8894

孫廣東  2016.3.11   

unity

應用的ios

熱更新unity technologieschina

agenda

•  什麼是熱更新

•  為何要熱更新

•  怎樣在ios

上對unity

應用進行熱更新

•  支援unity ios

熱更新的各種

lua

外掛程式的對照

什麼是熱更新

• 廣義定義

• 無需關閉server,不停機狀態下修復漏洞,更新資源等,重點是更新邏輯**。

• 狹義定義(

ios熱更新)

• 無需將**又一次打包提交至

,就可以更新client

而自己主動更新程式。

• 現狀 •

蘋果禁止了

c#的部分反射操作,禁止

jit(即時編譯。

程式執行時建立並執行新**),不同意邏輯熱更新,僅僅同意使用

assetbundle

進行資源熱更新。

為何要熱

更新 •

縮短使用者獲取新版應用的client的流程。改善使用者體驗。

• 詳細到ios

平台的應用上。有下面幾個原因

的審核週期難控制。

• 手機應用更新頻繁。

• 對於大型應用,更新成本太大。

• 終極狀態

• 怎樣在ios

上對unity

應用進行熱更新

• android

應用的熱更新

• 將執行**預編譯為

assemblydll

。 •

將**作為

textasset

打包進assetbundle

• 執行時。使用

reflection

機制實現**的功能。

• 更新對應的

assetbundle

就可以實現熱更新。

• android

與ios

熱更新的 異同

• 蘋果官方禁止

ios下的程式熱更新;

jit在

ios下無效。

• 熱更新方案:

unity+lua

外掛程式。

•  使用

lua

外掛程式進行

ios

熱更新的 原理

• unity

熱更新的注意點

• 須要更新的**、資源,都必須打包成

assetbundle

(建議使用未壓縮的格式打包)

• 熟悉unity

的幾個重要的路徑

• resources

(僅僅讀)

• streamingassets

(僅僅讀)

(僅僅讀)

(可讀寫)

•  重要路徑之

之resources

• resources

目錄下的資源不管使用與否都會被打包

• 資源會被壓縮,轉化成二進位制

• 打包後目錄下的資源僅僅讀

• 無法動態更改,無法做熱更新

• 使用resources.load

載入

• 重要路徑之

streamingassets

• 流資料的快取目錄

• 目錄下的資源不管使用與否都會被打包

• 資源不會被壓縮和加密

• 打包後目錄下的資源僅僅讀,主要存放二進位制檔案

• 無法做熱更新

• www

類載入(一般用

createfromfile

。若資源是

assetbundle

,根據其打包方式看是否是壓縮的來決定)

• 相對路徑。詳細路徑依賴於實際平台

•  重要路徑之

• 遊戲的資料目錄的路徑(比如在

editor

中的assets

) •

非常少用到

• 無法做熱更新

• ios

路徑

•  重要路徑之

• 持久化資料儲存目錄的路徑(

沙盒目錄。打包之前

不存在)

• 目錄下的資源不管使用與否都會被打包

• 執行時有效。可讀寫

• 無內容限制,從

streamingasset

中讀取二進位制檔案或

從assetbundle

讀取檔案來寫入

persistentdatapath

中 •

適合熱更新

• ios

路徑************/documents

•  使用

lua

外掛程式進行

ios

熱更新的整體流程

支援unity ios

熱更新的各種

lua

外掛程式的對照

• ulua(asset store)

• ulua

外掛程式原生版本號,開山鼻祖

• 不會產生靜態**

• 反射機制,效率低下,速度慢,

gcalloc

頻繁 •

已停止更新維護。不支援

unity5.x

,淡出主流

• ulua & cstolua

• 開發平台成熟穩定。

bug修復迅速

• 開發人員眾多,資源豐富

• 靜態方法,效能優

• 有成功商業產品案例(**三國、超神戰隊、酷魚吧捕魚、絕地戰警、這不是刀塔等)

魚、絕地戰警、這不是刀塔等)

• 都是基於原生版本號的改進。未來。兩者會合併成乙個外掛程式

• slua

• 靜態方法,效能優

• 核心**簡潔

• 資源較少,開發平台不夠成熟穩定

• 無無成功商業產品案例 成功商業產品案例

• 基於原生版本號的改進

支援unity ios

熱更新的各種

lua

外掛程式的對照

• c#light(l#)

• 淡出主流

• unilua

• c#

實現的lua

虛擬機器,非完整方案

• 淡出主流

支援unity ios

熱更新的各種

lua

外掛程式的對照

然後就是

ulua 

和slua

的測試**。

綜合來看

肯定是ulua

會更好一些。

測試結果就不弄了

iOS 熱更新方案

由於蘋果在2017年3月左右更新了開發者協議,禁止需要線上審核的應用進行熱更新,所以請大家慎用 企業版不需要提交審核當然是可以使用的 一 jspatch 熱更新時,從伺服器拉去js指令碼。理論上可以修改和新建所有的模組,但是不建議這樣做。建議 用來做緊急的小需求和 修復嚴重的線上bug。二 lua指...

蘋果熱更新方案簡介

可以做demo用,真實使用的時候會被蘋果禁止。從目前來看,ios仍然不允許程序間共享動態庫,即ios上的動態庫只能是私有的,因為我們仍然不能將動態庫檔案放置在除了自身沙盒以外的其它任何地方。比如 wax。熱更新時,從伺服器拉去lua指令碼。遊戲開發經常用到。跨平台,一套 ios android都可以...

微信熱更新方案實踐

簡單的講 增量更新 tinker imitator 位址 電腦 mac 編譯工具 as intellj gradle 版本 com.android.tools.build gradle 2.1.2 android 版本 6.0 mac 端命令 brew install bsdifflinux 端命令...