zoukankan      html  css  js  c++  java
  • Unity的JIT和AOT实现

    https://myhloli.com/about-il2cpp.html

    JIT方式:

    Unity的跨平台技术是通过一个Mono虚拟机实现的。而这个虚拟机更新太慢,不能很好地适应众多的平台。
    b54684b854d295f6a80aaa332ae17529[1]_看图王

    Android下会生成:

    assetsinDataManaged           Assembly-CSharp.dll    (游戏的控制逻辑,运行时调用)

    libarmeabi-v7a                           libmono.so, libmain.so, libunity.so    (libmono.so会完成mono VM的功能)

    AOT方式:

    unity公司就自行研发了IL2cpp,把本来应该再mono的虚拟机上跑的中间代码转换成cpp代码,这样再把生成的cpp代码,利用c++的跨平台特性,
    在各个平台上通过对各平台都有良好优化的native c++编译器编译,以获得更高的效率和更好的兼容性。
    75c24f0f60fcdaed42563e926e4ce7b8_看图王

    Android下会生成:

    assetsinDataManaged           Assembly-CSharp.dll    一般不打包进apk(游戏的控制逻辑,只作为中间文件存放,运行时不会调用)

    libarmeabi-v7a                           libil2cpp.so, libmain.so, libunity.so    (libil2cpp.so中包含了游戏控制的native code,和IL2CPP VM功能

    上图,对libil2cpp.so反编译可见,其中包含il2cpp::vm功能。图中为注册一个控制脚本中的方法。

    Managed下托管代码(比如UnityEngine.dll)也会被编译进libil2cpp.so中。

  • 相关阅读:
    Android设备管理器
    Android中读取手机联系人
    PopupWindow
    Activity之间数据的传递
    wpa_supplicant
    nandflash之基本特性
    NAND NOR Flash 和MTD
    mtd-util
    linux 常用命令
    minizip -基于zlib开源代码库
  • 原文地址:https://www.cnblogs.com/eniac1946/p/7417191.html
Copyright © 2011-2022 走看看