孫廣東 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 端命令...