1. 程式人生 > >熱更新-----為何使用lua進行熱更

熱更新-----為何使用lua進行熱更

  事實上我們在安卓端是可以使用c#jit的,但是我們在ios上的程式碼是AOT(預先編譯,靜態編譯)的,不能用c# jit(實時編譯,即時編譯)。

  ios不能用c#熱更是因為啟動了CPU的No eXecute bit,簡單說就是ios不允許更改程式碼,更新程式碼必須重新提安裝包進行稽核,AppStore稽核過的程式碼才能執行。而lua直譯器(通常來說就是lua.c中的程式碼)是稽核過的,這才是為何lua可以執行在ios上的根本原因。lua在unity中作為一個文字資源來使用,當我們通過tolua或者xlua呼叫lua程式碼中某個函式時,直譯器會去對lua進行解釋,因為lua直譯器程式碼允許執行,因此它會執行lua解釋後的程式碼。