• 为什么需要热更新?


    什么是热更

    所谓热更就是在不卸载原程序的情况下动态更新

    资源热更

    在unity中这个就是常说的AB包,现在新出AdreassAB可寻址AB包,是此类问题的解决方案

    代码热更

    代码的情况就稍显复杂了,还是拿unity来说,打包时将C#编译成IL代码,在程序启动时拿到本机的IL通过VM去解释执行,运行程序

    所以代码热更如果还是如资源热更一样加载新的C#文件,显然是不可行的,因为没有能编译C#的运行时环境

    这里说一下Lua,为什么它就能动态编译呢?首先lua是解释型语言,C#是编译型语言,再者lua有他自己的runtime compiler,可以直接解释运行

    而C#是需要先进行编译成中间语言IL而后才可以在VM中解释执行,当然如果C#也有他自己的runtime compiler,同样也可以直接解释运行

    那就是说如果C#也有他自己的runtime compiler,就会热更吗,非也,这就要提起C#的一个很重要的特性-反射,反射是可以获取一个未知的IL文件任何

    程序信息(类型,方法,参数等),所以这也是C#在一些热更方案中可行的基础(ILRuntime),同时也要有平台的支持,C#在安卓上可以实现热更新

    但在苹果上却不能,苹果对反射机制有限制,不能实现这样的热更。

  • 相关阅读:
    博客园cnblogs for win8 托管到GitHub开源
    html5 canvas 画图表
    回文数
    SpringBoot+logback实现按业务输出日志到不同的文件
    Class.forName() 与 ClassLoader.loadClass()的区别
    Easypoi实现单模板生成多页word文档
    普通Java项目中使用Sl4j+Log4j2打印日志
    SpringBoot集成JWT
    Java8_Lambda表达式
    SpringBoot自定义Condition注解
  • 原文地址:https://www.cnblogs.com/Jean90/p/16291646.html
Copyright © 2020-2023  润新知