日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初识IL2CPP

發(fā)布時間:2024/3/26 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初识IL2CPP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Unity中進行打包時,有兩種打包方式選擇:MonoIL2CPP

Mono和IL2Cpp是Unity的腳本后處理方式,通過腳本后處理實現(xiàn)Unity的跨平臺


1.Mono


(1). Mono組成組件:

C#編輯器,CLI虛擬機,以及核心類別程序庫

(2).跨平臺過程

Mono通過C#編輯器把腳本打包成中間語言(IL)IL所在的文件就是.dll后綴的文件,
然后和其他dll文件一起在Mono虛擬機(MonoVM)中運行
在不同的平臺上MonoVM將IL翻譯成不同的平臺語言

(3).MonoVM運行IL的3中方式:

1.JIT(just in time): 即時編譯

程序運行過程中將ILbyte code(字節(jié)碼)轉(zhuǎn)譯為目標平臺的原生碼
即生成新的代碼又運行新代碼,其實就是將對應的機器碼映射到內(nèi)存空間中,此時就需要對內(nèi)存空間的讀寫權(quán)限。

而ios封了內(nèi)存的可執(zhí)行權(quán)限,所以ios不能使用JIT的方式

2.AOT(Ahead of time):提前編譯

程序運行前將.exe/.dll文件中的IL的byte code(字節(jié)碼)部分轉(zhuǎn)譯為目標平臺的原生碼并且儲存起來 程序運行過程中仍有一部分代碼通過JIT即時編譯

3.Full-AOT(Full ahead of time):完全靜態(tài)編譯

程序運行前,將所有源碼編譯成目標平臺的原生碼

其中:android 使用JIT的方式 IOS只支持Full-AOT的方式

圖解:

2.IL2Cpp

(1).IL2Cpp的組成部分:

AOT編譯器(il2cpp.exe),運行時庫

AOT編譯器:把IL轉(zhuǎn)換成CPP文件
運行時庫:GC等

(2).跨平臺過程:

IL2Cpp通過AOT編輯器,把IL語言轉(zhuǎn)換成c++語言,然后通過運行機器平臺的編譯器 編譯成對應平臺能執(zhí)行的原生匯編代碼,再使用IL2Cpp VM 運行

圖解:

?平臺支持:Android平臺支持Mono和IL2CPP的所有編譯方式,而IOS只支持Mono的Full AOT模式和IL2CPP 。

如果有不對的地方希望能指出來 感激不盡。
另外,不熟悉的代碼一定要寫一下加深記憶 只用看的記不了太久。

總結(jié)

以上是生活随笔為你收集整理的初识IL2CPP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。