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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

初识IL2CPP

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

在Unity中進(jìn)行打包時(shí),有兩種打包方式選擇:MonoIL2CPP

Mono和IL2Cpp是Unity的腳本后處理方式,通過(guò)腳本后處理實(shí)現(xiàn)Unity的跨平臺(tái)


1.Mono


(1). Mono組成組件:

C#編輯器,CLI虛擬機(jī),以及核心類別程序庫(kù)

(2).跨平臺(tái)過(guò)程

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

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

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

程序運(yùn)行過(guò)程中將ILbyte code(字節(jié)碼)轉(zhuǎn)譯為目標(biāo)平臺(tái)的原生碼
即生成新的代碼又運(yùn)行新代碼,其實(shí)就是將對(duì)應(yīng)的機(jī)器碼映射到內(nèi)存空間中,此時(shí)就需要對(duì)內(nèi)存空間的讀寫權(quán)限

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

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

程序運(yùn)行前將.exe/.dll文件中的IL的byte code(字節(jié)碼)部分轉(zhuǎn)譯為目標(biāo)平臺(tái)的原生碼并且儲(chǔ)存起來(lái) 程序運(yùn)行過(guò)程中仍有一部分代碼通過(guò)JIT即時(shí)編譯

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

程序運(yùn)行前,將所有源碼編譯成目標(biāo)平臺(tái)的原生碼

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

圖解:

2.IL2Cpp

(1).IL2Cpp的組成部分:

AOT編譯器(il2cpp.exe),運(yùn)行時(shí)庫(kù)

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

(2).跨平臺(tái)過(guò)程:

IL2Cpp通過(guò)AOT編輯器,把IL語(yǔ)言轉(zhuǎn)換成c++語(yǔ)言,然后通過(guò)運(yùn)行機(jī)器平臺(tái)的編譯器 編譯成對(duì)應(yīng)平臺(tái)能執(zhí)行的原生匯編代碼,再使用IL2Cpp VM 運(yùn)行

圖解:

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

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

總結(jié)

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

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